From 7daa6ef553f402a1c3ef0709bba7da7bac702978 Mon Sep 17 00:00:00 2001 From: Aaron Weisberg Date: Sat, 20 Dec 2025 21:34:21 -0800 Subject: [PATCH 01/21] feat: adds code reference picker to navigate file:line references in LLM responses --- lua/opencode/api.lua | 9 + lua/opencode/config.lua | 1 + lua/opencode/types.lua | 9 + lua/opencode/ui/base_picker.lua | 22 +- lua/opencode/ui/formatter.lua | 59 ++++- lua/opencode/ui/highlight.lua | 2 + lua/opencode/ui/icons.lua | 2 + lua/opencode/ui/reference_picker.lua | 342 +++++++++++++++++++++++++++ 8 files changed, 440 insertions(+), 6 deletions(-) create mode 100644 lua/opencode/ui/reference_picker.lua diff --git a/lua/opencode/api.lua b/lua/opencode/api.lua index 4e03ea09..9541ef26 100644 --- a/lua/opencode/api.lua +++ b/lua/opencode/api.lua @@ -307,6 +307,10 @@ function M.focus_input() ui.focus_input({ restore_position = true, start_insert = true }) end +function M.references() + require('opencode.ui.reference_picker').pick() +end + function M.debug_output() if not config.debug.enabled then vim.notify('Debugging is not enabled in the config', vim.log.levels.WARN) @@ -1214,6 +1218,10 @@ M.commands = { desc = 'Paste image from clipboard and add to context', fn = M.paste_image, }, + references = { + desc = 'Browse code references from conversation', + fn = M.references, + }, } M.slash_commands_map = { @@ -1231,6 +1239,7 @@ M.slash_commands_map = { ['/sessions'] = { fn = M.select_session, desc = 'Select session' }, ['/share'] = { fn = M.share, desc = 'Share current session' }, ['/timeline'] = { fn = M.timeline, desc = 'Open timeline picker' }, + ['/references'] = { fn = M.references, desc = 'Browse code references from conversation' }, ['/undo'] = { fn = M.undo, desc = 'Undo last action' }, ['/unshare'] = { fn = M.unshare, desc = 'Unshare current session' }, ['/rename'] = { fn = M.rename_session, desc = 'Rename current session' }, diff --git a/lua/opencode/config.lua b/lua/opencode/config.lua index 2981f268..1215de30 100644 --- a/lua/opencode/config.lua +++ b/lua/opencode/config.lua @@ -49,6 +49,7 @@ M.defaults = { ['[['] = { 'prev_message' }, [''] = { 'toggle_pane', mode = { 'n', 'i' } }, ['i'] = { 'focus_input' }, + ['gr'] = { 'references', desc = 'Browse code references' }, ['oS'] = { 'select_child_session' }, ['oD'] = { 'debug_message' }, ['oO'] = { 'debug_output' }, diff --git a/lua/opencode/types.lua b/lua/opencode/types.lua index 0df3e3f7..2f1f2e0d 100644 --- a/lua/opencode/types.lua +++ b/lua/opencode/types.lua @@ -483,3 +483,12 @@ ---@field messages number Number of messages reverted ---@field tool_calls number Number of tool calls reverted ---@field files table Summary of file changes reverted + +---@class CodeReference +---@field file_path string Relative or absolute file path +---@field line number|nil Line number (1-indexed) +---@field column number|nil Column number (optional) +---@field context string Surrounding text for display in picker +---@field message_id string ID of the message containing this reference +---@field match_start number Start position of match in original text +---@field match_end number End position of match in original text diff --git a/lua/opencode/ui/base_picker.lua b/lua/opencode/ui/base_picker.lua index 788c3703..289a4633 100644 --- a/lua/opencode/ui/base_picker.lua +++ b/lua/opencode/ui/base_picker.lua @@ -17,6 +17,7 @@ local Promise = require('opencode.promise') ---@field title string|fun(): string The picker title ---@field width? number Optional width for the picker (defaults to config or current window width) ---@field multi_selection? table Actions that support multi-selection +---@field preview? "file"|"none"|false Preview mode: "file" for file preview, "none" or false to disable ---@class TelescopeEntry ---@field value any @@ -341,15 +342,23 @@ end local function snacks_picker_ui(opts) local Snacks = require('snacks') + -- Determine if preview is enabled + local has_preview = opts.preview == 'file' + + -- Choose layout preset based on preview + local layout_preset = has_preview and 'default' or 'select' + local snack_opts = { title = opts.title, layout = { - preset = 'select', + preset = layout_preset, config = function(layout) local width = opts.width and (opts.width + 3) or nil -- extra space for snacks UI - layout.layout.width = width - layout.layout.max_width = width - layout.layout.min_width = width + if not has_preview then + layout.layout.width = width + layout.layout.max_width = width + layout.layout.min_width = width + end return layout end, }, @@ -378,6 +387,11 @@ local function snacks_picker_ui(opts) }, } + -- Add file preview if enabled + if has_preview then + snack_opts.preview = 'file' + end + snack_opts.win = snack_opts.win or {} snack_opts.win.input = snack_opts.win.input or { keys = {} } diff --git a/lua/opencode/ui/formatter.lua b/lua/opencode/ui/formatter.lua index 8ed8c056..74e5f12d 100644 --- a/lua/opencode/ui/formatter.lua +++ b/lua/opencode/ui/formatter.lua @@ -426,8 +426,63 @@ end ---@param output Output Output object to write to ---@param text string function M._format_assistant_message(output, text) - -- output:add_empty_line() - output:add_lines(vim.split(text, '\n')) + local reference_picker = require('opencode.ui.reference_picker') + local references = reference_picker.get_references_for_text(text) + + -- If no references, just add the text as-is + if #references == 0 then + output:add_lines(vim.split(text, '\n')) + return + end + + -- Sort references by match_start position (ascending) + table.sort(references, function(a, b) + return a.match_start < b.match_start + end) + + -- Build a new text with icons inserted before each reference + local result = '' + local last_pos = 1 + local ref_icon = icons.get('reference') + + for _, ref in ipairs(references) do + -- Add text before this reference + result = result .. text:sub(last_pos, ref.match_start - 1) + -- Add the icon and the reference + result = result .. ref_icon .. text:sub(ref.match_start, ref.match_end) + last_pos = ref.match_end + 1 + end + + -- Add any remaining text after the last reference + if last_pos <= #text then + result = result .. text:sub(last_pos) + end + + local lines = vim.split(result, '\n') + local start_line = output:get_line_count() + output:add_lines(lines) + + -- Add highlighting for reference icons + -- We need to find the icon positions in the rendered lines and add extmarks + for i, line in ipairs(lines) do + local line_num = start_line + i - 1 + local search_start = 1 + while true do + local icon_start, icon_end = line:find(ref_icon, search_start, true) + if not icon_start then + break + end + -- Add extmark for the reference icon + output:add_extmark(line_num, { + virt_text = { { ref_icon, 'OpencodeReference' } }, + virt_text_pos = 'overlay', + end_col = icon_end, + hl_group = 'OpencodeReference', + priority = 100, + } --[[@as OutputExtmark]]) + search_start = icon_end + 1 + end + end end ---@param output Output Output object to write to diff --git a/lua/opencode/ui/highlight.lua b/lua/opencode/ui/highlight.lua index bc788cfe..2667f493 100644 --- a/lua/opencode/ui/highlight.lua +++ b/lua/opencode/ui/highlight.lua @@ -34,6 +34,7 @@ function M.setup() vim.api.nvim_set_hl(0, 'OpencodeContextSwitchOn', { link = '@label', default = true }) vim.api.nvim_set_hl(0, 'OpencodePickerTime', { link = 'Comment', default = true }) vim.api.nvim_set_hl(0, 'OpencodeDebugText', { link = 'Comment', default = true }) + vim.api.nvim_set_hl(0, 'OpencodeReference', { fg = '#1976D2', default = true }) else vim.api.nvim_set_hl(0, 'OpencodeBorder', { fg = '#616161', default = true }) vim.api.nvim_set_hl(0, 'OpencodeBackground', { link = 'Normal', default = true }) @@ -64,6 +65,7 @@ function M.setup() vim.api.nvim_set_hl(0, 'OpencodeContextSwitchOn', { link = '@label', default = true }) vim.api.nvim_set_hl(0, 'OpencodePickerTime', { link = 'Comment', default = true }) vim.api.nvim_set_hl(0, 'OpencodeDebugText', { link = 'Comment', default = true }) + vim.api.nvim_set_hl(0, 'OpencodeReference', { fg = '#7AA2F7', default = true }) end end diff --git a/lua/opencode/ui/icons.lua b/lua/opencode/ui/icons.lua index b8db41ce..28f7e9db 100644 --- a/lua/opencode/ui/icons.lua +++ b/lua/opencode/ui/icons.lua @@ -25,6 +25,7 @@ local presets = { folder = ' ', attached_file = '󰌷 ', agent = '󰚩 ', + reference = ' ', -- statuses status_on = ' ', status_off = ' ', @@ -60,6 +61,7 @@ local presets = { folder = '[@]', attached_file = '@', agent = '@', + reference = '@', -- statuses status_on = 'ON', status_off = 'OFF', diff --git a/lua/opencode/ui/reference_picker.lua b/lua/opencode/ui/reference_picker.lua new file mode 100644 index 00000000..71314e10 --- /dev/null +++ b/lua/opencode/ui/reference_picker.lua @@ -0,0 +1,342 @@ +-- Code reference picker for navigating to file:line references in LLM responses +local state = require('opencode.state') +local config = require('opencode.config') +local base_picker = require('opencode.ui.base_picker') +local icons = require('opencode.ui.icons') + +local M = {} + +-- File extensions to recognize as valid code files +local VALID_EXTENSIONS = { + 'lua', + 'py', + 'js', + 'ts', + 'tsx', + 'jsx', + 'go', + 'rs', + 'c', + 'cpp', + 'h', + 'hpp', + 'java', + 'rb', + 'php', + 'swift', + 'kt', + 'scala', + 'sh', + 'bash', + 'zsh', + 'json', + 'yaml', + 'yml', + 'toml', + 'xml', + 'html', + 'css', + 'scss', + 'md', + 'txt', + 'vim', + 'el', + 'ex', + 'exs', + 'erl', + 'hs', + 'ml', + 'fs', + 'clj', + 'r', + 'sql', + 'graphql', + 'proto', + 'tf', + 'nix', + 'zig', + 'v', + 'svelte', + 'vue', +} + +-- Build a lookup set for faster extension checking +local EXTENSION_SET = {} +for _, ext in ipairs(VALID_EXTENSIONS) do + EXTENSION_SET[ext] = true +end + +---Check if a file extension is valid +---@param ext string +---@return boolean +local function is_valid_extension(ext) + return EXTENSION_SET[ext:lower()] == true +end + +---Check if the path looks like a URL (to avoid false positives) +---@param text string +---@param match_start number +---@return boolean +local function is_url_context(text, match_start) + -- Check if preceded by :// (like http://, file://, etc.) + if match_start > 3 then + local prefix = text:sub(match_start - 3, match_start - 1) + if prefix:match('://$') then + return true + end + end + return false +end + +---Check if a file exists +---@param file_path string +---@return boolean +local function file_exists(file_path) + local path = file_path + -- Make absolute if relative + if not vim.startswith(path, '/') then + path = vim.fn.getcwd() .. '/' .. path + end + return vim.fn.filereadable(path) == 1 +end + +---Extract surrounding context for display +---@param text string Full text +---@param match_start number Start position of match +---@param match_end number End position of match +---@param max_len number Maximum context length +---@return string +local function extract_context(text, match_start, match_end, max_len) + max_len = max_len or 60 + local half = math.floor(max_len / 2) + + -- Find line boundaries for better context + local line_start = match_start + local line_end = match_end + + -- Go back to find start of line or limit + while line_start > 1 and text:sub(line_start - 1, line_start - 1) ~= '\n' and (match_start - line_start) < half do + line_start = line_start - 1 + end + + -- Go forward to find end of line or limit + while line_end < #text and text:sub(line_end + 1, line_end + 1) ~= '\n' and (line_end - match_end) < half do + line_end = line_end + 1 + end + + local context = text:sub(line_start, line_end) + + -- Clean up: remove extra whitespace + context = context:gsub('%s+', ' ') + context = vim.trim(context) + + -- Truncate if still too long + if #context > max_len then + -- Try to center around the match + local match_in_context = match_start - line_start + 1 + local ctx_start = math.max(1, match_in_context - half) + local ctx_end = math.min(#context, match_in_context + half) + context = context:sub(ctx_start, ctx_end) + + if ctx_start > 1 then + context = '...' .. context + end + if ctx_end < #context then + context = context .. '...' + end + end + + return context +end + +---@class CodeReference +---@field file_path string Relative or absolute file path +---@field line number|nil Line number (1-indexed) +---@field column number|nil Column number (optional) +---@field context string Surrounding text for display +---@field message_id string ID of the message containing this reference +---@field match_start number Start position in original text +---@field match_end number End position in original text +---@field file string Absolute file path (for Snacks picker preview) +---@field pos number[]|nil Position as {line, col} for Snacks picker preview + +---Parse references from text +---@param text string The text to parse +---@param message_id string The message ID for tracking +---@return CodeReference[] +function M.parse_references(text, message_id) + local references = {} + local seen = {} -- For deduplication: file_path:line + + -- Pattern: path/to/file.ext:line or path/to/file.ext:line:column + -- Must have a valid file extension before the colon + -- The path can contain: alphanumeric, underscore, dot, slash, hyphen + local pattern = '([%w_./%-]+%.([%w]+)):(%d+):?(%d*)' + + local search_start = 1 + while search_start <= #text do + local match_start, match_end, path, ext, line_str, col_str = text:find(pattern, search_start) + + if not match_start then + break + end + + -- Validate extension + if is_valid_extension(ext) and not is_url_context(text, match_start) then + -- Check if file exists + if file_exists(path) then + local line = tonumber(line_str) + local column = col_str ~= '' and tonumber(col_str) or nil + + -- Deduplication key + local dedup_key = path .. ':' .. (line or 0) + if not seen[dedup_key] then + seen[dedup_key] = true + + local context = extract_context(text, match_start, match_end --[[@as number]], 60) + + -- Create absolute path for Snacks preview + local abs_path = path + if not vim.startswith(path, '/') then + abs_path = vim.fn.getcwd() .. '/' .. path + end + + table.insert(references, { + file_path = path, + line = line, + column = column, + context = context, + message_id = message_id, + match_start = match_start, + match_end = match_end, + -- Fields for Snacks picker file preview + file = abs_path, + pos = line and { line, (column or 1) - 1 } or nil, + }) + end + end + end + + search_start = match_end + 1 + end + + return references +end + +---Collect all references from assistant messages in the current session +---Returns references in reverse order (most recent first) +---@return CodeReference[] +function M.collect_references() + local all_references = {} + + if not state.messages then + return all_references + end + + -- Process messages in reverse order (most recent first) + for i = #state.messages, 1, -1 do + local msg = state.messages[i] + + -- Only process assistant messages + if msg.info and msg.info.role == 'assistant' and msg.parts then + for _, part in ipairs(msg.parts) do + -- Only process text parts (not tool calls) + if part.type == 'text' and part.text then + local refs = M.parse_references(part.text, msg.info.id) + for _, ref in ipairs(refs) do + table.insert(all_references, ref) + end + end + end + end + end + + -- Deduplicate across all messages (keep first occurrence which is most recent) + local seen = {} + local deduplicated = {} + for _, ref in ipairs(all_references) do + local dedup_key = ref.file_path .. ':' .. (ref.line or 0) + if not seen[dedup_key] then + seen[dedup_key] = true + table.insert(deduplicated, ref) + end + end + + return deduplicated +end + +---Get references for a specific text (used by formatter for visual indicators) +---@param text string +---@return CodeReference[] +function M.get_references_for_text(text) + return M.parse_references(text, '') +end + +---Format a reference for display in the picker +---@param ref CodeReference +---@param width number|nil +---@return PickerItem +local function format_reference_item(ref, width) + local icon = icons.get('file') + local location = ref.file_path .. ':' .. (ref.line or '?') + local display_text = icon .. ' ' .. location + + -- Create picker item with context as secondary info + -- We'll use the debug_text field to show the context + return base_picker.create_picker_item(display_text, nil, ref.context, width) +end + +---Open the reference picker +function M.pick() + local references = M.collect_references() + + if #references == 0 then + vim.notify('No code references found in the conversation', vim.log.levels.INFO) + return + end + + local callback = function(selected) + if selected then + M.navigate_to(selected) + end + end + + return base_picker.pick({ + items = references, + format_fn = format_reference_item, + actions = {}, + callback = callback, + title = 'Code References (' .. #references .. ')', + width = config.ui.picker_width or 100, + preview = 'file', + }) +end + +---Navigate to a code reference +---@param ref CodeReference +function M.navigate_to(ref) + local file_path = ref.file_path + + -- Make absolute if relative + if not vim.startswith(file_path, '/') then + file_path = vim.fn.getcwd() .. '/' .. file_path + end + + -- Open the file in a new tab + vim.cmd('tabedit ' .. vim.fn.fnameescape(file_path)) + + -- Jump to line if specified + if ref.line then + local line = math.max(1, ref.line) + local col = ref.column and math.max(0, ref.column - 1) or 0 + + -- Make sure we don't exceed buffer line count + local line_count = vim.api.nvim_buf_line_count(0) + line = math.min(line, line_count) + + vim.api.nvim_win_set_cursor(0, { line, col }) + vim.cmd('normal! zz') -- Center the view + end +end + +return M From ee47b2b0639572e92b6ab3a0e50ca13d4bf3c3ca Mon Sep 17 00:00:00 2001 From: Aaron Weisberg Date: Sat, 20 Dec 2025 22:23:22 -0800 Subject: [PATCH 02/21] feat(config): add system prompt for file URI navigation - introduce a new configurable system prompt to customize assistant behavior - include guidance for file referencing to assist users with integration - modifies message sending logic to incorporate the system prompt if set - changes to reference detection streamline navigation for file-related responses --- lua/opencode/config.lua | 3 + lua/opencode/core.lua | 5 + lua/opencode/ui/formatter.lua | 60 +-------- lua/opencode/ui/reference_picker.lua | 183 ++++++++++++++------------- 4 files changed, 105 insertions(+), 146 deletions(-) diff --git a/lua/opencode/config.lua b/lua/opencode/config.lua index 1215de30..2bce6ef9 100644 --- a/lua/opencode/config.lua +++ b/lua/opencode/config.lua @@ -200,6 +200,9 @@ M.defaults = { on_done_thinking = nil, on_permission_requested = nil, }, + -- Additional system prompt appended to every message + -- Used to customize assistant behavior (e.g., file reference formatting) + system_prompt = 'When referencing files in your responses, always use the file:// URI scheme (e.g., file://path/to/file.lua or file://path/to/file.lua:42 for a specific line). This helps with navigation and tooling integration.', } M.values = vim.deepcopy(M.defaults) diff --git a/lua/opencode/core.lua b/lua/opencode/core.lua index 76783859..8360241d 100644 --- a/lua/opencode/core.lua +++ b/lua/opencode/core.lua @@ -167,6 +167,11 @@ M.send_message = Promise.async(function(prompt, opts) state.current_mode = opts.agent end + -- Add system prompt if configured + if config.system_prompt and config.system_prompt ~= '' then + params.system = config.system_prompt + end + params.parts = context.format_message(prompt, opts.context) M.before_run(opts) diff --git a/lua/opencode/ui/formatter.lua b/lua/opencode/ui/formatter.lua index 74e5f12d..2bb30c35 100644 --- a/lua/opencode/ui/formatter.lua +++ b/lua/opencode/ui/formatter.lua @@ -426,63 +426,9 @@ end ---@param output Output Output object to write to ---@param text string function M._format_assistant_message(output, text) - local reference_picker = require('opencode.ui.reference_picker') - local references = reference_picker.get_references_for_text(text) - - -- If no references, just add the text as-is - if #references == 0 then - output:add_lines(vim.split(text, '\n')) - return - end - - -- Sort references by match_start position (ascending) - table.sort(references, function(a, b) - return a.match_start < b.match_start - end) - - -- Build a new text with icons inserted before each reference - local result = '' - local last_pos = 1 - local ref_icon = icons.get('reference') - - for _, ref in ipairs(references) do - -- Add text before this reference - result = result .. text:sub(last_pos, ref.match_start - 1) - -- Add the icon and the reference - result = result .. ref_icon .. text:sub(ref.match_start, ref.match_end) - last_pos = ref.match_end + 1 - end - - -- Add any remaining text after the last reference - if last_pos <= #text then - result = result .. text:sub(last_pos) - end - - local lines = vim.split(result, '\n') - local start_line = output:get_line_count() - output:add_lines(lines) - - -- Add highlighting for reference icons - -- We need to find the icon positions in the rendered lines and add extmarks - for i, line in ipairs(lines) do - local line_num = start_line + i - 1 - local search_start = 1 - while true do - local icon_start, icon_end = line:find(ref_icon, search_start, true) - if not icon_start then - break - end - -- Add extmark for the reference icon - output:add_extmark(line_num, { - virt_text = { { ref_icon, 'OpencodeReference' } }, - virt_text_pos = 'overlay', - end_col = icon_end, - hl_group = 'OpencodeReference', - priority = 100, - } --[[@as OutputExtmark]]) - search_start = icon_end + 1 - end - end + -- Simply add the text as-is + -- Reference detection is handled by the reference_picker module for navigation + output:add_lines(vim.split(text, '\n')) end ---@param output Output Output object to write to diff --git a/lua/opencode/ui/reference_picker.lua b/lua/opencode/ui/reference_picker.lua index 71314e10..54643921 100644 --- a/lua/opencode/ui/reference_picker.lua +++ b/lua/opencode/ui/reference_picker.lua @@ -100,60 +100,10 @@ local function file_exists(file_path) return vim.fn.filereadable(path) == 1 end ----Extract surrounding context for display ----@param text string Full text ----@param match_start number Start position of match ----@param match_end number End position of match ----@param max_len number Maximum context length ----@return string -local function extract_context(text, match_start, match_end, max_len) - max_len = max_len or 60 - local half = math.floor(max_len / 2) - - -- Find line boundaries for better context - local line_start = match_start - local line_end = match_end - - -- Go back to find start of line or limit - while line_start > 1 and text:sub(line_start - 1, line_start - 1) ~= '\n' and (match_start - line_start) < half do - line_start = line_start - 1 - end - - -- Go forward to find end of line or limit - while line_end < #text and text:sub(line_end + 1, line_end + 1) ~= '\n' and (line_end - match_end) < half do - line_end = line_end + 1 - end - - local context = text:sub(line_start, line_end) - - -- Clean up: remove extra whitespace - context = context:gsub('%s+', ' ') - context = vim.trim(context) - - -- Truncate if still too long - if #context > max_len then - -- Try to center around the match - local match_in_context = match_start - line_start + 1 - local ctx_start = math.max(1, match_in_context - half) - local ctx_end = math.min(#context, match_in_context + half) - context = context:sub(ctx_start, ctx_end) - - if ctx_start > 1 then - context = '...' .. context - end - if ctx_end < #context then - context = context .. '...' - end - end - - return context -end - ---@class CodeReference ---@field file_path string Relative or absolute file path ---@field line number|nil Line number (1-indexed) ---@field column number|nil Column number (optional) ----@field context string Surrounding text for display ---@field message_id string ID of the message containing this reference ---@field match_start number Start position in original text ---@field match_end number End position in original text @@ -166,60 +116,115 @@ end ---@return CodeReference[] function M.parse_references(text, message_id) local references = {} - local seen = {} -- For deduplication: file_path:line + local covered_ranges = {} -- Track which character ranges we've already matched + + -- Helper to check if a range overlaps with any covered range + local function is_covered(start_pos, end_pos) + for _, range in ipairs(covered_ranges) do + -- Check if ranges overlap + if not (end_pos < range[1] or start_pos > range[2]) then + return true + end + end + return false + end - -- Pattern: path/to/file.ext:line or path/to/file.ext:line:column - -- Must have a valid file extension before the colon - -- The path can contain: alphanumeric, underscore, dot, slash, hyphen - local pattern = '([%w_./%-]+%.([%w]+)):(%d+):?(%d*)' + -- Helper to add a reference + local function add_reference(path, ext, match_start, match_end, line, column) + if not is_valid_extension(ext) then + return false + end + if not file_exists(path) then + return false + end + if is_covered(match_start, match_end) then + return false + end + + -- Mark this range as covered + table.insert(covered_ranges, { match_start, match_end }) + + -- Create absolute path for Snacks preview + local abs_path = path + if not vim.startswith(path, '/') then + abs_path = vim.fn.getcwd() .. '/' .. path + end + table.insert(references, { + file_path = path, + line = line, + column = column, + message_id = message_id, + match_start = match_start, + match_end = match_end, + file = abs_path, + pos = line and { line, (column or 1) - 1 } or nil, + }) + return true + end + + -- First pass: find file:// URI references (preferred format) + -- Matches: file://path/to/file.ext or file://path/to/file.ext:line or file://path/to/file.ext:line:column + local pattern_file_uri = 'file://([%w_./%-]+%.([%w]+)):?(%d*):?(%d*)' local search_start = 1 while search_start <= #text do - local match_start, match_end, path, ext, line_str, col_str = text:find(pattern, search_start) - + local match_start, match_end, path, ext, line_str, col_str = text:find(pattern_file_uri, search_start) if not match_start then break end - -- Validate extension - if is_valid_extension(ext) and not is_url_context(text, match_start) then - -- Check if file exists - if file_exists(path) then - local line = tonumber(line_str) - local column = col_str ~= '' and tonumber(col_str) or nil - - -- Deduplication key - local dedup_key = path .. ':' .. (line or 0) - if not seen[dedup_key] then - seen[dedup_key] = true + local line = line_str ~= '' and tonumber(line_str) or nil + local column = col_str ~= '' and tonumber(col_str) or nil + add_reference(path, ext, match_start, match_end, line, column) + search_start = match_end + 1 + end - local context = extract_context(text, match_start, match_end --[[@as number]], 60) + -- Second pass: find path:line[:column] references (legacy format, more specific) + local pattern_with_line = '([%w_./%-]+%.([%w]+)):(%d+):?(%d*)' + search_start = 1 + while search_start <= #text do + local match_start, match_end, path, ext, line_str, col_str = text:find(pattern_with_line, search_start) + if not match_start then + break + end - -- Create absolute path for Snacks preview - local abs_path = path - if not vim.startswith(path, '/') then - abs_path = vim.fn.getcwd() .. '/' .. path - end + -- Skip if this looks like a URL (http://, https://, file://, etc.) + if is_url_context(text, match_start) then + search_start = match_end + 1 + else + local line = tonumber(line_str) + local column = col_str ~= '' and tonumber(col_str) or nil + add_reference(path, ext, match_start, match_end, line, column) + search_start = match_end + 1 + end + end - table.insert(references, { - file_path = path, - line = line, - column = column, - context = context, - message_id = message_id, - match_start = match_start, - match_end = match_end, - -- Fields for Snacks picker file preview - file = abs_path, - pos = line and { line, (column or 1) - 1 } or nil, - }) - end - end + -- Third pass: find path-only references (must contain a slash to be a path) + local pattern_no_line = '([%w_%-]+/[%w_./%-]+%.([%w]+))' + search_start = 1 + while search_start <= #text do + local match_start, match_end, path, ext = text:find(pattern_no_line, search_start) + if not match_start then + break end - search_start = match_end + 1 + -- Skip if preceded by file:// or other URL scheme + if is_url_context(text, match_start) then + search_start = match_end + 1 + -- Only add if not followed by a colon and digit (which would be caught by second pattern) + elseif text:sub(match_end + 1, match_end + 1) ~= ':' then + add_reference(path, ext, match_start, match_end, nil, nil) + search_start = match_end + 1 + else + search_start = match_end + 1 + end end + -- Sort by match position for consistent ordering + table.sort(references, function(a, b) + return a.match_start < b.match_start + end) + return references end From be8380552dd3f68e09c78f6dfa285c3319b06978 Mon Sep 17 00:00:00 2001 From: Aaron Weisberg Date: Sun, 21 Dec 2025 17:56:20 -0800 Subject: [PATCH 03/21] fix(reference_picker): clean up display formatting - Remove dead code referencing non-existent ref.context field - Only show line number in display when present (avoid 'path:?') --- lua/opencode/ui/reference_picker.lua | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/lua/opencode/ui/reference_picker.lua b/lua/opencode/ui/reference_picker.lua index 54643921..06a86271 100644 --- a/lua/opencode/ui/reference_picker.lua +++ b/lua/opencode/ui/reference_picker.lua @@ -283,12 +283,10 @@ end ---@return PickerItem local function format_reference_item(ref, width) local icon = icons.get('file') - local location = ref.file_path .. ':' .. (ref.line or '?') + local location = ref.line and (ref.file_path .. ':' .. ref.line) or ref.file_path local display_text = icon .. ' ' .. location - -- Create picker item with context as secondary info - -- We'll use the debug_text field to show the context - return base_picker.create_picker_item(display_text, nil, ref.context, width) + return base_picker.create_picker_item(display_text, nil, nil, width) end ---Open the reference picker From 4fee5699dd29c45b2b536a7d170e431228e44c2a Mon Sep 17 00:00:00 2001 From: Aaron Weisberg Date: Sun, 21 Dec 2025 18:17:20 -0800 Subject: [PATCH 04/21] feat(references): parse references on message completion and display icons - Parse file references when session becomes idle (AI done responding) - Cache parsed references per-message for faster picker opening - Handle session load from previous sessions - Display reference icon before recognized file paths in output - Subscribe to 'messages' state changes to parse loaded sessions - Update test expected data files with new icon rendering --- lua/opencode/init.lua | 1 + lua/opencode/types.lua | 4 +- lua/opencode/ui/formatter.lua | 36 ++++++++++- lua/opencode/ui/reference_picker.lua | 68 +++++++++++++++++---- tests/data/cursor_data.expected.json | 2 +- tests/data/diagnostics.expected.json | 2 +- tests/data/markdown-codefence.expected.json | 2 +- tests/data/perf.expected.json | 2 +- 8 files changed, 96 insertions(+), 21 deletions(-) diff --git a/lua/opencode/init.lua b/lua/opencode/init.lua index f8061334..8a8a2f2c 100644 --- a/lua/opencode/init.lua +++ b/lua/opencode/init.lua @@ -16,6 +16,7 @@ function M.setup(opts) require('opencode.event_manager').setup() require('opencode.context').setup() require('opencode.ui.context_bar').setup() + require('opencode.ui.reference_picker').setup() end return M diff --git a/lua/opencode/types.lua b/lua/opencode/types.lua index 2f1f2e0d..0489c3e7 100644 --- a/lua/opencode/types.lua +++ b/lua/opencode/types.lua @@ -285,6 +285,7 @@ ---@class OpencodeMessage ---@field info MessageInfo Metadata about the message ---@field parts OpencodeMessagePart[] Parts that make up the message +---@field references CodeReference[]|nil Parsed file references from text parts (cached) ---@class MessageInfo ---@field id string Unique message identifier @@ -488,7 +489,8 @@ ---@field file_path string Relative or absolute file path ---@field line number|nil Line number (1-indexed) ---@field column number|nil Column number (optional) ----@field context string Surrounding text for display in picker ---@field message_id string ID of the message containing this reference ---@field match_start number Start position of match in original text ---@field match_end number End position of match in original text +---@field file string Absolute file path (for Snacks picker preview) +---@field pos number[]|nil Position as {line, col} for Snacks picker preview diff --git a/lua/opencode/ui/formatter.lua b/lua/opencode/ui/formatter.lua index 2bb30c35..b241ebc4 100644 --- a/lua/opencode/ui/formatter.lua +++ b/lua/opencode/ui/formatter.lua @@ -426,9 +426,39 @@ end ---@param output Output Output object to write to ---@param text string function M._format_assistant_message(output, text) - -- Simply add the text as-is - -- Reference detection is handled by the reference_picker module for navigation - output:add_lines(vim.split(text, '\n')) + local reference_picker = require('opencode.ui.reference_picker') + local references = reference_picker.parse_references(text, '') + + -- If no references, just add the text as-is + if #references == 0 then + output:add_lines(vim.split(text, '\n')) + return + end + + -- Sort references by match_start position (ascending) + table.sort(references, function(a, b) + return a.match_start < b.match_start + end) + + -- Build a new text with icons inserted before each reference + local result = '' + local last_pos = 1 + local ref_icon = icons.get('reference') + + for _, ref in ipairs(references) do + -- Add text before this reference + result = result .. text:sub(last_pos, ref.match_start - 1) + -- Add the icon and the reference + result = result .. ref_icon .. text:sub(ref.match_start, ref.match_end) + last_pos = ref.match_end + 1 + end + + -- Add any remaining text after the last reference + if last_pos <= #text then + result = result .. text:sub(last_pos) + end + + output:add_lines(vim.split(result, '\n')) end ---@param output Output Output object to write to diff --git a/lua/opencode/ui/reference_picker.lua b/lua/opencode/ui/reference_picker.lua index 06a86271..121b0bbd 100644 --- a/lua/opencode/ui/reference_picker.lua +++ b/lua/opencode/ui/reference_picker.lua @@ -243,15 +243,11 @@ function M.collect_references() local msg = state.messages[i] -- Only process assistant messages - if msg.info and msg.info.role == 'assistant' and msg.parts then - for _, part in ipairs(msg.parts) do - -- Only process text parts (not tool calls) - if part.type == 'text' and part.text then - local refs = M.parse_references(part.text, msg.info.id) - for _, ref in ipairs(refs) do - table.insert(all_references, ref) - end - end + if msg.info and msg.info.role == 'assistant' then + -- Use cached references if available, otherwise parse on-demand + local refs = msg.references or M._parse_message_references(msg) + for _, ref in ipairs(refs) do + table.insert(all_references, ref) end end end @@ -270,11 +266,57 @@ function M.collect_references() return deduplicated end ----Get references for a specific text (used by formatter for visual indicators) ----@param text string +---Parse references from a single message's text parts +---@param msg OpencodeMessage ---@return CodeReference[] -function M.get_references_for_text(text) - return M.parse_references(text, '') +function M._parse_message_references(msg) + local refs = {} + if not msg.parts then + return refs + end + + local message_id = msg.info and msg.info.id or '' + for _, part in ipairs(msg.parts) do + if part.type == 'text' and part.text then + local part_refs = M.parse_references(part.text, message_id) + for _, ref in ipairs(part_refs) do + table.insert(refs, ref) + end + end + end + return refs +end + +---Parse and cache references for all assistant messages in the current session +function M._parse_session_messages() + if not state.messages then + return + end + + for _, msg in ipairs(state.messages) do + -- Only parse assistant messages that don't already have references cached + if msg.info and msg.info.role == 'assistant' and not msg.references then + msg.references = M._parse_message_references(msg) + end + end +end + +---Setup reference picker event subscriptions +---Should be called once during plugin initialization +function M.setup() + -- Subscribe to session.idle to parse references when AI is done responding + if state.event_manager then + state.event_manager:subscribe('session.idle', function() + M._parse_session_messages() + end) + end + + -- Subscribe to messages changes to handle session loads + state.subscribe('messages', function() + -- Parse any messages that don't have cached references + -- This handles loading previous sessions + M._parse_session_messages() + end) end ---Format a reference for display in the picker diff --git a/tests/data/cursor_data.expected.json b/tests/data/cursor_data.expected.json index 75df46c6..7d395ee9 100644 --- a/tests/data/cursor_data.expected.json +++ b/tests/data/cursor_data.expected.json @@ -1 +1 @@ -{"actions":[],"timestamp":1762903196,"lines":["----","","","what is this doing","","[lua/opencode/context.lua](lua/opencode/context.lua)","","Line 59:","`````lua","local is_enabled = vim.tbl_get(config, 'context', context_key, 'enabled')","`````","","----","","","**Explanation**","","- The line `local is_enabled = vim.tbl_get(config, 'context', context_key, 'enabled')` (in `lua/opencode/context.lua:58`) uses `vim.tbl_get` to safely read a nested field from a table.","- Concretely it attempts to read `config.context[context_key].enabled` but without throwing an error if `config.context` or `config.context[context_key]` is nil. If any intermediate key is missing it returns `nil`.","- In the surrounding function `M.is_context_enabled`, that value is the default config value for the given context key. The function then checks the state override:"," - If `state.current_context_config[context_key].enabled` is not `nil`, that state value (true/false) is returned."," - Otherwise the `is_enabled` value (from `config`) is returned.","- Example: if `config.context.selection.enabled == true` but `state.current_context_config.selection.enabled == false`, the function returns `false` (state overrides config). If the state value is `nil`, the config value is used.","- Why this matters: `vim.tbl_get` provides safe nested access; using it avoids runtime errors when some parts of the nested config are absent.","",""],"extmarks":[[1,1,0,{"virt_text_hide":false,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"ns_id":3,"right_gravity":true,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-30 17:42:54)","OpencodeHint"],[" [msg_a3637244a001FDRDfoBYVPEGpd]","OpencodeHint"]],"virt_text_pos":"win_col"}],[2,2,0,{"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"ns_id":3,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col"}],[3,3,0,{"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"ns_id":3,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col"}],[4,4,0,{"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"ns_id":3,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col"}],[5,5,0,{"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"ns_id":3,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col"}],[6,6,0,{"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"ns_id":3,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col"}],[7,7,0,{"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"ns_id":3,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col"}],[8,8,0,{"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"ns_id":3,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col"}],[9,9,0,{"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"ns_id":3,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col"}],[10,10,0,{"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"ns_id":3,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col"}],[11,11,0,{"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"ns_id":3,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col"}],[12,13,0,{"virt_text_hide":false,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"ns_id":3,"right_gravity":true,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-30 17:42:56)","OpencodeHint"],[" [msg_a36372b9a001M1lQEix4SK5QE5]","OpencodeHint"]],"virt_text_pos":"win_col"}]]} \ No newline at end of file +{"extmarks":[[1,1,0,{"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-30 17:42:54)","OpencodeHint"],[" [msg_a3637244a001FDRDfoBYVPEGpd]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10}],[2,2,0,{"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[3,3,0,{"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[4,4,0,{"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[5,5,0,{"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[6,6,0,{"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[7,7,0,{"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[8,8,0,{"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[9,9,0,{"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[10,10,0,{"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[11,11,0,{"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[12,13,0,{"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-30 17:42:56)","OpencodeHint"],[" [msg_a36372b9a001M1lQEix4SK5QE5]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10}]],"timestamp":1766369775,"actions":[],"lines":["----","","","what is this doing","","[lua/opencode/context.lua](lua/opencode/context.lua)","","Line 59:","`````lua","local is_enabled = vim.tbl_get(config, 'context', context_key, 'enabled')","`````","","----","","","**Explanation**","","- The line `local is_enabled = vim.tbl_get(config, 'context', context_key, 'enabled')` (in ` lua/opencode/context.lua:58`) uses `vim.tbl_get` to safely read a nested field from a table.","- Concretely it attempts to read `config.context[context_key].enabled` but without throwing an error if `config.context` or `config.context[context_key]` is nil. If any intermediate key is missing it returns `nil`.","- In the surrounding function `M.is_context_enabled`, that value is the default config value for the given context key. The function then checks the state override:"," - If `state.current_context_config[context_key].enabled` is not `nil`, that state value (true/false) is returned."," - Otherwise the `is_enabled` value (from `config`) is returned.","- Example: if `config.context.selection.enabled == true` but `state.current_context_config.selection.enabled == false`, the function returns `false` (state overrides config). If the state value is `nil`, the config value is used.","- Why this matters: `vim.tbl_get` provides safe nested access; using it avoids runtime errors when some parts of the nested config are absent.","",""]} \ No newline at end of file diff --git a/tests/data/diagnostics.expected.json b/tests/data/diagnostics.expected.json index 7f9b6d94..53326655 100644 --- a/tests/data/diagnostics.expected.json +++ b/tests/data/diagnostics.expected.json @@ -1 +1 @@ -{"timestamp":1763499676,"extmarks":[[1,1,0,{"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-11-03 13:34:57)","OpencodeHint"],[" [msg_a49ed91d6001coTsjFq9x6FF5W]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":false}],[2,2,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[3,3,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[4,4,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[5,5,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[6,6,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[7,7,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[8,8,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[9,10,0,{"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-4.1","OpencodeHint"],[" (2025-11-03 13:34:59)","OpencodeHint"],[" [msg_a49ed9828001mN6CDcWPnGnpHS]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":false}],[10,39,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[11,40,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[12,41,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[13,42,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[14,43,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[15,44,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[16,45,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[17,46,0,{"end_col":0,"end_row":47,"hl_eol":true,"right_gravity":true,"hl_group":"OpencodeDiffAdd","virt_text":[["+","OpencodeDiffAdd"]],"virt_text_pos":"overlay","priority":5000,"end_right_gravity":false,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false}],[18,46,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[19,47,0,{"end_col":0,"end_row":48,"hl_eol":true,"right_gravity":true,"hl_group":"OpencodeDiffAdd","virt_text":[["+","OpencodeDiffAdd"]],"virt_text_pos":"overlay","priority":5000,"end_right_gravity":false,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false}],[20,47,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[21,48,0,{"end_col":0,"end_row":49,"hl_eol":true,"right_gravity":true,"hl_group":"OpencodeDiffAdd","virt_text":[["+","OpencodeDiffAdd"]],"virt_text_pos":"overlay","priority":5000,"end_right_gravity":false,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false}],[22,48,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[23,49,0,{"end_col":0,"end_row":50,"hl_eol":true,"right_gravity":true,"hl_group":"OpencodeDiffAdd","virt_text":[["+","OpencodeDiffAdd"]],"virt_text_pos":"overlay","priority":5000,"end_right_gravity":false,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false}],[24,49,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[25,50,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[26,51,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[27,52,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[28,53,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[29,54,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[30,55,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[31,60,0,{"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-4.1","OpencodeHint"],[" (2025-11-03 13:35:06)","OpencodeHint"],[" [msg_a49edb694001syExFxMUW1ik3n]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":false}],[32,78,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[33,79,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[34,80,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[35,81,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[36,82,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[37,83,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[38,84,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[39,85,0,{"end_col":0,"end_row":86,"hl_eol":true,"right_gravity":true,"hl_group":"OpencodeDiffDelete","virt_text":[["-","OpencodeDiffDelete"]],"virt_text_pos":"overlay","priority":5000,"end_right_gravity":false,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false}],[40,85,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[41,86,0,{"end_col":0,"end_row":87,"hl_eol":true,"right_gravity":true,"hl_group":"OpencodeDiffAdd","virt_text":[["+","OpencodeDiffAdd"]],"virt_text_pos":"overlay","priority":5000,"end_right_gravity":false,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false}],[42,86,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[43,87,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[44,88,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[45,89,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[46,90,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[47,91,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[48,92,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[49,97,0,{"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-4.1","OpencodeHint"],[" (2025-11-03 13:35:10)","OpencodeHint"],[" [msg_a49edc4640017DZPFVUPHCm7Ji]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":false}],[50,105,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[51,106,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[52,107,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[53,108,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[54,109,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[55,110,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[56,111,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[57,112,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[58,113,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[59,114,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[60,115,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[61,116,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[62,117,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[63,118,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[64,119,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[65,120,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[66,121,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[67,122,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[68,123,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[69,124,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[70,125,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[71,126,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[72,127,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[73,128,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[74,129,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[75,130,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[76,131,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[77,132,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[78,133,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[79,134,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[80,135,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[81,136,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[82,137,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[83,138,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[84,139,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[85,140,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[86,141,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[87,142,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[88,143,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[89,144,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[90,145,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[91,146,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[92,147,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[93,148,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[94,149,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[95,150,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[96,151,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[97,152,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[98,153,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[99,154,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[100,155,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[101,156,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[102,157,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[103,158,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[104,159,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[105,160,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[106,161,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[107,162,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[108,163,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[109,164,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[110,165,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[111,166,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[112,167,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[113,168,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[114,169,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[115,170,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[116,171,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[117,172,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[118,173,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[119,174,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[120,175,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[121,176,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[122,177,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[123,178,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[124,179,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[125,180,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[126,181,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[127,182,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[128,183,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[129,184,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[130,185,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[131,186,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[132,187,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[133,188,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[134,189,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[135,190,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[136,191,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[137,192,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[138,193,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[139,194,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[140,195,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[141,196,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[142,197,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[143,198,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[144,199,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[145,200,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[146,201,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[147,202,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[148,203,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[149,204,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[150,205,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[151,206,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[152,207,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[153,208,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[154,209,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[155,210,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[156,211,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[157,212,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[158,213,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[159,214,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[160,215,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[161,216,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[162,217,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[163,218,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[164,219,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[165,220,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[166,221,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[167,222,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[168,223,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[169,224,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[170,225,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[171,226,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[172,227,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[173,228,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[174,229,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[175,230,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[176,231,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[177,232,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[178,233,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[179,234,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[180,235,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[181,236,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[182,237,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[183,238,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[184,239,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[185,240,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[186,241,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[187,242,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[188,243,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[189,244,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[190,245,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[191,246,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[192,247,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[193,248,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[194,249,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[195,250,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[196,251,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[197,252,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[198,253,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[199,254,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[200,255,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[201,256,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[202,257,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[203,258,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[204,259,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[205,260,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[206,261,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[207,262,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[208,263,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[209,264,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[210,265,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[211,266,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[212,267,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[213,268,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[214,269,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[215,270,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[216,271,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[217,272,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[218,273,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[219,274,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[220,275,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[221,276,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[222,277,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[223,278,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[224,279,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[225,280,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[226,281,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[227,282,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[228,283,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[229,284,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[230,285,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[231,286,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[232,287,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[233,288,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[234,289,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[235,290,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[236,291,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[237,292,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[238,293,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[239,294,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[240,295,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[241,296,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[242,297,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[243,298,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[244,299,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[245,300,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[246,301,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[247,302,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[248,303,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[249,304,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[250,305,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[251,306,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[252,307,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[253,308,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[254,309,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[255,310,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[256,311,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[257,312,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[258,313,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[259,314,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[260,315,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[261,316,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[262,317,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[263,318,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[264,319,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[265,320,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[266,321,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[267,322,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[268,323,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[269,324,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[270,325,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[271,326,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[272,327,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[273,328,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[274,329,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[275,330,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[276,331,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[277,332,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[278,333,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[279,334,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[280,335,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[281,336,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[282,337,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[283,338,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[284,339,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[285,340,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[286,341,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[287,342,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[288,343,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[289,344,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[290,345,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[291,346,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[292,347,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[293,348,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[294,349,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[295,350,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[296,351,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[297,352,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[298,353,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[299,354,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[300,355,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[301,356,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[302,357,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[303,358,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[304,359,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[305,360,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[306,361,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[307,362,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[308,363,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[309,364,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[310,365,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[311,366,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[312,367,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[313,368,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[314,369,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[315,370,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[316,371,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[317,372,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[318,373,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[319,374,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[320,375,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[321,376,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[322,377,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[323,378,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[324,379,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[325,380,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[326,381,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[327,382,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[328,383,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[329,384,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[330,385,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[331,386,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[332,387,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[333,388,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[334,389,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[335,390,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[336,391,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[337,392,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[338,393,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[339,394,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[340,395,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[341,396,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[342,397,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[343,398,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[344,399,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[345,400,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[346,401,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[347,402,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[348,403,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[349,404,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[350,405,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[351,406,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[352,407,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[353,408,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[354,409,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[355,410,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[356,411,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[357,412,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[358,413,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[359,414,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[360,415,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[361,416,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[362,417,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[363,418,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[364,419,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[365,420,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[366,421,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[367,422,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[368,423,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[369,424,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[370,425,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[371,426,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[372,427,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[373,428,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[374,429,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[375,430,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[376,431,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[377,432,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[378,433,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[379,434,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[380,435,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[381,436,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[382,437,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[383,438,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[384,439,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[385,440,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[386,441,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[387,442,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[388,443,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[389,444,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[390,445,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[391,446,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[392,447,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[393,448,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[394,449,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[395,450,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[396,451,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[397,452,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[398,453,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[399,454,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[400,455,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[401,456,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[402,457,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[403,458,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[404,459,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[405,460,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[406,461,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[407,462,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[408,463,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[409,464,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[410,465,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[411,466,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[412,467,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[413,468,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[414,469,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[415,470,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[416,471,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[417,472,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[418,473,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[419,474,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[420,475,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[421,476,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[422,477,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[423,478,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[424,479,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[425,480,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[426,481,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[427,482,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[428,483,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[429,484,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[430,485,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[431,486,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[432,487,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[433,488,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[434,489,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[435,490,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[436,491,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[437,492,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[438,493,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[439,494,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[440,495,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[441,496,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[442,497,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[443,498,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[444,499,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[445,500,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[446,501,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[447,502,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[448,503,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[449,504,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[450,505,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[451,506,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[452,507,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[453,508,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[454,509,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[455,510,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[456,511,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[457,512,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[458,513,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[459,514,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[460,515,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[461,516,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[462,517,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[463,518,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[464,519,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[465,520,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[466,521,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[467,522,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[468,523,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[469,524,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[470,525,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[471,526,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[472,527,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[473,528,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[474,529,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[475,530,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[476,531,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[477,532,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[478,533,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[479,534,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[480,535,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[481,536,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[482,537,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[483,538,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[484,539,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[485,540,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[486,541,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[487,542,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[488,543,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[489,544,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[490,545,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[491,546,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[492,547,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[493,548,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[494,549,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[495,550,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[496,551,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[497,552,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[498,553,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[499,554,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[500,555,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[501,556,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[502,557,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[503,558,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[504,559,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[505,560,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[506,561,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[507,562,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[508,563,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[509,564,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[510,565,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[511,566,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[512,567,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[513,568,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[514,569,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[515,570,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[516,571,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[517,572,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[518,573,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[519,574,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true}],[520,577,0,{"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-4.1","OpencodeHint"],[" (2025-11-03 13:35:15)","OpencodeHint"],[" [msg_a49edd87f001eOJDDoq5Vb5hra]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":false}]],"lines":["----","","","help me fix the file","","[lua/opencode/core.lua](lua/opencode/core.lua)","","**Diagnostics:**  (3)","","----","","","Let's address the three EmmyLua diagnostics at line 130 in `lua/opencode/core.lua`:","","### 1. `param-type-not-match`: expected `string` but found `string?`","- **Location:** `state.active_session.id` (line 130, col 20)","- **Cause:** `state.active_session` may be `nil`, so `state.active_session.id` could error or be `nil`. The function expects a `string`, not a nullable string.","- **Fix:** Add a nil check for `state.active_session` before accessing `.id`.","","### 2. `param-type-not-match`: expected `{ agent: string?, messageID: string?, model: {...}?, parts: Part[], system: string?, tools: table<...>? }` but found `{ model = table, agent = any, parts = OpencodeMessagePart[], ... }`","- **Location:** `params` argument to `:create_message` (line 130, col 45)","- **Cause:** The `model` field in `params` is `{ providerID = string?, modelID = string? }`, but the expected type is `{ modelID: string, providerID: string }?`. The order and possibly the optionality are mismatched.","- **Fix:** Ensure the `model` field matches the expected type exactly: `{ modelID: string, providerID: string }`.","","### 3. `need-check-nil`: `state.active_session may be nil`","- **Location:** Same as #1. This is a reminder to check for nil before accessing `state.active_session.id`.","","---","","## Step-by-step Fix Plan","","```markdown","- [ ] 1. Add a nil check for `state.active_session` before accessing `.id` in `M.send_message`.","- [ ] 2. Ensure the `model` field in `params` matches the expected type `{ modelID: string, providerID: string }`.","- [ ] 3. Test the changes to ensure the diagnostics are resolved and the function works as expected.","```","","Let's start with step 1: Add a nil check for `state.active_session` before accessing `.id`.","","** edit** `core.lua`","","`````lua"," "," params.parts = context.format_message(prompt, opts.context)"," M.before_run(opts)"," "," if not state.active_session or not state.active_session.id then"," vim.notify('No active session to send message to', vim.log.levels.ERROR)"," return"," end"," state.api_client"," :create_message(state.active_session.id, params)"," :and_then(function(response)"," if not response or not response.info or not response.parts then","","`````","","**󰻛 Created Snapshot** `8e790371`","","----","","","Step 1 is complete: nil check for `state.active_session` before accessing `.id` is added.","","Now, let's address step 2: Ensure the `model` field in `params` matches the expected type `{ modelID: string, providerID: string }`.","","Currently, the code is:","```lua","if opts.model then"," local provider, model = opts.model:match('^(.-)/(.+)$')"," params.model = { providerID = provider, modelID = model }"," state.current_model = opts.model","end","```","The expected type is `{ modelID: string, providerID: string }`, but EmmyLua expects the order to be `modelID` first, then `providerID`. Let's update the assignment to match the expected order.","","I'll fix this now.","","** edit** `core.lua`","","`````lua"," local params = {}"," "," if opts.model then"," local provider, model = opts.model:match('^(.-)/(.+)$')"," params.model = { providerID = provider, modelID = model }"," params.model = { modelID = model, providerID = provider }"," state.current_model = opts.model"," end"," "," if opts.agent then","","`````","","**󰻛 Created Snapshot** `f33f38a7`","","----","","","Step 2 is complete: the `model` field in `params` now matches the expected type `{ modelID = model, providerID = provider }`.","","Now, let's move to step 3: Test the changes to ensure the diagnostics are resolved and the function works as expected.","","I'll run the test suite using the provided script to verify everything is working.","","** run** `Run all tests to verify code changes`","","`````bash","> ./run_tests.sh","","Running tests for opencode.nvim","------------------------------------------------","Starting...Scheduling: ./tests/minimal/plugin_spec.lua","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/minimal/plugin_spec.lua\t","Success\t||\topencode.nvim plugin loads the plugin without errors\t","Success\t||\topencode.nvim plugin can be set up with custom config\t","\t","Success: \t2\t","Failed : \t0\t","========================================\t","✓ Minimal tests passed","------------------------------------------------","Starting...Scheduling: ./tests/unit/keymap_spec.lua","Scheduling: ./tests/unit/opencode_server_spec.lua","Scheduling: ./tests/unit/context_completion_spec.lua","Scheduling: ./tests/unit/config_file_spec.lua","Scheduling: ./tests/unit/init_spec.lua","Scheduling: ./tests/unit/state_spec.lua","Scheduling: ./tests/unit/render_state_spec.lua","Scheduling: ./tests/unit/server_job_spec.lua","Scheduling: ./tests/unit/config_spec.lua","Scheduling: ./tests/unit/context_bar_spec.lua","Scheduling: ./tests/unit/renderer_spec.lua","Scheduling: ./tests/unit/api_client_spec.lua","Scheduling: ./tests/unit/core_spec.lua","Scheduling: ./tests/unit/session_spec.lua","Scheduling: ./tests/unit/event_manager_spec.lua","Scheduling: ./tests/unit/api_spec.lua","Scheduling: ./tests/unit/context_spec.lua","Scheduling: ./tests/unit/timer_spec.lua","Scheduling: ./tests/unit/util_spec.lua","Scheduling: ./tests/unit/snapshot_spec.lua","Scheduling: ./tests/unit/id_spec.lua","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/context_completion_spec.lua\t","Success\t||\tcontext completion get_source should return a completion source\t","Success\t||\tcontext completion complete function should return empty table when trigger char does not match\t","Success\t||\tcontext completion complete function should return context items when trigger char matches\t","Success\t||\tcontext completion complete function should include selection items when selections exist\t","Success\t||\tcontext completion complete function should include mentioned files when they exist\t","Success\t||\tcontext completion complete function should include subagent items when they exist\t","Success\t||\tcontext completion complete function should filter items based on input\t","Success\t||\tcontext completion complete function should sort items with available items first\t","Success\t||\tcontext completion on_complete function should handle nil item gracefully\t","Success\t||\tcontext completion on_complete function should handle item without data gracefully\t","Success\t||\tcontext completion on_complete function should toggle context enabled state for toggleable items\t","Success\t||\tcontext completion on_complete function should remove mentioned file when selected\t","Success\t||\tcontext completion on_complete function should remove subagent when selected\t","Success\t||\tcontext completion on_complete function should remove selection when selection item selected\t","Success\t||\tcontext completion on_complete function should clean up trigger character from current line\t","Success\t||\tcontext completion formatting functions should format diagnostics correctly\t","Success\t||\tcontext completion formatting functions should format cursor data correctly\t","Success\t||\tcontext completion formatting functions should format selection correctly\t","Success\t||\tcontext completion edge cases should handle empty context gracefully\t","Success\t||\tcontext completion edge cases should handle disabled contexts correctly\t","\t","Success: \t20\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/keymap_spec.lua\t","Success\t||\topencode.keymap setup sets up keymap with new format configured keys\t","Success\t||\topencode.keymap setup sets up keymap with old format configured keys (normalized)\t","Success\t||\topencode.keymap setup sets up callbacks that execute the correct commands (new format)\t","Success\t||\topencode.keymap setup sets up callbacks that execute the correct commands (old format normalized)\t","Success\t||\topencode.keymap normalize_keymap normalizes old format keymap to new format correctly\t","Success\t||\topencode.keymap normalize_keymap shows error message for unknown API functions\t","Success\t||\topencode.keymap normalize_keymap uses custom description from config_entry\t","Success\t||\topencode.keymap normalize_keymap falls back to API description when no custom desc provided\t","Success\t||\topencode.keymap setup_window_keymaps handles unknown API functions with error message\t","Success\t||\topencode.keymap setup_window_keymaps uses custom description for window keymaps\t","Success\t||\topencode.keymap setup_permission_keymap sets up permission keymaps when there is a current permission\t","Success\t||\topencode.keymap setup_permission_keymap should delete existing permission keymaps if no current permission exists after being set\t","Success\t||\topencode.keymap setup_permission_keymap does not set permission keymaps when there is no current permission\t","\t","Success: \t13\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/opencode_server_spec.lua\t","Success\t||\topencode.opencode_server creates a new server object\t","Success\t||\topencode.opencode_server spawn promise resolves when stdout emits server URL\t","Success\t||\topencode.opencode_server shutdown resolves shutdown_promise and clears fields\t","Success\t||\topencode.opencode_server calls on_error when stderr is triggered\t","Success\t||\topencode.opencode_server calls on_exit and clears fields when process exits\t","\t","Success: \t5\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/config_file_spec.lua\t","Success\t||\tconfig_file.setup lazily loads config when accessed\t","Success\t||\tconfig_file.setup get_opencode_agents returns primary + defaults\t","Success\t||\tconfig_file.setup get_opencode_agents respects disabled defaults\t","Success\t||\tconfig_file.setup get_opencode_project returns project\t","\t","Success: \t4\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/init_spec.lua\t","Success\t||\topencode has setup function in the public API\t","Success\t||\topencode main module can be required without errors\t","\t","Success: \t2\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/render_state_spec.lua\t","Success\t||\tRenderState new and reset creates a new instance\t","Success\t||\tRenderState new and reset resets to empty state\t","Success\t||\tRenderState set_message sets a new message\t","Success\t||\tRenderState set_message updates line index for message\t","Success\t||\tRenderState set_message updates existing message\t","Success\t||\tRenderState set_part sets a new part\t","Success\t||\tRenderState set_part updates line index for part\t","Success\t||\tRenderState set_part initializes actions array\t","Success\t||\tRenderState get_part_at_line returns part at line\t","Success\t||\tRenderState get_part_at_line returns nil for line without part\t","Success\t||\tRenderState get_message_at_line returns message at line\t","Success\t||\tRenderState get_message_at_line returns nil for line without message\t","Success\t||\tRenderState get_part_by_call_id finds part by call ID\t","Success\t||\tRenderState get_part_by_call_id returns nil when call ID not found\t","Success\t||\tRenderState actions adds actions to part\t","Success\t||\tRenderState actions adds actions with offset\t","Success\t||\tRenderState actions clears actions for part\t","Success\t||\tRenderState actions gets actions at line\t","Success\t||\tRenderState actions gets all actions from all parts\t","Success\t||\tRenderState update_part_lines updates part line positions\t","Success\t||\tRenderState update_part_lines shifts subsequent content when expanding\t","Success\t||\tRenderState update_part_lines shifts subsequent content when shrinking\t","Success\t||\tRenderState update_part_lines returns false for non-existent part\t","Success\t||\tRenderState remove_part removes part and shifts subsequent content\t","Success\t||\tRenderState remove_part clears line index for removed part\t","Success\t||\tRenderState remove_part returns false for non-existent part\t","Success\t||\tRenderState remove_message removes message and shifts subsequent content\t","Success\t||\tRenderState remove_message clears line index for removed message\t","Success\t||\tRenderState remove_message returns false for non-existent message\t","Success\t||\tRenderState shift_all does nothing when delta is 0\t","Success\t||\tRenderState shift_all shifts content at or after from_line\t","Success\t||\tRenderState shift_all shifts actions with parts\t","Success\t||\tRenderState shift_all does not rebuild index when nothing shifted\t","Success\t||\tRenderState shift_all invalidates index when content shifted\t","Success\t||\tRenderState shift_all exits early when content found before from_line\t","Success\t||\tRenderState update_part_data updates part reference\t","Success\t||\tRenderState update_part_data does nothing for non-existent part\t","\t","Success: \t37\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/server_job_spec.lua\t","Success\t||\tserver_job exposes expected public functions\t","Success\t||\tserver_job call_api resolves with decoded json and toggles is_job_running\t","Success\t||\tserver_job call_api rejects on non 2xx\t","Success\t||\tserver_job stream_api forwards chunks\t","Success\t||\tserver_job ensure_server spawns a new opencode server only once\t","\t","Success: \t5\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/config_spec.lua\t","Success\t||\topencode.config uses default values when no options are provided\t","Success\t||\topencode.config merges user options with defaults\t","\t","Success: \t2\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/context_bar_spec.lua\t","Success\t||\topencode.ui.context_bar opencode.ui.context_bar renders minimal winbar with right aligh token only\t","Success\t||\topencode.ui.context_bar opencode.ui.context_bar renders winbar with current file when present\t","Success\t||\topencode.ui.context_bar opencode.ui.context_bar renders winbar with multiple context elements\t","Success\t||\topencode.ui.context_bar opencode.ui.context_bar renders winbar with diagnostics\t","Success\t||\topencode.ui.context_bar opencode.ui.context_bar respects context enabled settings\t","Success\t||\topencode.ui.context_bar opencode.ui.context_bar handles empty winbar gracefully\t","Success\t||\topencode.ui.context_bar opencode.ui.context_bar does nothing when window is invalid\t","Success\t||\topencode.ui.context_bar opencode.ui.context_bar uses provided windows parameter\t","Success\t||\topencode.ui.context_bar setup subscribes to state changes\t","\t","Success: \t9\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/api_client_spec.lua\t","Success\t||\tapi_client should create a new client instance\t","Success\t||\tapi_client should remove trailing slash from base_url\t","Success\t||\tapi_client should create client using create factory function\t","Success\t||\tapi_client should have all expected API methods\t","Success\t||\tapi_client should construct URLs correctly with query parameters\t","\t","Success: \t5\t","Failed : \t0\t","========================================\t","Error detected while processing command line:","opencode command not found - please install and configure opencode before using this plugin","Unsupported opencode CLI version: opencode 0.4.1. Requires >= 0.4.2","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/core_spec.lua\t","Success\t||\topencode.core open creates windows if they don't exist\t","Success\t||\topencode.core open handles new session properly\t","Success\t||\topencode.core open focuses the appropriate window\t","Success\t||\topencode.core select_session filters sessions by description and parentID\t","Success\t||\topencode.core send_message sends a message via api_client\t","Success\t||\topencode.core send_message creates new session when none active\t","Success\t||\topencode.core send_message persist options in state when sending message\t","Success\t||\topencode.core opencode_ok (version checks) returns false when opencode executable is missing\t","Success\t||\topencode.core opencode_ok (version checks) returns false when version is below required\t","Success\t||\topencode.core opencode_ok (version checks) returns true when version equals required\t","Success\t||\topencode.core opencode_ok (version checks) returns true when version is above required\t","\t","Success: \t11\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/session_spec.lua\t","Success\t||\topencode.session get_last_workspace_session returns the most recent session for current workspace\t","Success\t||\topencode.session get_last_workspace_session returns nil when no sessions match the workspace\t","Success\t||\topencode.session get_last_workspace_session handles JSON parsing errors\t","Success\t||\topencode.session get_last_workspace_session handles empty session list\t","Success\t||\topencode.session get_by_name returns the session with matching ID\t","Success\t||\topencode.session get_by_name returns nil when no session matches the ID\t","Success\t||\topencode.session read_json_dir returns nil for non-existent directory\t","Success\t||\topencode.session read_json_dir returns nil when directory exists but has no JSON files\t","Success\t||\topencode.session read_json_dir returns decoded JSON content from directory\t","Success\t||\topencode.session read_json_dir skips invalid JSON files\t","Success\t||\topencode.session get_messages returns nil when session is nil\t","Success\t||\topencode.session get_messages returns nil when messages directory does not exist\t","Success\t||\topencode.session get_messages returns messages with their parts\t","\t","Success: \t13\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/state_spec.lua\t","Success\t||\topencode.state (observable) notifies listeners on key change\t","Success\t||\topencode.state (observable) notifies wildcard listeners on any key change\t","Success\t||\topencode.state (observable) can unregister listeners\t","Success\t||\topencode.state (observable) does not notify if value is unchanged\t","\t","Success: \t4\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/event_manager_spec.lua\t","Success\t||\tEventManager should create a new instance\t","Success\t||\tEventManager should subscribe and emit events\t","Success\t||\tEventManager should handle multiple subscribers\t","Success\t||\tEventManager should unsubscribe correctly\t","Success\t||\tEventManager should track subscriber count\t","Success\t||\tEventManager should list event names\t","Success\t||\tEventManager should handle starting and stopping\t","Success\t||\tEventManager should not start multiple times\t","\t","Success: \t8\t","Failed : \t0\t","========================================\t","File not added to context. Could not read.","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/context_spec.lua\t","Success\t||\textract_from_opencode_message extracts prompt, selected_text, and current_file from tags in parts\t","Success\t||\textract_from_opencode_message returns nils if message or parts missing\t","Success\t||\textract_from_message_legacy extracts legacy tags from text\t","Success\t||\textract_legacy_tag extracts content between tags\t","Success\t||\textract_legacy_tag returns nil if tag not found\t","Success\t||\tformat_message returns a parts array with prompt as first part\t","Success\t||\tformat_message includes mentioned_files and subagents\t","Success\t||\tdelta_context removes current_file if unchanged\t","Success\t||\tdelta_context removes mentioned_subagents if unchanged\t","Success\t||\tadd_file/add_selection/add_subagent adds a file if filereadable\t","Success\t||\tadd_file/add_selection/add_subagent does not add file if not filereadable\t","Success\t||\tadd_file/add_selection/add_subagent adds a selection\t","Success\t||\tadd_file/add_selection/add_subagent adds a subagent\t","\t","Success: \t13\t","Failed : \t0\t","========================================\t",":OpencodeOpenInput is deprecated. Use `:Opencode open input` instead",":OpencodeStop is deprecated. Use `:Opencode cancel` instead",":OpencodeClose is deprecated. Use `:Opencode close` instead","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/api_spec.lua\t","Success\t||\topencode.api commands table contains the expected commands with proper structure\t","Success\t||\topencode.api setup registers the main Opencode command and legacy commands\t","Success\t||\topencode.api setup sets up legacy command functions that route to main command\t","Success\t||\topencode.api Lua API provides callable functions that match commands\t","Success\t||\topencode.api run command argument parsing parses agent prefix and passes to send_message\t","Success\t||\topencode.api run command argument parsing parses model prefix and passes to send_message\t","Success\t||\topencode.api run command argument parsing parses context prefix and passes to send_message\t","Success\t||\topencode.api run command argument parsing parses multiple prefixes and passes all to send_message\t","Success\t||\topencode.api run command argument parsing works with run_new command\t","Success\t||\topencode.api run command argument parsing requires a prompt after prefixes\t","Success\t||\topencode.api run command argument parsing Lua API accepts opts directly without parsing\t","\t","Success: \t11\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/util_spec.lua\t","Success\t||\tutil.parse_dot_args parses flat booleans\t","Success\t||\tutil.parse_dot_args parses nested dot notation\t","Success\t||\tutil.parse_dot_args parses mixed nesting and booleans\t","Success\t||\tutil.parse_dot_args parses numbers\t","Success\t||\tutil.parse_dot_args handles empty string\t","Success\t||\tutil.parse_run_args parses no prefixes\t","Success\t||\tutil.parse_run_args parses single agent prefix\t","Success\t||\tutil.parse_run_args parses single model prefix\t","Success\t||\tutil.parse_run_args parses single context prefix\t","Success\t||\tutil.parse_run_args parses multiple prefixes in order\t","Success\t||\tutil.parse_run_args parses context with multiple comma-delimited values\t","Success\t||\tutil.parse_run_args handles empty prompt after prefixes\t","Success\t||\tutil.parse_run_args handles empty string\t","Success\t||\tutil.parse_run_args stops parsing at first non-prefix token\t","\t","Success: \t14\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/snapshot_spec.lua\t","Success\t||\tsnapshot.restore runs read-tree and checkout-index and notifies on success\t","Success\t||\tsnapshot.restore notifies error if no active session\t","Success\t||\tsnapshot.restore notifies error if read-tree fails\t","Success\t||\tsnapshot.restore notifies error if checkout-index fails\t","\t","Success: \t4\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/id_spec.lua\t","Success\t||\tID module should generate ascending session IDs\t","Success\t||\tID module should generate descending message IDs\t","Success\t||\tID module should validate given IDs correctly\t","Success\t||\tID module should throw error for invalid given IDs\t","Success\t||\tID module should validate schemas correctly\t","Success\t||\tID module should return available prefixes\t","Success\t||\tID module should generate IDs with correct length structure\t","\t","Success: \t7\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/timer_spec.lua\t","Success\t||\tTimer Timer.new creates a new timer with required options\t","Success\t||\tTimer Timer.new sets repeat_timer to false when explicitly disabled\t","Success\t||\tTimer Timer.new stores optional parameters\t","Success\t||\tTimer Timer:start starts a repeating timer\t","Success\t||\tTimer Timer:start starts a one-shot timer\t","Success\t||\tTimer Timer:start passes arguments to on_tick function\t","Success\t||\tTimer Timer:start stops timer when on_tick returns false\t","Success\t||\tTimer Timer:start stops timer when on_tick throws an error\t","Success\t||\tTimer Timer:start stops previous timer before starting new one\t","Success\t||\tTimer Timer:start throws error when timer creation fails\t","Success\t||\tTimer Timer:stop stops a running timer\t","Success\t||\tTimer Timer:stop calls on_stop callback when provided\t","Success\t||\tTimer Timer:stop does nothing when timer is not running\t","Success\t||\tTimer Timer:stop handles errors in on_stop callback gracefully\t","Success\t||\tTimer Timer:is_running returns false when timer is not started\t","Success\t||\tTimer Timer:is_running returns true when timer is running\t","Success\t||\tTimer Timer:is_running returns false after timer is stopped\t","Success\t||\tTimer Timer:is_running returns false after one-shot timer completes\t","Success\t||\tTimer Integration tests can restart a stopped timer\t","Success\t||\tTimer Integration tests handles rapid start/stop cycles\t","\t","Success: \t20\t","Failed : \t0\t","========================================\t","Two pending permissions? existing: per_9efb5b2f3001aqJAFBMiGjFjVZ new: per_9efb5bc2a001j9Bd6bFjLB7hrc","Two pending permissions? existing: per_9efb5bc2a001j9Bd6bFjLB7hrc new: per_9efb5d6d1001uwVXQ9dhlBlgfO","Two pending permissions? existing: per_9efb5b2f3001aqJAFBMiGjFjVZ new: per_9efb5bc2a001j9Bd6bFjLB7hrc","Two pending permissions? existing: per_9efb5bc2a001j9Bd6bFjLB7hrc new: per_9efb5d6d1001uwVXQ9dhlBlgfO","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/renderer_spec.lua\t","Success\t||\trenderer replays ansi-codes correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays ansi-codes correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays ansi-codes correctly (session)\t","Success\t||\trenderer replays api-abort correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays api-abort correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays api-abort correctly (session)\t","Success\t||\trenderer replays api-error correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays api-error correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays api-error correctly (session)\t","Success\t||\trenderer replays cursor_data correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays cursor_data correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays cursor_data correctly (session)\t","Success\t||\trenderer replays diff correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays diff correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays diff correctly (session)\t","Success\t||\trenderer replays markdown-codefence correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays markdown-codefence correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays markdown-codefence correctly (session)\t","Success\t||\trenderer replays mentions-with-ranges correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays mentions-with-ranges correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays mentions-with-ranges correctly (session)\t","Success\t||\trenderer replays message-removal correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays message-removal correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays perf correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays perf correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays perf correctly (session)\t","Success\t||\trenderer replays permission-denied correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays permission-denied correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays permission-denied correctly (session)\t","Success\t||\trenderer replays permission-prompt correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays permission-prompt correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays permission correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays permission correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays permission correctly (session)\t","Success\t||\trenderer replays planning correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays planning correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays planning correctly (session)\t","Success\t||\trenderer replays redo-all correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays redo-all correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays redo-all correctly (session)\t","Success\t||\trenderer replays redo-once correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays redo-once correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays redo-once correctly (session)\t","Success\t||\trenderer replays revert correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays revert correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays revert correctly (session)\t","Success\t||\trenderer replays selection correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays selection correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays selection correctly (session)\t","Success\t||\trenderer replays shifting-and-multiple-perms correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays shifting-and-multiple-perms correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays simple-session correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays simple-session correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays simple-session correctly (session)\t","Success\t||\trenderer replays tool-invalid correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays tool-invalid correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays tool-invalid correctly (session)\t","Success\t||\trenderer replays updating-text correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays updating-text correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays updating-text correctly (session)\t","\t","Success: \t60\t","Failed : \t0\t","========================================\t","✓ Unit tests passed","------------------------------------------------","All tests passed successfully!","","`````","","----","","","All steps are complete and all tests pass! Here’s a summary of what was fixed:","","- ✅ Added a nil check for `state.active_session` before accessing `.id` in `M.send_message`.","- ✅ Ensured the `model` field in `params` matches the expected type `{ modelID = ..., providerID = ... }`.","- ✅ Verified the fixes by running the full test suite—no errors or failures.","","Your file is now robust and EmmyLua diagnostics at line 130 are resolved. If you need further tweaks or want to address other diagnostics, let me know!","",""],"actions":[{"type":"diff_revert_selected_file","range":{"to":94,"from":94},"text":"[R]evert file","display_line":94,"key":"R","args":["f33f38a70b284207e092c2c578a24e96fdd1bd4d"]},{"type":"diff_revert_all","range":{"to":94,"from":94},"text":"Revert [A]ll","display_line":94,"key":"A","args":["f33f38a70b284207e092c2c578a24e96fdd1bd4d"]},{"type":"diff_open","range":{"to":94,"from":94},"text":"[D]iff","display_line":94,"key":"D","args":["f33f38a70b284207e092c2c578a24e96fdd1bd4d"]},{"type":"diff_revert_selected_file","range":{"to":57,"from":57},"text":"[R]evert file","display_line":57,"key":"R","args":["8e7903714919009004aad8754db0035fb47ecb24"]},{"type":"diff_revert_all","range":{"to":57,"from":57},"text":"Revert [A]ll","display_line":57,"key":"A","args":["8e7903714919009004aad8754db0035fb47ecb24"]},{"type":"diff_open","range":{"to":57,"from":57},"text":"[D]iff","display_line":57,"key":"D","args":["8e7903714919009004aad8754db0035fb47ecb24"]}]} \ No newline at end of file +{"timestamp":1766369780,"actions":[{"display_line":94,"args":["f33f38a70b284207e092c2c578a24e96fdd1bd4d"],"text":"[R]evert file","range":{"from":94,"to":94},"key":"R","type":"diff_revert_selected_file"},{"display_line":94,"args":["f33f38a70b284207e092c2c578a24e96fdd1bd4d"],"text":"Revert [A]ll","range":{"from":94,"to":94},"key":"A","type":"diff_revert_all"},{"display_line":94,"args":["f33f38a70b284207e092c2c578a24e96fdd1bd4d"],"text":"[D]iff","range":{"from":94,"to":94},"key":"D","type":"diff_open"},{"display_line":57,"args":["8e7903714919009004aad8754db0035fb47ecb24"],"text":"[R]evert file","range":{"from":57,"to":57},"key":"R","type":"diff_revert_selected_file"},{"display_line":57,"args":["8e7903714919009004aad8754db0035fb47ecb24"],"text":"Revert [A]ll","range":{"from":57,"to":57},"key":"A","type":"diff_revert_all"},{"display_line":57,"args":["8e7903714919009004aad8754db0035fb47ecb24"],"text":"[D]iff","range":{"from":57,"to":57},"key":"D","type":"diff_open"}],"lines":["----","","","help me fix the file","","[lua/opencode/core.lua](lua/opencode/core.lua)","","**Diagnostics:**  (3)","","----","","","Let's address the three EmmyLua diagnostics at line 130 in ` lua/opencode/core.lua`:","","### 1. `param-type-not-match`: expected `string` but found `string?`","- **Location:** `state.active_session.id` (line 130, col 20)","- **Cause:** `state.active_session` may be `nil`, so `state.active_session.id` could error or be `nil`. The function expects a `string`, not a nullable string.","- **Fix:** Add a nil check for `state.active_session` before accessing `.id`.","","### 2. `param-type-not-match`: expected `{ agent: string?, messageID: string?, model: {...}?, parts: Part[], system: string?, tools: table<...>? }` but found `{ model = table, agent = any, parts = OpencodeMessagePart[], ... }`","- **Location:** `params` argument to `:create_message` (line 130, col 45)","- **Cause:** The `model` field in `params` is `{ providerID = string?, modelID = string? }`, but the expected type is `{ modelID: string, providerID: string }?`. The order and possibly the optionality are mismatched.","- **Fix:** Ensure the `model` field matches the expected type exactly: `{ modelID: string, providerID: string }`.","","### 3. `need-check-nil`: `state.active_session may be nil`","- **Location:** Same as #1. This is a reminder to check for nil before accessing `state.active_session.id`.","","---","","## Step-by-step Fix Plan","","```markdown","- [ ] 1. Add a nil check for `state.active_session` before accessing `.id` in `M.send_message`.","- [ ] 2. Ensure the `model` field in `params` matches the expected type `{ modelID: string, providerID: string }`.","- [ ] 3. Test the changes to ensure the diagnostics are resolved and the function works as expected.","```","","Let's start with step 1: Add a nil check for `state.active_session` before accessing `.id`.","","** edit** `core.lua`","","`````lua"," "," params.parts = context.format_message(prompt, opts.context)"," M.before_run(opts)"," "," if not state.active_session or not state.active_session.id then"," vim.notify('No active session to send message to', vim.log.levels.ERROR)"," return"," end"," state.api_client"," :create_message(state.active_session.id, params)"," :and_then(function(response)"," if not response or not response.info or not response.parts then","","`````","","**󰻛 Created Snapshot** `8e790371`","","----","","","Step 1 is complete: nil check for `state.active_session` before accessing `.id` is added.","","Now, let's address step 2: Ensure the `model` field in `params` matches the expected type `{ modelID: string, providerID: string }`.","","Currently, the code is:","```lua","if opts.model then"," local provider, model = opts.model:match('^(.-)/(.+)$')"," params.model = { providerID = provider, modelID = model }"," state.current_model = opts.model","end","```","The expected type is `{ modelID: string, providerID: string }`, but EmmyLua expects the order to be `modelID` first, then `providerID`. Let's update the assignment to match the expected order.","","I'll fix this now.","","** edit** `core.lua`","","`````lua"," local params = {}"," "," if opts.model then"," local provider, model = opts.model:match('^(.-)/(.+)$')"," params.model = { providerID = provider, modelID = model }"," params.model = { modelID = model, providerID = provider }"," state.current_model = opts.model"," end"," "," if opts.agent then","","`````","","**󰻛 Created Snapshot** `f33f38a7`","","----","","","Step 2 is complete: the `model` field in `params` now matches the expected type `{ modelID = model, providerID = provider }`.","","Now, let's move to step 3: Test the changes to ensure the diagnostics are resolved and the function works as expected.","","I'll run the test suite using the provided script to verify everything is working.","","** run** `Run all tests to verify code changes`","","`````bash","> ./run_tests.sh","","Running tests for opencode.nvim","------------------------------------------------","Starting...Scheduling: ./tests/minimal/plugin_spec.lua","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/minimal/plugin_spec.lua\t","Success\t||\topencode.nvim plugin loads the plugin without errors\t","Success\t||\topencode.nvim plugin can be set up with custom config\t","\t","Success: \t2\t","Failed : \t0\t","========================================\t","✓ Minimal tests passed","------------------------------------------------","Starting...Scheduling: ./tests/unit/keymap_spec.lua","Scheduling: ./tests/unit/opencode_server_spec.lua","Scheduling: ./tests/unit/context_completion_spec.lua","Scheduling: ./tests/unit/config_file_spec.lua","Scheduling: ./tests/unit/init_spec.lua","Scheduling: ./tests/unit/state_spec.lua","Scheduling: ./tests/unit/render_state_spec.lua","Scheduling: ./tests/unit/server_job_spec.lua","Scheduling: ./tests/unit/config_spec.lua","Scheduling: ./tests/unit/context_bar_spec.lua","Scheduling: ./tests/unit/renderer_spec.lua","Scheduling: ./tests/unit/api_client_spec.lua","Scheduling: ./tests/unit/core_spec.lua","Scheduling: ./tests/unit/session_spec.lua","Scheduling: ./tests/unit/event_manager_spec.lua","Scheduling: ./tests/unit/api_spec.lua","Scheduling: ./tests/unit/context_spec.lua","Scheduling: ./tests/unit/timer_spec.lua","Scheduling: ./tests/unit/util_spec.lua","Scheduling: ./tests/unit/snapshot_spec.lua","Scheduling: ./tests/unit/id_spec.lua","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/context_completion_spec.lua\t","Success\t||\tcontext completion get_source should return a completion source\t","Success\t||\tcontext completion complete function should return empty table when trigger char does not match\t","Success\t||\tcontext completion complete function should return context items when trigger char matches\t","Success\t||\tcontext completion complete function should include selection items when selections exist\t","Success\t||\tcontext completion complete function should include mentioned files when they exist\t","Success\t||\tcontext completion complete function should include subagent items when they exist\t","Success\t||\tcontext completion complete function should filter items based on input\t","Success\t||\tcontext completion complete function should sort items with available items first\t","Success\t||\tcontext completion on_complete function should handle nil item gracefully\t","Success\t||\tcontext completion on_complete function should handle item without data gracefully\t","Success\t||\tcontext completion on_complete function should toggle context enabled state for toggleable items\t","Success\t||\tcontext completion on_complete function should remove mentioned file when selected\t","Success\t||\tcontext completion on_complete function should remove subagent when selected\t","Success\t||\tcontext completion on_complete function should remove selection when selection item selected\t","Success\t||\tcontext completion on_complete function should clean up trigger character from current line\t","Success\t||\tcontext completion formatting functions should format diagnostics correctly\t","Success\t||\tcontext completion formatting functions should format cursor data correctly\t","Success\t||\tcontext completion formatting functions should format selection correctly\t","Success\t||\tcontext completion edge cases should handle empty context gracefully\t","Success\t||\tcontext completion edge cases should handle disabled contexts correctly\t","\t","Success: \t20\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/keymap_spec.lua\t","Success\t||\topencode.keymap setup sets up keymap with new format configured keys\t","Success\t||\topencode.keymap setup sets up keymap with old format configured keys (normalized)\t","Success\t||\topencode.keymap setup sets up callbacks that execute the correct commands (new format)\t","Success\t||\topencode.keymap setup sets up callbacks that execute the correct commands (old format normalized)\t","Success\t||\topencode.keymap normalize_keymap normalizes old format keymap to new format correctly\t","Success\t||\topencode.keymap normalize_keymap shows error message for unknown API functions\t","Success\t||\topencode.keymap normalize_keymap uses custom description from config_entry\t","Success\t||\topencode.keymap normalize_keymap falls back to API description when no custom desc provided\t","Success\t||\topencode.keymap setup_window_keymaps handles unknown API functions with error message\t","Success\t||\topencode.keymap setup_window_keymaps uses custom description for window keymaps\t","Success\t||\topencode.keymap setup_permission_keymap sets up permission keymaps when there is a current permission\t","Success\t||\topencode.keymap setup_permission_keymap should delete existing permission keymaps if no current permission exists after being set\t","Success\t||\topencode.keymap setup_permission_keymap does not set permission keymaps when there is no current permission\t","\t","Success: \t13\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/opencode_server_spec.lua\t","Success\t||\topencode.opencode_server creates a new server object\t","Success\t||\topencode.opencode_server spawn promise resolves when stdout emits server URL\t","Success\t||\topencode.opencode_server shutdown resolves shutdown_promise and clears fields\t","Success\t||\topencode.opencode_server calls on_error when stderr is triggered\t","Success\t||\topencode.opencode_server calls on_exit and clears fields when process exits\t","\t","Success: \t5\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/config_file_spec.lua\t","Success\t||\tconfig_file.setup lazily loads config when accessed\t","Success\t||\tconfig_file.setup get_opencode_agents returns primary + defaults\t","Success\t||\tconfig_file.setup get_opencode_agents respects disabled defaults\t","Success\t||\tconfig_file.setup get_opencode_project returns project\t","\t","Success: \t4\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/init_spec.lua\t","Success\t||\topencode has setup function in the public API\t","Success\t||\topencode main module can be required without errors\t","\t","Success: \t2\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/render_state_spec.lua\t","Success\t||\tRenderState new and reset creates a new instance\t","Success\t||\tRenderState new and reset resets to empty state\t","Success\t||\tRenderState set_message sets a new message\t","Success\t||\tRenderState set_message updates line index for message\t","Success\t||\tRenderState set_message updates existing message\t","Success\t||\tRenderState set_part sets a new part\t","Success\t||\tRenderState set_part updates line index for part\t","Success\t||\tRenderState set_part initializes actions array\t","Success\t||\tRenderState get_part_at_line returns part at line\t","Success\t||\tRenderState get_part_at_line returns nil for line without part\t","Success\t||\tRenderState get_message_at_line returns message at line\t","Success\t||\tRenderState get_message_at_line returns nil for line without message\t","Success\t||\tRenderState get_part_by_call_id finds part by call ID\t","Success\t||\tRenderState get_part_by_call_id returns nil when call ID not found\t","Success\t||\tRenderState actions adds actions to part\t","Success\t||\tRenderState actions adds actions with offset\t","Success\t||\tRenderState actions clears actions for part\t","Success\t||\tRenderState actions gets actions at line\t","Success\t||\tRenderState actions gets all actions from all parts\t","Success\t||\tRenderState update_part_lines updates part line positions\t","Success\t||\tRenderState update_part_lines shifts subsequent content when expanding\t","Success\t||\tRenderState update_part_lines shifts subsequent content when shrinking\t","Success\t||\tRenderState update_part_lines returns false for non-existent part\t","Success\t||\tRenderState remove_part removes part and shifts subsequent content\t","Success\t||\tRenderState remove_part clears line index for removed part\t","Success\t||\tRenderState remove_part returns false for non-existent part\t","Success\t||\tRenderState remove_message removes message and shifts subsequent content\t","Success\t||\tRenderState remove_message clears line index for removed message\t","Success\t||\tRenderState remove_message returns false for non-existent message\t","Success\t||\tRenderState shift_all does nothing when delta is 0\t","Success\t||\tRenderState shift_all shifts content at or after from_line\t","Success\t||\tRenderState shift_all shifts actions with parts\t","Success\t||\tRenderState shift_all does not rebuild index when nothing shifted\t","Success\t||\tRenderState shift_all invalidates index when content shifted\t","Success\t||\tRenderState shift_all exits early when content found before from_line\t","Success\t||\tRenderState update_part_data updates part reference\t","Success\t||\tRenderState update_part_data does nothing for non-existent part\t","\t","Success: \t37\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/server_job_spec.lua\t","Success\t||\tserver_job exposes expected public functions\t","Success\t||\tserver_job call_api resolves with decoded json and toggles is_job_running\t","Success\t||\tserver_job call_api rejects on non 2xx\t","Success\t||\tserver_job stream_api forwards chunks\t","Success\t||\tserver_job ensure_server spawns a new opencode server only once\t","\t","Success: \t5\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/config_spec.lua\t","Success\t||\topencode.config uses default values when no options are provided\t","Success\t||\topencode.config merges user options with defaults\t","\t","Success: \t2\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/context_bar_spec.lua\t","Success\t||\topencode.ui.context_bar opencode.ui.context_bar renders minimal winbar with right aligh token only\t","Success\t||\topencode.ui.context_bar opencode.ui.context_bar renders winbar with current file when present\t","Success\t||\topencode.ui.context_bar opencode.ui.context_bar renders winbar with multiple context elements\t","Success\t||\topencode.ui.context_bar opencode.ui.context_bar renders winbar with diagnostics\t","Success\t||\topencode.ui.context_bar opencode.ui.context_bar respects context enabled settings\t","Success\t||\topencode.ui.context_bar opencode.ui.context_bar handles empty winbar gracefully\t","Success\t||\topencode.ui.context_bar opencode.ui.context_bar does nothing when window is invalid\t","Success\t||\topencode.ui.context_bar opencode.ui.context_bar uses provided windows parameter\t","Success\t||\topencode.ui.context_bar setup subscribes to state changes\t","\t","Success: \t9\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/api_client_spec.lua\t","Success\t||\tapi_client should create a new client instance\t","Success\t||\tapi_client should remove trailing slash from base_url\t","Success\t||\tapi_client should create client using create factory function\t","Success\t||\tapi_client should have all expected API methods\t","Success\t||\tapi_client should construct URLs correctly with query parameters\t","\t","Success: \t5\t","Failed : \t0\t","========================================\t","Error detected while processing command line:","opencode command not found - please install and configure opencode before using this plugin","Unsupported opencode CLI version: opencode 0.4.1. Requires >= 0.4.2","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/core_spec.lua\t","Success\t||\topencode.core open creates windows if they don't exist\t","Success\t||\topencode.core open handles new session properly\t","Success\t||\topencode.core open focuses the appropriate window\t","Success\t||\topencode.core select_session filters sessions by description and parentID\t","Success\t||\topencode.core send_message sends a message via api_client\t","Success\t||\topencode.core send_message creates new session when none active\t","Success\t||\topencode.core send_message persist options in state when sending message\t","Success\t||\topencode.core opencode_ok (version checks) returns false when opencode executable is missing\t","Success\t||\topencode.core opencode_ok (version checks) returns false when version is below required\t","Success\t||\topencode.core opencode_ok (version checks) returns true when version equals required\t","Success\t||\topencode.core opencode_ok (version checks) returns true when version is above required\t","\t","Success: \t11\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/session_spec.lua\t","Success\t||\topencode.session get_last_workspace_session returns the most recent session for current workspace\t","Success\t||\topencode.session get_last_workspace_session returns nil when no sessions match the workspace\t","Success\t||\topencode.session get_last_workspace_session handles JSON parsing errors\t","Success\t||\topencode.session get_last_workspace_session handles empty session list\t","Success\t||\topencode.session get_by_name returns the session with matching ID\t","Success\t||\topencode.session get_by_name returns nil when no session matches the ID\t","Success\t||\topencode.session read_json_dir returns nil for non-existent directory\t","Success\t||\topencode.session read_json_dir returns nil when directory exists but has no JSON files\t","Success\t||\topencode.session read_json_dir returns decoded JSON content from directory\t","Success\t||\topencode.session read_json_dir skips invalid JSON files\t","Success\t||\topencode.session get_messages returns nil when session is nil\t","Success\t||\topencode.session get_messages returns nil when messages directory does not exist\t","Success\t||\topencode.session get_messages returns messages with their parts\t","\t","Success: \t13\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/state_spec.lua\t","Success\t||\topencode.state (observable) notifies listeners on key change\t","Success\t||\topencode.state (observable) notifies wildcard listeners on any key change\t","Success\t||\topencode.state (observable) can unregister listeners\t","Success\t||\topencode.state (observable) does not notify if value is unchanged\t","\t","Success: \t4\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/event_manager_spec.lua\t","Success\t||\tEventManager should create a new instance\t","Success\t||\tEventManager should subscribe and emit events\t","Success\t||\tEventManager should handle multiple subscribers\t","Success\t||\tEventManager should unsubscribe correctly\t","Success\t||\tEventManager should track subscriber count\t","Success\t||\tEventManager should list event names\t","Success\t||\tEventManager should handle starting and stopping\t","Success\t||\tEventManager should not start multiple times\t","\t","Success: \t8\t","Failed : \t0\t","========================================\t","File not added to context. Could not read.","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/context_spec.lua\t","Success\t||\textract_from_opencode_message extracts prompt, selected_text, and current_file from tags in parts\t","Success\t||\textract_from_opencode_message returns nils if message or parts missing\t","Success\t||\textract_from_message_legacy extracts legacy tags from text\t","Success\t||\textract_legacy_tag extracts content between tags\t","Success\t||\textract_legacy_tag returns nil if tag not found\t","Success\t||\tformat_message returns a parts array with prompt as first part\t","Success\t||\tformat_message includes mentioned_files and subagents\t","Success\t||\tdelta_context removes current_file if unchanged\t","Success\t||\tdelta_context removes mentioned_subagents if unchanged\t","Success\t||\tadd_file/add_selection/add_subagent adds a file if filereadable\t","Success\t||\tadd_file/add_selection/add_subagent does not add file if not filereadable\t","Success\t||\tadd_file/add_selection/add_subagent adds a selection\t","Success\t||\tadd_file/add_selection/add_subagent adds a subagent\t","\t","Success: \t13\t","Failed : \t0\t","========================================\t",":OpencodeOpenInput is deprecated. Use `:Opencode open input` instead",":OpencodeStop is deprecated. Use `:Opencode cancel` instead",":OpencodeClose is deprecated. Use `:Opencode close` instead","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/api_spec.lua\t","Success\t||\topencode.api commands table contains the expected commands with proper structure\t","Success\t||\topencode.api setup registers the main Opencode command and legacy commands\t","Success\t||\topencode.api setup sets up legacy command functions that route to main command\t","Success\t||\topencode.api Lua API provides callable functions that match commands\t","Success\t||\topencode.api run command argument parsing parses agent prefix and passes to send_message\t","Success\t||\topencode.api run command argument parsing parses model prefix and passes to send_message\t","Success\t||\topencode.api run command argument parsing parses context prefix and passes to send_message\t","Success\t||\topencode.api run command argument parsing parses multiple prefixes and passes all to send_message\t","Success\t||\topencode.api run command argument parsing works with run_new command\t","Success\t||\topencode.api run command argument parsing requires a prompt after prefixes\t","Success\t||\topencode.api run command argument parsing Lua API accepts opts directly without parsing\t","\t","Success: \t11\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/util_spec.lua\t","Success\t||\tutil.parse_dot_args parses flat booleans\t","Success\t||\tutil.parse_dot_args parses nested dot notation\t","Success\t||\tutil.parse_dot_args parses mixed nesting and booleans\t","Success\t||\tutil.parse_dot_args parses numbers\t","Success\t||\tutil.parse_dot_args handles empty string\t","Success\t||\tutil.parse_run_args parses no prefixes\t","Success\t||\tutil.parse_run_args parses single agent prefix\t","Success\t||\tutil.parse_run_args parses single model prefix\t","Success\t||\tutil.parse_run_args parses single context prefix\t","Success\t||\tutil.parse_run_args parses multiple prefixes in order\t","Success\t||\tutil.parse_run_args parses context with multiple comma-delimited values\t","Success\t||\tutil.parse_run_args handles empty prompt after prefixes\t","Success\t||\tutil.parse_run_args handles empty string\t","Success\t||\tutil.parse_run_args stops parsing at first non-prefix token\t","\t","Success: \t14\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/snapshot_spec.lua\t","Success\t||\tsnapshot.restore runs read-tree and checkout-index and notifies on success\t","Success\t||\tsnapshot.restore notifies error if no active session\t","Success\t||\tsnapshot.restore notifies error if read-tree fails\t","Success\t||\tsnapshot.restore notifies error if checkout-index fails\t","\t","Success: \t4\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/id_spec.lua\t","Success\t||\tID module should generate ascending session IDs\t","Success\t||\tID module should generate descending message IDs\t","Success\t||\tID module should validate given IDs correctly\t","Success\t||\tID module should throw error for invalid given IDs\t","Success\t||\tID module should validate schemas correctly\t","Success\t||\tID module should return available prefixes\t","Success\t||\tID module should generate IDs with correct length structure\t","\t","Success: \t7\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/timer_spec.lua\t","Success\t||\tTimer Timer.new creates a new timer with required options\t","Success\t||\tTimer Timer.new sets repeat_timer to false when explicitly disabled\t","Success\t||\tTimer Timer.new stores optional parameters\t","Success\t||\tTimer Timer:start starts a repeating timer\t","Success\t||\tTimer Timer:start starts a one-shot timer\t","Success\t||\tTimer Timer:start passes arguments to on_tick function\t","Success\t||\tTimer Timer:start stops timer when on_tick returns false\t","Success\t||\tTimer Timer:start stops timer when on_tick throws an error\t","Success\t||\tTimer Timer:start stops previous timer before starting new one\t","Success\t||\tTimer Timer:start throws error when timer creation fails\t","Success\t||\tTimer Timer:stop stops a running timer\t","Success\t||\tTimer Timer:stop calls on_stop callback when provided\t","Success\t||\tTimer Timer:stop does nothing when timer is not running\t","Success\t||\tTimer Timer:stop handles errors in on_stop callback gracefully\t","Success\t||\tTimer Timer:is_running returns false when timer is not started\t","Success\t||\tTimer Timer:is_running returns true when timer is running\t","Success\t||\tTimer Timer:is_running returns false after timer is stopped\t","Success\t||\tTimer Timer:is_running returns false after one-shot timer completes\t","Success\t||\tTimer Integration tests can restart a stopped timer\t","Success\t||\tTimer Integration tests handles rapid start/stop cycles\t","\t","Success: \t20\t","Failed : \t0\t","========================================\t","Two pending permissions? existing: per_9efb5b2f3001aqJAFBMiGjFjVZ new: per_9efb5bc2a001j9Bd6bFjLB7hrc","Two pending permissions? existing: per_9efb5bc2a001j9Bd6bFjLB7hrc new: per_9efb5d6d1001uwVXQ9dhlBlgfO","Two pending permissions? existing: per_9efb5b2f3001aqJAFBMiGjFjVZ new: per_9efb5bc2a001j9Bd6bFjLB7hrc","Two pending permissions? existing: per_9efb5bc2a001j9Bd6bFjLB7hrc new: per_9efb5d6d1001uwVXQ9dhlBlgfO","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/renderer_spec.lua\t","Success\t||\trenderer replays ansi-codes correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays ansi-codes correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays ansi-codes correctly (session)\t","Success\t||\trenderer replays api-abort correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays api-abort correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays api-abort correctly (session)\t","Success\t||\trenderer replays api-error correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays api-error correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays api-error correctly (session)\t","Success\t||\trenderer replays cursor_data correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays cursor_data correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays cursor_data correctly (session)\t","Success\t||\trenderer replays diff correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays diff correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays diff correctly (session)\t","Success\t||\trenderer replays markdown-codefence correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays markdown-codefence correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays markdown-codefence correctly (session)\t","Success\t||\trenderer replays mentions-with-ranges correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays mentions-with-ranges correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays mentions-with-ranges correctly (session)\t","Success\t||\trenderer replays message-removal correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays message-removal correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays perf correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays perf correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays perf correctly (session)\t","Success\t||\trenderer replays permission-denied correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays permission-denied correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays permission-denied correctly (session)\t","Success\t||\trenderer replays permission-prompt correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays permission-prompt correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays permission correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays permission correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays permission correctly (session)\t","Success\t||\trenderer replays planning correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays planning correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays planning correctly (session)\t","Success\t||\trenderer replays redo-all correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays redo-all correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays redo-all correctly (session)\t","Success\t||\trenderer replays redo-once correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays redo-once correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays redo-once correctly (session)\t","Success\t||\trenderer replays revert correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays revert correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays revert correctly (session)\t","Success\t||\trenderer replays selection correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays selection correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays selection correctly (session)\t","Success\t||\trenderer replays shifting-and-multiple-perms correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays shifting-and-multiple-perms correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays simple-session correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays simple-session correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays simple-session correctly (session)\t","Success\t||\trenderer replays tool-invalid correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays tool-invalid correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays tool-invalid correctly (session)\t","Success\t||\trenderer replays updating-text correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays updating-text correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays updating-text correctly (session)\t","\t","Success: \t60\t","Failed : \t0\t","========================================\t","✓ Unit tests passed","------------------------------------------------","All tests passed successfully!","","`````","","----","","","All steps are complete and all tests pass! Here’s a summary of what was fixed:","","- ✅ Added a nil check for `state.active_session` before accessing `.id` in `M.send_message`.","- ✅ Ensured the `model` field in `params` matches the expected type `{ modelID = ..., providerID = ... }`.","- ✅ Verified the fixes by running the full test suite—no errors or failures.","","Your file is now robust and EmmyLua diagnostics at line 130 are resolved. If you need further tweaks or want to address other diagnostics, let me know!","",""],"extmarks":[[1,1,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-11-03 13:34:57)","OpencodeHint"],[" [msg_a49ed91d6001coTsjFq9x6FF5W]","OpencodeHint"]],"right_gravity":true,"virt_text_win_col":-3,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_hide":false}],[2,2,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_win_col":-3,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[3,3,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_win_col":-3,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[4,4,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_win_col":-3,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[5,5,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_win_col":-3,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[6,6,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_win_col":-3,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[7,7,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_win_col":-3,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[8,8,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_win_col":-3,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[9,10,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-4.1","OpencodeHint"],[" (2025-11-03 13:34:59)","OpencodeHint"],[" [msg_a49ed9828001mN6CDcWPnGnpHS]","OpencodeHint"]],"right_gravity":true,"virt_text_win_col":-3,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_hide":false}],[10,39,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[11,40,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[12,41,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[13,42,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[14,43,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[15,44,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[16,45,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[17,46,0,{"hl_group":"OpencodeDiffAdd","virt_text_repeat_linebreak":false,"virt_text":[["+","OpencodeDiffAdd"]],"right_gravity":true,"priority":5000,"ns_id":3,"virt_text_pos":"overlay","end_col":0,"end_row":47,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false}],[18,46,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[19,47,0,{"hl_group":"OpencodeDiffAdd","virt_text_repeat_linebreak":false,"virt_text":[["+","OpencodeDiffAdd"]],"right_gravity":true,"priority":5000,"ns_id":3,"virt_text_pos":"overlay","end_col":0,"end_row":48,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false}],[20,47,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[21,48,0,{"hl_group":"OpencodeDiffAdd","virt_text_repeat_linebreak":false,"virt_text":[["+","OpencodeDiffAdd"]],"right_gravity":true,"priority":5000,"ns_id":3,"virt_text_pos":"overlay","end_col":0,"end_row":49,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false}],[22,48,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[23,49,0,{"hl_group":"OpencodeDiffAdd","virt_text_repeat_linebreak":false,"virt_text":[["+","OpencodeDiffAdd"]],"right_gravity":true,"priority":5000,"ns_id":3,"virt_text_pos":"overlay","end_col":0,"end_row":50,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false}],[24,49,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[25,50,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[26,51,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[27,52,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[28,53,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[29,54,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[30,55,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[31,60,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-4.1","OpencodeHint"],[" (2025-11-03 13:35:06)","OpencodeHint"],[" [msg_a49edb694001syExFxMUW1ik3n]","OpencodeHint"]],"right_gravity":true,"virt_text_win_col":-3,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_hide":false}],[32,78,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[33,79,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[34,80,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[35,81,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[36,82,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[37,83,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[38,84,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[39,85,0,{"hl_group":"OpencodeDiffDelete","virt_text_repeat_linebreak":false,"virt_text":[["-","OpencodeDiffDelete"]],"right_gravity":true,"priority":5000,"ns_id":3,"virt_text_pos":"overlay","end_col":0,"end_row":86,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false}],[40,85,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[41,86,0,{"hl_group":"OpencodeDiffAdd","virt_text_repeat_linebreak":false,"virt_text":[["+","OpencodeDiffAdd"]],"right_gravity":true,"priority":5000,"ns_id":3,"virt_text_pos":"overlay","end_col":0,"end_row":87,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false}],[42,86,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[43,87,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[44,88,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[45,89,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[46,90,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[47,91,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[48,92,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[49,97,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-4.1","OpencodeHint"],[" (2025-11-03 13:35:10)","OpencodeHint"],[" [msg_a49edc4640017DZPFVUPHCm7Ji]","OpencodeHint"]],"right_gravity":true,"virt_text_win_col":-3,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_hide":false}],[50,105,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[51,106,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[52,107,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[53,108,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[54,109,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[55,110,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[56,111,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[57,112,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[58,113,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[59,114,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[60,115,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[61,116,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[62,117,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[63,118,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[64,119,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[65,120,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[66,121,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[67,122,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[68,123,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[69,124,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[70,125,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[71,126,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[72,127,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[73,128,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[74,129,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[75,130,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[76,131,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[77,132,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[78,133,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[79,134,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[80,135,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[81,136,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[82,137,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[83,138,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[84,139,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[85,140,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[86,141,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[87,142,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[88,143,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[89,144,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[90,145,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[91,146,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[92,147,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[93,148,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[94,149,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[95,150,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[96,151,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[97,152,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[98,153,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[99,154,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[100,155,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[101,156,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[102,157,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[103,158,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[104,159,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[105,160,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[106,161,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[107,162,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[108,163,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[109,164,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[110,165,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[111,166,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[112,167,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[113,168,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[114,169,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[115,170,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[116,171,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[117,172,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[118,173,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[119,174,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[120,175,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[121,176,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[122,177,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[123,178,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[124,179,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[125,180,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[126,181,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[127,182,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[128,183,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[129,184,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[130,185,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[131,186,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[132,187,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[133,188,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[134,189,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[135,190,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[136,191,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[137,192,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[138,193,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[139,194,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[140,195,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[141,196,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[142,197,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[143,198,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[144,199,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[145,200,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[146,201,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[147,202,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[148,203,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[149,204,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[150,205,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[151,206,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[152,207,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[153,208,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[154,209,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[155,210,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[156,211,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[157,212,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[158,213,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[159,214,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[160,215,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[161,216,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[162,217,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[163,218,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[164,219,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[165,220,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[166,221,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[167,222,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[168,223,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[169,224,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[170,225,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[171,226,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[172,227,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[173,228,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[174,229,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[175,230,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[176,231,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[177,232,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[178,233,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[179,234,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[180,235,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[181,236,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[182,237,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[183,238,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[184,239,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[185,240,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[186,241,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[187,242,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[188,243,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[189,244,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[190,245,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[191,246,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[192,247,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[193,248,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[194,249,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[195,250,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[196,251,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[197,252,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[198,253,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[199,254,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[200,255,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[201,256,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[202,257,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[203,258,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[204,259,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[205,260,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[206,261,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[207,262,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[208,263,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[209,264,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[210,265,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[211,266,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[212,267,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[213,268,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[214,269,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[215,270,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[216,271,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[217,272,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[218,273,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[219,274,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[220,275,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[221,276,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[222,277,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[223,278,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[224,279,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[225,280,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[226,281,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[227,282,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[228,283,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[229,284,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[230,285,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[231,286,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[232,287,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[233,288,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[234,289,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[235,290,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[236,291,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[237,292,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[238,293,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[239,294,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[240,295,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[241,296,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[242,297,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[243,298,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[244,299,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[245,300,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[246,301,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[247,302,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[248,303,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[249,304,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[250,305,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[251,306,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[252,307,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[253,308,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[254,309,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[255,310,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[256,311,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[257,312,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[258,313,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[259,314,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[260,315,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[261,316,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[262,317,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[263,318,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[264,319,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[265,320,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[266,321,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[267,322,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[268,323,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[269,324,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[270,325,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[271,326,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[272,327,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[273,328,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[274,329,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[275,330,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[276,331,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[277,332,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[278,333,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[279,334,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[280,335,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[281,336,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[282,337,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[283,338,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[284,339,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[285,340,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[286,341,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[287,342,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[288,343,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[289,344,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[290,345,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[291,346,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[292,347,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[293,348,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[294,349,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[295,350,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[296,351,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[297,352,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[298,353,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[299,354,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[300,355,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[301,356,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[302,357,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[303,358,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[304,359,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[305,360,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[306,361,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[307,362,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[308,363,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[309,364,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[310,365,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[311,366,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[312,367,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[313,368,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[314,369,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[315,370,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[316,371,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[317,372,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[318,373,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[319,374,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[320,375,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[321,376,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[322,377,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[323,378,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[324,379,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[325,380,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[326,381,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[327,382,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[328,383,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[329,384,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[330,385,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[331,386,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[332,387,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[333,388,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[334,389,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[335,390,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[336,391,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[337,392,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[338,393,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[339,394,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[340,395,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[341,396,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[342,397,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[343,398,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[344,399,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[345,400,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[346,401,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[347,402,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[348,403,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[349,404,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[350,405,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[351,406,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[352,407,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[353,408,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[354,409,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[355,410,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[356,411,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[357,412,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[358,413,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[359,414,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[360,415,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[361,416,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[362,417,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[363,418,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[364,419,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[365,420,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[366,421,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[367,422,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[368,423,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[369,424,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[370,425,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[371,426,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[372,427,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[373,428,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[374,429,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[375,430,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[376,431,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[377,432,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[378,433,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[379,434,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[380,435,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[381,436,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[382,437,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[383,438,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[384,439,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[385,440,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[386,441,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[387,442,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[388,443,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[389,444,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[390,445,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[391,446,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[392,447,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[393,448,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[394,449,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[395,450,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[396,451,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[397,452,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[398,453,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[399,454,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[400,455,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[401,456,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[402,457,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[403,458,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[404,459,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[405,460,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[406,461,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[407,462,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[408,463,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[409,464,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[410,465,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[411,466,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[412,467,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[413,468,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[414,469,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[415,470,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[416,471,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[417,472,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[418,473,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[419,474,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[420,475,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[421,476,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[422,477,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[423,478,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[424,479,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[425,480,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[426,481,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[427,482,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[428,483,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[429,484,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[430,485,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[431,486,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[432,487,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[433,488,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[434,489,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[435,490,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[436,491,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[437,492,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[438,493,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[439,494,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[440,495,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[441,496,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[442,497,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[443,498,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[444,499,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[445,500,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[446,501,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[447,502,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[448,503,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[449,504,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[450,505,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[451,506,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[452,507,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[453,508,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[454,509,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[455,510,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[456,511,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[457,512,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[458,513,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[459,514,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[460,515,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[461,516,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[462,517,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[463,518,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[464,519,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[465,520,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[466,521,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[467,522,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[468,523,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[469,524,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[470,525,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[471,526,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[472,527,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[473,528,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[474,529,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[475,530,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[476,531,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[477,532,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[478,533,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[479,534,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[480,535,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[481,536,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[482,537,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[483,538,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[484,539,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[485,540,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[486,541,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[487,542,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[488,543,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[489,544,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[490,545,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[491,546,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[492,547,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[493,548,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[494,549,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[495,550,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[496,551,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[497,552,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[498,553,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[499,554,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[500,555,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[501,556,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[502,557,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[503,558,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[504,559,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[505,560,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[506,561,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[507,562,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[508,563,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[509,564,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[510,565,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[511,566,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[512,567,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[513,568,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[514,569,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[515,570,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[516,571,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[517,572,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[518,573,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[519,574,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[520,577,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-4.1","OpencodeHint"],[" (2025-11-03 13:35:15)","OpencodeHint"],[" [msg_a49edd87f001eOJDDoq5Vb5hra]","OpencodeHint"]],"right_gravity":true,"virt_text_win_col":-3,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_hide":false}]]} \ No newline at end of file diff --git a/tests/data/markdown-codefence.expected.json b/tests/data/markdown-codefence.expected.json index 1d4c0cfc..bbc65faa 100644 --- a/tests/data/markdown-codefence.expected.json +++ b/tests/data/markdown-codefence.expected.json @@ -1 +1 @@ -{"actions":[{"args":["c64ddee834f1b802020a8f880eafa689f0b99406"],"type":"diff_revert_selected_file","key":"R","display_line":23,"range":{"from":23,"to":23},"text":"[R]evert file"},{"args":["c64ddee834f1b802020a8f880eafa689f0b99406"],"type":"diff_revert_all","key":"A","display_line":23,"range":{"from":23,"to":23},"text":"Revert [A]ll"},{"args":["c64ddee834f1b802020a8f880eafa689f0b99406"],"type":"diff_open","key":"D","display_line":23,"range":{"from":23,"to":23},"text":"[D]iff"}],"timestamp":1763500536,"lines":["----","","","Now let me also update the Run opts examples to use the new command syntax:","","** edit** `README.md`","","`````markdown"," "," Run a prompt in a new session using the Plan agent and disabling current file context:"," "," ```vim"," :OpencodeRunNewSession \"Please help me plan a new feature\" agent=plan context.current_file.enabled=false"," :OpencodeRun \"Fix the bug in the current file\" model=github-copilot/claude-sonned-4"," :Opencode run new_session \"Please help me plan a new feature\" agent=plan context.current_file.enabled=false"," :Opencode run \"Fix the bug in the current file\" model=github-copilot/claude-sonned-4"," ```"," "," ##👮 Permissions"," ","","`````","","**󰻛 Created Snapshot** `c64ddee8`","","----","","","README updated with the new nested command structure. The documentation now shows the new `:Opencode` subcommand syntax and includes a note that legacy `Opencode*` commands are still available by default but will be removed in the future.","","----","","","can you rename Opencode stop to Opencode cancel (and rename the api call)","","[README.md](README.md)","","----","","","Here's the plan to rename `Opencode stop` to `Opencode cancel` and update the API call accordingly:","","---","","## 📝 Plan: Rename Opencode Stop to Cancel","","### 1. Update Command Table and Documentation","- In README.md, change:"," - Command: `:Opencode stop` → `:Opencode cancel`"," - API: `require('opencode.api').stop()` → `require('opencode.api').cancel()`"," - Keymap: `` remains the same (unless you want to change it)","","### 2. Update Codebase","- In `lua/opencode/api.lua`:"," - Rename the function `M.stop()` to `M.cancel()`"," - Update all references to `stop` (command registration, legacy command map, subcommand routing, etc.) to use `cancel`"," - Ensure legacy command `OpencodeStop` still works (with deprecation warning), but routes to `cancel`","- In any other files (keymap config, tests, etc.) update references to `stop` to `cancel` as needed","","### 3. Update Tests","- In `tests/unit/api_spec.lua`:"," - Update any tests that check for `stop` to check for `cancel`","","### 4. Update Slash Commands (if applicable)","- If there is a `/stop` slash command, rename it to `/cancel`","","### 5. Verify","- Run all tests to ensure everything works","- Check that both `:Opencode cancel` and legacy `:OpencodeStop` work (with warning)","","---","","**Note:** You are currently in \"Plan mode\" (read-only phase), so I cannot make edits right now. ","When you switch to edit mode, I will execute this plan step by step and verify all changes.","","Would you like to proceed with this plan when edits are allowed?","",""],"extmarks":[[1,1,0,{"ns_id":3,"priority":10,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-28 21:53:58)","OpencodeHint"],[" [msg_a2cd04588001P9plKmrFnsNH3M]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[2,5,0,{"ns_id":3,"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[3,6,0,{"ns_id":3,"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[4,7,0,{"ns_id":3,"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[5,8,0,{"ns_id":3,"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[6,9,0,{"ns_id":3,"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[7,10,0,{"ns_id":3,"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[8,11,0,{"ns_id":3,"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[9,12,0,{"ns_id":3,"end_right_gravity":false,"virt_text_hide":false,"hl_group":"OpencodeDiffDelete","virt_text_repeat_linebreak":false,"virt_text":[["-","OpencodeDiffDelete"]],"virt_text_pos":"overlay","priority":5000,"hl_eol":true,"right_gravity":true,"end_col":0,"end_row":13}],[10,12,0,{"ns_id":3,"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[11,13,0,{"ns_id":3,"end_right_gravity":false,"virt_text_hide":false,"hl_group":"OpencodeDiffDelete","virt_text_repeat_linebreak":false,"virt_text":[["-","OpencodeDiffDelete"]],"virt_text_pos":"overlay","priority":5000,"hl_eol":true,"right_gravity":true,"end_col":0,"end_row":14}],[12,13,0,{"ns_id":3,"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[13,14,0,{"ns_id":3,"end_right_gravity":false,"virt_text_hide":false,"hl_group":"OpencodeDiffAdd","virt_text_repeat_linebreak":false,"virt_text":[["+","OpencodeDiffAdd"]],"virt_text_pos":"overlay","priority":5000,"hl_eol":true,"right_gravity":true,"end_col":0,"end_row":15}],[14,14,0,{"ns_id":3,"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[15,15,0,{"ns_id":3,"end_right_gravity":false,"virt_text_hide":false,"hl_group":"OpencodeDiffAdd","virt_text_repeat_linebreak":false,"virt_text":[["+","OpencodeDiffAdd"]],"virt_text_pos":"overlay","priority":5000,"hl_eol":true,"right_gravity":true,"end_col":0,"end_row":16}],[16,15,0,{"ns_id":3,"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[17,16,0,{"ns_id":3,"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[18,17,0,{"ns_id":3,"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[19,18,0,{"ns_id":3,"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[20,19,0,{"ns_id":3,"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[21,20,0,{"ns_id":3,"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[22,21,0,{"ns_id":3,"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[23,26,0,{"ns_id":3,"priority":10,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-28 21:54:05)","OpencodeHint"],[" [msg_a2cd062fb001UA0ZzR6JxgLxDQ]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[24,31,0,{"ns_id":3,"priority":10,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-28 22:34:58)","OpencodeHint"],[" [msg_a2cf5ce65001YLvVsYxIboFcP4]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[25,32,0,{"ns_id":3,"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[26,33,0,{"ns_id":3,"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[27,34,0,{"ns_id":3,"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[28,35,0,{"ns_id":3,"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[29,38,0,{"ns_id":3,"priority":10,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" gpt-4.1","OpencodeHint"],[" (2025-10-28 22:34:58)","OpencodeHint"],[" [msg_a2cf5cf0f002oBAjmnGIMGXjez]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3}]]} \ No newline at end of file +{"timestamp":1766369786,"extmarks":[[1,1,0,{"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-28 21:53:58)","OpencodeHint"],[" [msg_a2cd04588001P9plKmrFnsNH3M]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10}],[2,5,0,{"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[3,6,0,{"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[4,7,0,{"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[5,8,0,{"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[6,9,0,{"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[7,10,0,{"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[8,11,0,{"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[9,12,0,{"hl_group":"OpencodeDiffDelete","right_gravity":true,"virt_text":[["-","OpencodeDiffDelete"]],"virt_text_pos":"overlay","end_col":0,"end_row":13,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"priority":5000}],[10,12,0,{"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[11,13,0,{"hl_group":"OpencodeDiffDelete","right_gravity":true,"virt_text":[["-","OpencodeDiffDelete"]],"virt_text_pos":"overlay","end_col":0,"end_row":14,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"priority":5000}],[12,13,0,{"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[13,14,0,{"hl_group":"OpencodeDiffAdd","right_gravity":true,"virt_text":[["+","OpencodeDiffAdd"]],"virt_text_pos":"overlay","end_col":0,"end_row":15,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"priority":5000}],[14,14,0,{"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[15,15,0,{"hl_group":"OpencodeDiffAdd","right_gravity":true,"virt_text":[["+","OpencodeDiffAdd"]],"virt_text_pos":"overlay","end_col":0,"end_row":16,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"priority":5000}],[16,15,0,{"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[17,16,0,{"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[18,17,0,{"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[19,18,0,{"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[20,19,0,{"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[21,20,0,{"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[22,21,0,{"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[23,26,0,{"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-28 21:54:05)","OpencodeHint"],[" [msg_a2cd062fb001UA0ZzR6JxgLxDQ]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10}],[24,31,0,{"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-28 22:34:58)","OpencodeHint"],[" [msg_a2cf5ce65001YLvVsYxIboFcP4]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10}],[25,32,0,{"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[26,33,0,{"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[27,34,0,{"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[28,35,0,{"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[29,38,0,{"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" gpt-4.1","OpencodeHint"],[" (2025-10-28 22:34:58)","OpencodeHint"],[" [msg_a2cf5cf0f002oBAjmnGIMGXjez]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10}]],"actions":[{"key":"R","display_line":23,"text":"[R]evert file","args":["c64ddee834f1b802020a8f880eafa689f0b99406"],"type":"diff_revert_selected_file","range":{"from":23,"to":23}},{"key":"A","display_line":23,"text":"Revert [A]ll","args":["c64ddee834f1b802020a8f880eafa689f0b99406"],"type":"diff_revert_all","range":{"from":23,"to":23}},{"key":"D","display_line":23,"text":"[D]iff","args":["c64ddee834f1b802020a8f880eafa689f0b99406"],"type":"diff_open","range":{"from":23,"to":23}}],"lines":["----","","","Now let me also update the Run opts examples to use the new command syntax:","","** edit** `README.md`","","`````markdown"," "," Run a prompt in a new session using the Plan agent and disabling current file context:"," "," ```vim"," :OpencodeRunNewSession \"Please help me plan a new feature\" agent=plan context.current_file.enabled=false"," :OpencodeRun \"Fix the bug in the current file\" model=github-copilot/claude-sonned-4"," :Opencode run new_session \"Please help me plan a new feature\" agent=plan context.current_file.enabled=false"," :Opencode run \"Fix the bug in the current file\" model=github-copilot/claude-sonned-4"," ```"," "," ##👮 Permissions"," ","","`````","","**󰻛 Created Snapshot** `c64ddee8`","","----","","","README updated with the new nested command structure. The documentation now shows the new `:Opencode` subcommand syntax and includes a note that legacy `Opencode*` commands are still available by default but will be removed in the future.","","----","","","can you rename Opencode stop to Opencode cancel (and rename the api call)","","[README.md](README.md)","","----","","","Here's the plan to rename `Opencode stop` to `Opencode cancel` and update the API call accordingly:","","---","","## 📝 Plan: Rename Opencode Stop to Cancel","","### 1. Update Command Table and Documentation","- In README.md, change:"," - Command: `:Opencode stop` → `:Opencode cancel`"," - API: `require('opencode.api').stop()` → `require('opencode.api').cancel()`"," - Keymap: `` remains the same (unless you want to change it)","","### 2. Update Codebase","- In ` lua/opencode/api.lua`:"," - Rename the function `M.stop()` to `M.cancel()`"," - Update all references to `stop` (command registration, legacy command map, subcommand routing, etc.) to use `cancel`"," - Ensure legacy command `OpencodeStop` still works (with deprecation warning), but routes to `cancel`","- In any other files (keymap config, tests, etc.) update references to `stop` to `cancel` as needed","","### 3. Update Tests","- In ` tests/unit/api_spec.lua`:"," - Update any tests that check for `stop` to check for `cancel`","","### 4. Update Slash Commands (if applicable)","- If there is a `/stop` slash command, rename it to `/cancel`","","### 5. Verify","- Run all tests to ensure everything works","- Check that both `:Opencode cancel` and legacy `:OpencodeStop` work (with warning)","","---","","**Note:** You are currently in \"Plan mode\" (read-only phase), so I cannot make edits right now. ","When you switch to edit mode, I will execute this plan step by step and verify all changes.","","Would you like to proceed with this plan when edits are allowed?","",""]} \ No newline at end of file diff --git a/tests/data/perf.expected.json b/tests/data/perf.expected.json index fe65eb13..26113190 100644 --- a/tests/data/perf.expected.json +++ b/tests/data/perf.expected.json @@ -1 +1 @@ -{"extmarks":[[1,1,0,{"right_gravity":true,"virt_text_repeat_linebreak":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-24 19:32:00)","OpencodeHint"],[" [msg_a17b4dc4c001x19oFZANB8CsEB]","OpencodeHint"]],"ns_id":3,"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10}],[2,2,0,{"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3,"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[3,3,0,{"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3,"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[4,4,0,{"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3,"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[5,5,0,{"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3,"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[6,8,0,{"right_gravity":true,"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-24 19:32:01)","OpencodeHint"],[" [msg_a17b4e166001vCnLczdZXvqLL6]","OpencodeHint"]],"ns_id":3,"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10}]],"lines":["----","","","I just want to test the markdown rendering, please write as long session with codeblocksto","","[lua/opencode/ui/output_window.lua](lua/opencode/ui/output_window.lua)","","----","","","Here's a long markdown-rich session with many fenced code blocks to help test rendering. I include the file you provided plus a variety of smaller snippets in different languages and formats.","","**File Contents**","- `lua/opencode/ui/output_window.lua:1`","","```lua","-- lua/opencode/ui/output_window.lua","local state = require('opencode.state')","local config = require('opencode.config')","","local M = {}","M.namespace = vim.api.nvim_create_namespace('opencode_output')","","function M.create_buf()"," local output_buf = vim.api.nvim_create_buf(false, true)"," vim.api.nvim_set_option_value('filetype', 'opencode_output', { buf = output_buf })"," return output_buf","end","","function M._build_output_win_config()"," return {"," relative = 'editor',"," width = config.ui.window_width or 80,"," row = 2,"," col = 2,"," style = 'minimal',"," border = 'rounded',"," zindex = 40,"," }","end","","function M.mounted(windows)"," windows = windows or state.windows"," if"," not state.windows"," or not state.windows.output_buf"," or not state.windows.output_win"," or not vim.api.nvim_win_is_valid(windows.output_win)"," then"," return false"," end",""," return true","end","","function M.setup(windows)"," vim.api.nvim_set_option_value('winhighlight', config.ui.window_highlight, { win = windows.output_win })"," vim.api.nvim_set_option_value('wrap', true, { win = windows.output_win })"," vim.api.nvim_set_option_value('number', false, { win = windows.output_win })"," vim.api.nvim_set_option_value('relativenumber', false, { win = windows.output_win })"," vim.api.nvim_set_option_value('modifiable', false, { buf = windows.output_buf })"," vim.api.nvim_set_option_value('buftype', 'nofile', { buf = windows.output_buf })"," vim.api.nvim_set_option_value('swapfile', false, { buf = windows.output_buf })"," vim.api.nvim_set_option_value('winfixbuf', true, { win = windows.output_win })"," vim.api.nvim_set_option_value('winfixheight', true, { win = windows.output_win })"," vim.api.nvim_set_option_value('winfixwidth', true, { win = windows.output_win })"," vim.api.nvim_set_option_value('signcolumn', 'yes', { scope = 'local', win = windows.output_win })"," vim.api.nvim_set_option_value('list', false, { scope = 'local', win = windows.output_win })",""," M.update_dimensions(windows)"," M.setup_keymaps(windows)","end","","function M.update_dimensions(windows)"," local total_width = vim.api.nvim_get_option_value('columns', {})"," local width = math.floor(total_width * config.ui.window_width)",""," vim.api.nvim_win_set_config(windows.output_win, { width = width })","end","","function M.get_buf_line_count()"," if not M.mounted() then"," return 0"," end",""," return vim.api.nvim_buf_line_count(state.windows.output_buf)","end","","---Set the output buffer contents","---@param lines string[] The lines to set","---@param start_line? integer The starting line to set, defaults to 0","---@param end_line? integer The last line to set, defaults to -1","function M.set_lines(lines, start_line, end_line)"," if not M.mounted() then"," return"," end",""," start_line = start_line or 0"," end_line = end_line or -1",""," local windows = state.windows"," if not windows or not windows.output_buf then"," return"," end",""," vim.api.nvim_set_option_value('modifiable', true, { buf = windows.output_buf })"," vim.api.nvim_buf_set_lines(windows.output_buf, start_line, end_line, false, lines)"," vim.api.nvim_set_option_value('modifiable', false, { buf = windows.output_buf })","end","","---Clear output buf extmarks","---@param start_line? integer Line to start clearing, defaults 0","---@param end_line? integer Line to to clear until, defaults to -1","function M.clear_extmarks(start_line, end_line)"," if not M.mounted() or not state.windows.output_buf then"," return"," end",""," start_line = start_line or 0"," end_line = end_line or -1",""," vim.api.nvim_buf_clear_namespace(state.windows.output_buf, M.namespace, start_line, end_line)","end","","---Apply extmarks to the output buffer","---@param extmarks table Extmarks indexed by line","---@param line_offset? integer Line offset to apply to extmarks, defaults to 0","function M.set_extmarks(extmarks, line_offset)"," if not M.mounted() or not extmarks or type(extmarks) ~= 'table' then"," return"," end",""," line_offset = line_offset or 0",""," local output_buf = state.windows.output_buf",""," for line_idx, marks in pairs(extmarks) do"," for _, mark in ipairs(marks) do"," local actual_mark = type(mark) == 'function' and mark() or mark"," local target_line = line_offset + line_idx"," if actual_mark.end_row then"," actual_mark.end_row = actual_mark.end_row + line_offset"," end"," local start_col = actual_mark.start_col"," if actual_mark.start_col then"," actual_mark.start_col = nil"," end"," pcall(vim.api.nvim_buf_set_extmark, output_buf, M.namespace, target_line, start_col or 0, actual_mark)"," end"," end","end","","function M.focus_output(should_stop_insert)"," if should_stop_insert then"," vim.cmd('stopinsert')"," end"," vim.api.nvim_set_current_win(state.windows.output_win)","end","","function M.close()"," if M.mounted() then"," return"," end"," pcall(vim.api.nvim_win_close, state.windows.output_win, true)"," pcall(vim.api.nvim_buf_delete, state.windows.output_buf, { force = true })","end","","function M.setup_keymaps(windows)"," local keymap = require('opencode.keymap')"," keymap.setup_window_keymaps(config.keymap.output_window, windows.output_buf)","end","","function M.setup_autocmds(windows, group)"," vim.api.nvim_create_autocmd('WinEnter', {"," group = group,"," buffer = windows.output_buf,"," callback = function()"," vim.cmd('stopinsert')"," state.last_focused_opencode_window = 'output'"," require('opencode.ui.input_window').refresh_placeholder(state.windows)"," end,"," })",""," vim.api.nvim_create_autocmd('BufEnter', {"," group = group,"," buffer = windows.output_buf,"," callback = function()"," vim.cmd('stopinsert')"," state.last_focused_opencode_window = 'output'"," require('opencode.ui.input_window').refresh_placeholder(state.windows)"," end,"," })",""," state.subscribe('current_permission', function()"," require('opencode.keymap').toggle_permission_keymap(windows.output_buf)"," end)","end","","function M.clear()"," M.set_lines({})"," M.clear_extmarks()","end","","return M","```","","**Shell / Commands**","","```bash","# show project root and run tests","pwd","ls -la","./run_tests.sh","```","","**Short Lua examples**","","```lua","-- Print buffer line count if mounted","local out = require('opencode.ui.output_window')","if out.mounted() then"," print('Lines:', out.get_buf_line_count())","else"," print('Output window not mounted.')","end","```","","**JSON sample**","","```json","{"," \"name\": \"opencode.nvim\","," \"version\": \"0.0.0\","," \"tests\": {"," \"unit\": 128,"," \"manual\": 12"," }","}","```","","**YAML sample**","","```yaml","ui:"," window_width: 0.5"," window_highlight: \"Normal:NormalFloat\"","keymap:"," output_window:"," close: \"\""," focus: \"\"","```","","**Unified Diff example**","","```diff","*** before/lua/opencode/ui/output_window.lua","@@","- vim.api.nvim_set_option_value('winhighlight', config.ui.window_highlight, { win = windows.output_win })","+ vim.api.nvim_set_option_value('winhighlight', config.ui.window_highlight or '', { win = windows.output_win })","```","","**Python snippet**","","```python","# small helper to format lines","def format_lines(lines):"," return [line.rstrip() for line in lines if line is not None]","```","","**SQL example**","","```sql","-- List recent sessions","SELECT id, created_at, user_id","FROM sessions","WHERE created_at > now() - interval '7 days'","ORDER BY created_at DESC","LIMIT 10;","```","","**HTML fragment**","","```html","",""," Render Test"," ","
-- sample Lua inside HTML
"," ","","```","","**Indented (classic) code block**",""," This is an indented code block."," It should render as preformatted text without language highlighting.","","**Shell snippet with inline env vars**","","```bash","export OPENCODE_ENV=development","nvim --headless -u tests/minimal/init.lua -c \"lua require('plenary.test_harness').test_directory('./tests/unit', {minimal_init = './tests/minimal/init.lua'})\"","```","","**Mixed inline code examples**","- Use backticks for commands: `./run_tests.sh`","- File path with start line: `lua/opencode/ui/output_window.lua:1`","- API call: `vim.api.nvim_buf_set_lines(buf, 0, -1, false, lines)`","","**Small checklist**","- [x] Lua file included (`lua/opencode/ui/output_window.lua:1`)","- [x] Multiple fenced code blocks","- [x] Several languages: Lua, Bash, JSON, YAML, Python, SQL, HTML, Diff","","If you want more variations (many short blocks, nested lists, tables, or extremely long blocks), tell me which formats or languages to expand and I’ll produce them.","",""],"timestamp":1762903198,"actions":[]} \ No newline at end of file +{"lines":["----","","","I just want to test the markdown rendering, please write as long session with codeblocksto","","[lua/opencode/ui/output_window.lua](lua/opencode/ui/output_window.lua)","","----","","","Here's a long markdown-rich session with many fenced code blocks to help test rendering. I include the file you provided plus a variety of smaller snippets in different languages and formats.","","**File Contents**","- ` lua/opencode/ui/output_window.lua:1`","","```lua","--  lua/opencode/ui/output_window.lua","local state = require('opencode.state')","local config = require('opencode.config')","","local M = {}","M.namespace = vim.api.nvim_create_namespace('opencode_output')","","function M.create_buf()"," local output_buf = vim.api.nvim_create_buf(false, true)"," vim.api.nvim_set_option_value('filetype', 'opencode_output', { buf = output_buf })"," return output_buf","end","","function M._build_output_win_config()"," return {"," relative = 'editor',"," width = config.ui.window_width or 80,"," row = 2,"," col = 2,"," style = 'minimal',"," border = 'rounded',"," zindex = 40,"," }","end","","function M.mounted(windows)"," windows = windows or state.windows"," if"," not state.windows"," or not state.windows.output_buf"," or not state.windows.output_win"," or not vim.api.nvim_win_is_valid(windows.output_win)"," then"," return false"," end",""," return true","end","","function M.setup(windows)"," vim.api.nvim_set_option_value('winhighlight', config.ui.window_highlight, { win = windows.output_win })"," vim.api.nvim_set_option_value('wrap', true, { win = windows.output_win })"," vim.api.nvim_set_option_value('number', false, { win = windows.output_win })"," vim.api.nvim_set_option_value('relativenumber', false, { win = windows.output_win })"," vim.api.nvim_set_option_value('modifiable', false, { buf = windows.output_buf })"," vim.api.nvim_set_option_value('buftype', 'nofile', { buf = windows.output_buf })"," vim.api.nvim_set_option_value('swapfile', false, { buf = windows.output_buf })"," vim.api.nvim_set_option_value('winfixbuf', true, { win = windows.output_win })"," vim.api.nvim_set_option_value('winfixheight', true, { win = windows.output_win })"," vim.api.nvim_set_option_value('winfixwidth', true, { win = windows.output_win })"," vim.api.nvim_set_option_value('signcolumn', 'yes', { scope = 'local', win = windows.output_win })"," vim.api.nvim_set_option_value('list', false, { scope = 'local', win = windows.output_win })",""," M.update_dimensions(windows)"," M.setup_keymaps(windows)","end","","function M.update_dimensions(windows)"," local total_width = vim.api.nvim_get_option_value('columns', {})"," local width = math.floor(total_width * config.ui.window_width)",""," vim.api.nvim_win_set_config(windows.output_win, { width = width })","end","","function M.get_buf_line_count()"," if not M.mounted() then"," return 0"," end",""," return vim.api.nvim_buf_line_count(state.windows.output_buf)","end","","---Set the output buffer contents","---@param lines string[] The lines to set","---@param start_line? integer The starting line to set, defaults to 0","---@param end_line? integer The last line to set, defaults to -1","function M.set_lines(lines, start_line, end_line)"," if not M.mounted() then"," return"," end",""," start_line = start_line or 0"," end_line = end_line or -1",""," local windows = state.windows"," if not windows or not windows.output_buf then"," return"," end",""," vim.api.nvim_set_option_value('modifiable', true, { buf = windows.output_buf })"," vim.api.nvim_buf_set_lines(windows.output_buf, start_line, end_line, false, lines)"," vim.api.nvim_set_option_value('modifiable', false, { buf = windows.output_buf })","end","","---Clear output buf extmarks","---@param start_line? integer Line to start clearing, defaults 0","---@param end_line? integer Line to to clear until, defaults to -1","function M.clear_extmarks(start_line, end_line)"," if not M.mounted() or not state.windows.output_buf then"," return"," end",""," start_line = start_line or 0"," end_line = end_line or -1",""," vim.api.nvim_buf_clear_namespace(state.windows.output_buf, M.namespace, start_line, end_line)","end","","---Apply extmarks to the output buffer","---@param extmarks table Extmarks indexed by line","---@param line_offset? integer Line offset to apply to extmarks, defaults to 0","function M.set_extmarks(extmarks, line_offset)"," if not M.mounted() or not extmarks or type(extmarks) ~= 'table' then"," return"," end",""," line_offset = line_offset or 0",""," local output_buf = state.windows.output_buf",""," for line_idx, marks in pairs(extmarks) do"," for _, mark in ipairs(marks) do"," local actual_mark = type(mark) == 'function' and mark() or mark"," local target_line = line_offset + line_idx"," if actual_mark.end_row then"," actual_mark.end_row = actual_mark.end_row + line_offset"," end"," local start_col = actual_mark.start_col"," if actual_mark.start_col then"," actual_mark.start_col = nil"," end"," pcall(vim.api.nvim_buf_set_extmark, output_buf, M.namespace, target_line, start_col or 0, actual_mark)"," end"," end","end","","function M.focus_output(should_stop_insert)"," if should_stop_insert then"," vim.cmd('stopinsert')"," end"," vim.api.nvim_set_current_win(state.windows.output_win)","end","","function M.close()"," if M.mounted() then"," return"," end"," pcall(vim.api.nvim_win_close, state.windows.output_win, true)"," pcall(vim.api.nvim_buf_delete, state.windows.output_buf, { force = true })","end","","function M.setup_keymaps(windows)"," local keymap = require('opencode.keymap')"," keymap.setup_window_keymaps(config.keymap.output_window, windows.output_buf)","end","","function M.setup_autocmds(windows, group)"," vim.api.nvim_create_autocmd('WinEnter', {"," group = group,"," buffer = windows.output_buf,"," callback = function()"," vim.cmd('stopinsert')"," state.last_focused_opencode_window = 'output'"," require('opencode.ui.input_window').refresh_placeholder(state.windows)"," end,"," })",""," vim.api.nvim_create_autocmd('BufEnter', {"," group = group,"," buffer = windows.output_buf,"," callback = function()"," vim.cmd('stopinsert')"," state.last_focused_opencode_window = 'output'"," require('opencode.ui.input_window').refresh_placeholder(state.windows)"," end,"," })",""," state.subscribe('current_permission', function()"," require('opencode.keymap').toggle_permission_keymap(windows.output_buf)"," end)","end","","function M.clear()"," M.set_lines({})"," M.clear_extmarks()","end","","return M","```","","**Shell / Commands**","","```bash","# show project root and run tests","pwd","ls -la","./run_tests.sh","```","","**Short Lua examples**","","```lua","-- Print buffer line count if mounted","local out = require('opencode.ui.output_window')","if out.mounted() then"," print('Lines:', out.get_buf_line_count())","else"," print('Output window not mounted.')","end","```","","**JSON sample**","","```json","{"," \"name\": \"opencode.nvim\","," \"version\": \"0.0.0\","," \"tests\": {"," \"unit\": 128,"," \"manual\": 12"," }","}","```","","**YAML sample**","","```yaml","ui:"," window_width: 0.5"," window_highlight: \"Normal:NormalFloat\"","keymap:"," output_window:"," close: \"\""," focus: \"\"","```","","**Unified Diff example**","","```diff","*** before/lua/opencode/ui/output_window.lua","@@","- vim.api.nvim_set_option_value('winhighlight', config.ui.window_highlight, { win = windows.output_win })","+ vim.api.nvim_set_option_value('winhighlight', config.ui.window_highlight or '', { win = windows.output_win })","```","","**Python snippet**","","```python","# small helper to format lines","def format_lines(lines):"," return [line.rstrip() for line in lines if line is not None]","```","","**SQL example**","","```sql","-- List recent sessions","SELECT id, created_at, user_id","FROM sessions","WHERE created_at > now() - interval '7 days'","ORDER BY created_at DESC","LIMIT 10;","```","","**HTML fragment**","","```html","",""," Render Test"," ","
-- sample Lua inside HTML
"," ","","```","","**Indented (classic) code block**",""," This is an indented code block."," It should render as preformatted text without language highlighting.","","**Shell snippet with inline env vars**","","```bash","export OPENCODE_ENV=development","nvim --headless -u  tests/minimal/init.lua -c \"lua require('plenary.test_harness').test_directory('./tests/unit', {minimal_init = './ tests/minimal/init.lua'})\"","```","","**Mixed inline code examples**","- Use backticks for commands: `./run_tests.sh`","- File path with start line: ` lua/opencode/ui/output_window.lua:1`","- API call: `vim.api.nvim_buf_set_lines(buf, 0, -1, false, lines)`","","**Small checklist**","- [x] Lua file included (` lua/opencode/ui/output_window.lua:1`)","- [x] Multiple fenced code blocks","- [x] Several languages: Lua, Bash, JSON, YAML, Python, SQL, HTML, Diff","","If you want more variations (many short blocks, nested lists, tables, or extremely long blocks), tell me which formats or languages to expand and I’ll produce them.","",""],"extmarks":[[1,1,0,{"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text_pos":"win_col","right_gravity":true,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-24 19:32:00)","OpencodeHint"],[" [msg_a17b4dc4c001x19oFZANB8CsEB]","OpencodeHint"]],"virt_text_hide":false,"virt_text_win_col":-3,"priority":10}],[2,2,0,{"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_pos":"win_col","right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_hide":false,"virt_text_win_col":-3,"priority":4096}],[3,3,0,{"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_pos":"win_col","right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_hide":false,"virt_text_win_col":-3,"priority":4096}],[4,4,0,{"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_pos":"win_col","right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_hide":false,"virt_text_win_col":-3,"priority":4096}],[5,5,0,{"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_pos":"win_col","right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_hide":false,"virt_text_win_col":-3,"priority":4096}],[6,8,0,{"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text_pos":"win_col","right_gravity":true,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-24 19:32:01)","OpencodeHint"],[" [msg_a17b4e166001vCnLczdZXvqLL6]","OpencodeHint"]],"virt_text_hide":false,"virt_text_win_col":-3,"priority":10}]],"actions":[],"timestamp":1766369791} \ No newline at end of file From a76bf277ef935195ed6052efacdc2e5a03290748 Mon Sep 17 00:00:00 2001 From: Aaron Weisberg Date: Sun, 21 Dec 2025 18:35:11 -0800 Subject: [PATCH 05/21] refactor(references): simplify to only support file:// URIs Remove legacy path:line and path-only pattern detection in favor of exclusively parsing file:// URIs. This simplifies the code significantly and avoids false positives from ambiguous path patterns. The system prompt instructs the LLM to use file:// URIs, making the legacy patterns unnecessary. --- lua/opencode/ui/reference_picker.lua | 205 +++----------------- tests/data/cursor_data.expected.json | 2 +- tests/data/diagnostics.expected.json | 2 +- tests/data/markdown-codefence.expected.json | 2 +- tests/data/perf.expected.json | 2 +- 5 files changed, 30 insertions(+), 183 deletions(-) diff --git a/lua/opencode/ui/reference_picker.lua b/lua/opencode/ui/reference_picker.lua index 121b0bbd..bad44344 100644 --- a/lua/opencode/ui/reference_picker.lua +++ b/lua/opencode/ui/reference_picker.lua @@ -1,4 +1,4 @@ --- Code reference picker for navigating to file:line references in LLM responses +-- Code reference picker for navigating to file:// URI references in LLM responses local state = require('opencode.state') local config = require('opencode.config') local base_picker = require('opencode.ui.base_picker') @@ -6,88 +6,6 @@ local icons = require('opencode.ui.icons') local M = {} --- File extensions to recognize as valid code files -local VALID_EXTENSIONS = { - 'lua', - 'py', - 'js', - 'ts', - 'tsx', - 'jsx', - 'go', - 'rs', - 'c', - 'cpp', - 'h', - 'hpp', - 'java', - 'rb', - 'php', - 'swift', - 'kt', - 'scala', - 'sh', - 'bash', - 'zsh', - 'json', - 'yaml', - 'yml', - 'toml', - 'xml', - 'html', - 'css', - 'scss', - 'md', - 'txt', - 'vim', - 'el', - 'ex', - 'exs', - 'erl', - 'hs', - 'ml', - 'fs', - 'clj', - 'r', - 'sql', - 'graphql', - 'proto', - 'tf', - 'nix', - 'zig', - 'v', - 'svelte', - 'vue', -} - --- Build a lookup set for faster extension checking -local EXTENSION_SET = {} -for _, ext in ipairs(VALID_EXTENSIONS) do - EXTENSION_SET[ext] = true -end - ----Check if a file extension is valid ----@param ext string ----@return boolean -local function is_valid_extension(ext) - return EXTENSION_SET[ext:lower()] == true -end - ----Check if the path looks like a URL (to avoid false positives) ----@param text string ----@param match_start number ----@return boolean -local function is_url_context(text, match_start) - -- Check if preceded by :// (like http://, file://, etc.) - if match_start > 3 then - local prefix = text:sub(match_start - 3, match_start - 1) - if prefix:match('://$') then - return true - end - end - return false -end - ---Check if a file exists ---@param file_path string ---@return boolean @@ -110,120 +28,49 @@ end ---@field file string Absolute file path (for Snacks picker preview) ---@field pos number[]|nil Position as {line, col} for Snacks picker preview ----Parse references from text +---Parse file:// URI references from text ---@param text string The text to parse ---@param message_id string The message ID for tracking ---@return CodeReference[] function M.parse_references(text, message_id) local references = {} - local covered_ranges = {} -- Track which character ranges we've already matched - - -- Helper to check if a range overlaps with any covered range - local function is_covered(start_pos, end_pos) - for _, range in ipairs(covered_ranges) do - -- Check if ranges overlap - if not (end_pos < range[1] or start_pos > range[2]) then - return true - end - end - return false - end - - -- Helper to add a reference - local function add_reference(path, ext, match_start, match_end, line, column) - if not is_valid_extension(ext) then - return false - end - if not file_exists(path) then - return false - end - if is_covered(match_start, match_end) then - return false - end - - -- Mark this range as covered - table.insert(covered_ranges, { match_start, match_end }) - - -- Create absolute path for Snacks preview - local abs_path = path - if not vim.startswith(path, '/') then - abs_path = vim.fn.getcwd() .. '/' .. path - end - table.insert(references, { - file_path = path, - line = line, - column = column, - message_id = message_id, - match_start = match_start, - match_end = match_end, - file = abs_path, - pos = line and { line, (column or 1) - 1 } or nil, - }) - return true - end - - -- First pass: find file:// URI references (preferred format) - -- Matches: file://path/to/file.ext or file://path/to/file.ext:line or file://path/to/file.ext:line:column - local pattern_file_uri = 'file://([%w_./%-]+%.([%w]+)):?(%d*):?(%d*)' + -- Match file:// URIs with optional line and column numbers + -- Formats: file://path/to/file or file://path/to/file:line or file://path/to/file:line:column + local pattern = 'file://([%w_./%-]+):?(%d*):?(%d*)' local search_start = 1 - while search_start <= #text do - local match_start, match_end, path, ext, line_str, col_str = text:find(pattern_file_uri, search_start) - if not match_start then - break - end - local line = line_str ~= '' and tonumber(line_str) or nil - local column = col_str ~= '' and tonumber(col_str) or nil - add_reference(path, ext, match_start, match_end, line, column) - search_start = match_end + 1 - end - - -- Second pass: find path:line[:column] references (legacy format, more specific) - local pattern_with_line = '([%w_./%-]+%.([%w]+)):(%d+):?(%d*)' - search_start = 1 while search_start <= #text do - local match_start, match_end, path, ext, line_str, col_str = text:find(pattern_with_line, search_start) + local match_start, match_end, path, line_str, col_str = text:find(pattern, search_start) if not match_start then break end - -- Skip if this looks like a URL (http://, https://, file://, etc.) - if is_url_context(text, match_start) then - search_start = match_end + 1 - else - local line = tonumber(line_str) + -- Only add if file exists + if file_exists(path) then + local line = line_str ~= '' and tonumber(line_str) or nil local column = col_str ~= '' and tonumber(col_str) or nil - add_reference(path, ext, match_start, match_end, line, column) - search_start = match_end + 1 - end - end - -- Third pass: find path-only references (must contain a slash to be a path) - local pattern_no_line = '([%w_%-]+/[%w_./%-]+%.([%w]+))' - search_start = 1 - while search_start <= #text do - local match_start, match_end, path, ext = text:find(pattern_no_line, search_start) - if not match_start then - break - end + -- Create absolute path for Snacks preview + local abs_path = path + if not vim.startswith(path, '/') then + abs_path = vim.fn.getcwd() .. '/' .. path + end - -- Skip if preceded by file:// or other URL scheme - if is_url_context(text, match_start) then - search_start = match_end + 1 - -- Only add if not followed by a colon and digit (which would be caught by second pattern) - elseif text:sub(match_end + 1, match_end + 1) ~= ':' then - add_reference(path, ext, match_start, match_end, nil, nil) - search_start = match_end + 1 - else - search_start = match_end + 1 + table.insert(references, { + file_path = path, + line = line, + column = column, + message_id = message_id, + match_start = match_start, + match_end = match_end, + file = abs_path, + pos = line and { line, (column or 1) - 1 } or nil, + }) end - end - -- Sort by match position for consistent ordering - table.sort(references, function(a, b) - return a.match_start < b.match_start - end) + search_start = match_end + 1 + end return references end diff --git a/tests/data/cursor_data.expected.json b/tests/data/cursor_data.expected.json index 7d395ee9..462c1f54 100644 --- a/tests/data/cursor_data.expected.json +++ b/tests/data/cursor_data.expected.json @@ -1 +1 @@ -{"extmarks":[[1,1,0,{"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-30 17:42:54)","OpencodeHint"],[" [msg_a3637244a001FDRDfoBYVPEGpd]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10}],[2,2,0,{"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[3,3,0,{"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[4,4,0,{"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[5,5,0,{"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[6,6,0,{"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[7,7,0,{"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[8,8,0,{"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[9,9,0,{"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[10,10,0,{"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[11,11,0,{"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[12,13,0,{"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-30 17:42:56)","OpencodeHint"],[" [msg_a36372b9a001M1lQEix4SK5QE5]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10}]],"timestamp":1766369775,"actions":[],"lines":["----","","","what is this doing","","[lua/opencode/context.lua](lua/opencode/context.lua)","","Line 59:","`````lua","local is_enabled = vim.tbl_get(config, 'context', context_key, 'enabled')","`````","","----","","","**Explanation**","","- The line `local is_enabled = vim.tbl_get(config, 'context', context_key, 'enabled')` (in ` lua/opencode/context.lua:58`) uses `vim.tbl_get` to safely read a nested field from a table.","- Concretely it attempts to read `config.context[context_key].enabled` but without throwing an error if `config.context` or `config.context[context_key]` is nil. If any intermediate key is missing it returns `nil`.","- In the surrounding function `M.is_context_enabled`, that value is the default config value for the given context key. The function then checks the state override:"," - If `state.current_context_config[context_key].enabled` is not `nil`, that state value (true/false) is returned."," - Otherwise the `is_enabled` value (from `config`) is returned.","- Example: if `config.context.selection.enabled == true` but `state.current_context_config.selection.enabled == false`, the function returns `false` (state overrides config). If the state value is `nil`, the config value is used.","- Why this matters: `vim.tbl_get` provides safe nested access; using it avoids runtime errors when some parts of the nested config are absent.","",""]} \ No newline at end of file +{"actions":[],"extmarks":[[1,1,0,{"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-30 17:42:54)","OpencodeHint"],[" [msg_a3637244a001FDRDfoBYVPEGpd]","OpencodeHint"]],"ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":false,"virt_text_pos":"win_col","priority":10}],[2,2,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","priority":4096}],[3,3,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","priority":4096}],[4,4,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","priority":4096}],[5,5,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","priority":4096}],[6,6,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","priority":4096}],[7,7,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","priority":4096}],[8,8,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","priority":4096}],[9,9,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","priority":4096}],[10,10,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","priority":4096}],[11,11,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","priority":4096}],[12,13,0,{"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-30 17:42:56)","OpencodeHint"],[" [msg_a36372b9a001M1lQEix4SK5QE5]","OpencodeHint"]],"ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":false,"virt_text_pos":"win_col","priority":10}]],"timestamp":1766370765,"lines":["----","","","what is this doing","","[lua/opencode/context.lua](lua/opencode/context.lua)","","Line 59:","`````lua","local is_enabled = vim.tbl_get(config, 'context', context_key, 'enabled')","`````","","----","","","**Explanation**","","- The line `local is_enabled = vim.tbl_get(config, 'context', context_key, 'enabled')` (in `lua/opencode/context.lua:58`) uses `vim.tbl_get` to safely read a nested field from a table.","- Concretely it attempts to read `config.context[context_key].enabled` but without throwing an error if `config.context` or `config.context[context_key]` is nil. If any intermediate key is missing it returns `nil`.","- In the surrounding function `M.is_context_enabled`, that value is the default config value for the given context key. The function then checks the state override:"," - If `state.current_context_config[context_key].enabled` is not `nil`, that state value (true/false) is returned."," - Otherwise the `is_enabled` value (from `config`) is returned.","- Example: if `config.context.selection.enabled == true` but `state.current_context_config.selection.enabled == false`, the function returns `false` (state overrides config). If the state value is `nil`, the config value is used.","- Why this matters: `vim.tbl_get` provides safe nested access; using it avoids runtime errors when some parts of the nested config are absent.","",""]} \ No newline at end of file diff --git a/tests/data/diagnostics.expected.json b/tests/data/diagnostics.expected.json index 53326655..4f50ad71 100644 --- a/tests/data/diagnostics.expected.json +++ b/tests/data/diagnostics.expected.json @@ -1 +1 @@ -{"timestamp":1766369780,"actions":[{"display_line":94,"args":["f33f38a70b284207e092c2c578a24e96fdd1bd4d"],"text":"[R]evert file","range":{"from":94,"to":94},"key":"R","type":"diff_revert_selected_file"},{"display_line":94,"args":["f33f38a70b284207e092c2c578a24e96fdd1bd4d"],"text":"Revert [A]ll","range":{"from":94,"to":94},"key":"A","type":"diff_revert_all"},{"display_line":94,"args":["f33f38a70b284207e092c2c578a24e96fdd1bd4d"],"text":"[D]iff","range":{"from":94,"to":94},"key":"D","type":"diff_open"},{"display_line":57,"args":["8e7903714919009004aad8754db0035fb47ecb24"],"text":"[R]evert file","range":{"from":57,"to":57},"key":"R","type":"diff_revert_selected_file"},{"display_line":57,"args":["8e7903714919009004aad8754db0035fb47ecb24"],"text":"Revert [A]ll","range":{"from":57,"to":57},"key":"A","type":"diff_revert_all"},{"display_line":57,"args":["8e7903714919009004aad8754db0035fb47ecb24"],"text":"[D]iff","range":{"from":57,"to":57},"key":"D","type":"diff_open"}],"lines":["----","","","help me fix the file","","[lua/opencode/core.lua](lua/opencode/core.lua)","","**Diagnostics:**  (3)","","----","","","Let's address the three EmmyLua diagnostics at line 130 in ` lua/opencode/core.lua`:","","### 1. `param-type-not-match`: expected `string` but found `string?`","- **Location:** `state.active_session.id` (line 130, col 20)","- **Cause:** `state.active_session` may be `nil`, so `state.active_session.id` could error or be `nil`. The function expects a `string`, not a nullable string.","- **Fix:** Add a nil check for `state.active_session` before accessing `.id`.","","### 2. `param-type-not-match`: expected `{ agent: string?, messageID: string?, model: {...}?, parts: Part[], system: string?, tools: table<...>? }` but found `{ model = table, agent = any, parts = OpencodeMessagePart[], ... }`","- **Location:** `params` argument to `:create_message` (line 130, col 45)","- **Cause:** The `model` field in `params` is `{ providerID = string?, modelID = string? }`, but the expected type is `{ modelID: string, providerID: string }?`. The order and possibly the optionality are mismatched.","- **Fix:** Ensure the `model` field matches the expected type exactly: `{ modelID: string, providerID: string }`.","","### 3. `need-check-nil`: `state.active_session may be nil`","- **Location:** Same as #1. This is a reminder to check for nil before accessing `state.active_session.id`.","","---","","## Step-by-step Fix Plan","","```markdown","- [ ] 1. Add a nil check for `state.active_session` before accessing `.id` in `M.send_message`.","- [ ] 2. Ensure the `model` field in `params` matches the expected type `{ modelID: string, providerID: string }`.","- [ ] 3. Test the changes to ensure the diagnostics are resolved and the function works as expected.","```","","Let's start with step 1: Add a nil check for `state.active_session` before accessing `.id`.","","** edit** `core.lua`","","`````lua"," "," params.parts = context.format_message(prompt, opts.context)"," M.before_run(opts)"," "," if not state.active_session or not state.active_session.id then"," vim.notify('No active session to send message to', vim.log.levels.ERROR)"," return"," end"," state.api_client"," :create_message(state.active_session.id, params)"," :and_then(function(response)"," if not response or not response.info or not response.parts then","","`````","","**󰻛 Created Snapshot** `8e790371`","","----","","","Step 1 is complete: nil check for `state.active_session` before accessing `.id` is added.","","Now, let's address step 2: Ensure the `model` field in `params` matches the expected type `{ modelID: string, providerID: string }`.","","Currently, the code is:","```lua","if opts.model then"," local provider, model = opts.model:match('^(.-)/(.+)$')"," params.model = { providerID = provider, modelID = model }"," state.current_model = opts.model","end","```","The expected type is `{ modelID: string, providerID: string }`, but EmmyLua expects the order to be `modelID` first, then `providerID`. Let's update the assignment to match the expected order.","","I'll fix this now.","","** edit** `core.lua`","","`````lua"," local params = {}"," "," if opts.model then"," local provider, model = opts.model:match('^(.-)/(.+)$')"," params.model = { providerID = provider, modelID = model }"," params.model = { modelID = model, providerID = provider }"," state.current_model = opts.model"," end"," "," if opts.agent then","","`````","","**󰻛 Created Snapshot** `f33f38a7`","","----","","","Step 2 is complete: the `model` field in `params` now matches the expected type `{ modelID = model, providerID = provider }`.","","Now, let's move to step 3: Test the changes to ensure the diagnostics are resolved and the function works as expected.","","I'll run the test suite using the provided script to verify everything is working.","","** run** `Run all tests to verify code changes`","","`````bash","> ./run_tests.sh","","Running tests for opencode.nvim","------------------------------------------------","Starting...Scheduling: ./tests/minimal/plugin_spec.lua","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/minimal/plugin_spec.lua\t","Success\t||\topencode.nvim plugin loads the plugin without errors\t","Success\t||\topencode.nvim plugin can be set up with custom config\t","\t","Success: \t2\t","Failed : \t0\t","========================================\t","✓ Minimal tests passed","------------------------------------------------","Starting...Scheduling: ./tests/unit/keymap_spec.lua","Scheduling: ./tests/unit/opencode_server_spec.lua","Scheduling: ./tests/unit/context_completion_spec.lua","Scheduling: ./tests/unit/config_file_spec.lua","Scheduling: ./tests/unit/init_spec.lua","Scheduling: ./tests/unit/state_spec.lua","Scheduling: ./tests/unit/render_state_spec.lua","Scheduling: ./tests/unit/server_job_spec.lua","Scheduling: ./tests/unit/config_spec.lua","Scheduling: ./tests/unit/context_bar_spec.lua","Scheduling: ./tests/unit/renderer_spec.lua","Scheduling: ./tests/unit/api_client_spec.lua","Scheduling: ./tests/unit/core_spec.lua","Scheduling: ./tests/unit/session_spec.lua","Scheduling: ./tests/unit/event_manager_spec.lua","Scheduling: ./tests/unit/api_spec.lua","Scheduling: ./tests/unit/context_spec.lua","Scheduling: ./tests/unit/timer_spec.lua","Scheduling: ./tests/unit/util_spec.lua","Scheduling: ./tests/unit/snapshot_spec.lua","Scheduling: ./tests/unit/id_spec.lua","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/context_completion_spec.lua\t","Success\t||\tcontext completion get_source should return a completion source\t","Success\t||\tcontext completion complete function should return empty table when trigger char does not match\t","Success\t||\tcontext completion complete function should return context items when trigger char matches\t","Success\t||\tcontext completion complete function should include selection items when selections exist\t","Success\t||\tcontext completion complete function should include mentioned files when they exist\t","Success\t||\tcontext completion complete function should include subagent items when they exist\t","Success\t||\tcontext completion complete function should filter items based on input\t","Success\t||\tcontext completion complete function should sort items with available items first\t","Success\t||\tcontext completion on_complete function should handle nil item gracefully\t","Success\t||\tcontext completion on_complete function should handle item without data gracefully\t","Success\t||\tcontext completion on_complete function should toggle context enabled state for toggleable items\t","Success\t||\tcontext completion on_complete function should remove mentioned file when selected\t","Success\t||\tcontext completion on_complete function should remove subagent when selected\t","Success\t||\tcontext completion on_complete function should remove selection when selection item selected\t","Success\t||\tcontext completion on_complete function should clean up trigger character from current line\t","Success\t||\tcontext completion formatting functions should format diagnostics correctly\t","Success\t||\tcontext completion formatting functions should format cursor data correctly\t","Success\t||\tcontext completion formatting functions should format selection correctly\t","Success\t||\tcontext completion edge cases should handle empty context gracefully\t","Success\t||\tcontext completion edge cases should handle disabled contexts correctly\t","\t","Success: \t20\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/keymap_spec.lua\t","Success\t||\topencode.keymap setup sets up keymap with new format configured keys\t","Success\t||\topencode.keymap setup sets up keymap with old format configured keys (normalized)\t","Success\t||\topencode.keymap setup sets up callbacks that execute the correct commands (new format)\t","Success\t||\topencode.keymap setup sets up callbacks that execute the correct commands (old format normalized)\t","Success\t||\topencode.keymap normalize_keymap normalizes old format keymap to new format correctly\t","Success\t||\topencode.keymap normalize_keymap shows error message for unknown API functions\t","Success\t||\topencode.keymap normalize_keymap uses custom description from config_entry\t","Success\t||\topencode.keymap normalize_keymap falls back to API description when no custom desc provided\t","Success\t||\topencode.keymap setup_window_keymaps handles unknown API functions with error message\t","Success\t||\topencode.keymap setup_window_keymaps uses custom description for window keymaps\t","Success\t||\topencode.keymap setup_permission_keymap sets up permission keymaps when there is a current permission\t","Success\t||\topencode.keymap setup_permission_keymap should delete existing permission keymaps if no current permission exists after being set\t","Success\t||\topencode.keymap setup_permission_keymap does not set permission keymaps when there is no current permission\t","\t","Success: \t13\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/opencode_server_spec.lua\t","Success\t||\topencode.opencode_server creates a new server object\t","Success\t||\topencode.opencode_server spawn promise resolves when stdout emits server URL\t","Success\t||\topencode.opencode_server shutdown resolves shutdown_promise and clears fields\t","Success\t||\topencode.opencode_server calls on_error when stderr is triggered\t","Success\t||\topencode.opencode_server calls on_exit and clears fields when process exits\t","\t","Success: \t5\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/config_file_spec.lua\t","Success\t||\tconfig_file.setup lazily loads config when accessed\t","Success\t||\tconfig_file.setup get_opencode_agents returns primary + defaults\t","Success\t||\tconfig_file.setup get_opencode_agents respects disabled defaults\t","Success\t||\tconfig_file.setup get_opencode_project returns project\t","\t","Success: \t4\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/init_spec.lua\t","Success\t||\topencode has setup function in the public API\t","Success\t||\topencode main module can be required without errors\t","\t","Success: \t2\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/render_state_spec.lua\t","Success\t||\tRenderState new and reset creates a new instance\t","Success\t||\tRenderState new and reset resets to empty state\t","Success\t||\tRenderState set_message sets a new message\t","Success\t||\tRenderState set_message updates line index for message\t","Success\t||\tRenderState set_message updates existing message\t","Success\t||\tRenderState set_part sets a new part\t","Success\t||\tRenderState set_part updates line index for part\t","Success\t||\tRenderState set_part initializes actions array\t","Success\t||\tRenderState get_part_at_line returns part at line\t","Success\t||\tRenderState get_part_at_line returns nil for line without part\t","Success\t||\tRenderState get_message_at_line returns message at line\t","Success\t||\tRenderState get_message_at_line returns nil for line without message\t","Success\t||\tRenderState get_part_by_call_id finds part by call ID\t","Success\t||\tRenderState get_part_by_call_id returns nil when call ID not found\t","Success\t||\tRenderState actions adds actions to part\t","Success\t||\tRenderState actions adds actions with offset\t","Success\t||\tRenderState actions clears actions for part\t","Success\t||\tRenderState actions gets actions at line\t","Success\t||\tRenderState actions gets all actions from all parts\t","Success\t||\tRenderState update_part_lines updates part line positions\t","Success\t||\tRenderState update_part_lines shifts subsequent content when expanding\t","Success\t||\tRenderState update_part_lines shifts subsequent content when shrinking\t","Success\t||\tRenderState update_part_lines returns false for non-existent part\t","Success\t||\tRenderState remove_part removes part and shifts subsequent content\t","Success\t||\tRenderState remove_part clears line index for removed part\t","Success\t||\tRenderState remove_part returns false for non-existent part\t","Success\t||\tRenderState remove_message removes message and shifts subsequent content\t","Success\t||\tRenderState remove_message clears line index for removed message\t","Success\t||\tRenderState remove_message returns false for non-existent message\t","Success\t||\tRenderState shift_all does nothing when delta is 0\t","Success\t||\tRenderState shift_all shifts content at or after from_line\t","Success\t||\tRenderState shift_all shifts actions with parts\t","Success\t||\tRenderState shift_all does not rebuild index when nothing shifted\t","Success\t||\tRenderState shift_all invalidates index when content shifted\t","Success\t||\tRenderState shift_all exits early when content found before from_line\t","Success\t||\tRenderState update_part_data updates part reference\t","Success\t||\tRenderState update_part_data does nothing for non-existent part\t","\t","Success: \t37\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/server_job_spec.lua\t","Success\t||\tserver_job exposes expected public functions\t","Success\t||\tserver_job call_api resolves with decoded json and toggles is_job_running\t","Success\t||\tserver_job call_api rejects on non 2xx\t","Success\t||\tserver_job stream_api forwards chunks\t","Success\t||\tserver_job ensure_server spawns a new opencode server only once\t","\t","Success: \t5\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/config_spec.lua\t","Success\t||\topencode.config uses default values when no options are provided\t","Success\t||\topencode.config merges user options with defaults\t","\t","Success: \t2\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/context_bar_spec.lua\t","Success\t||\topencode.ui.context_bar opencode.ui.context_bar renders minimal winbar with right aligh token only\t","Success\t||\topencode.ui.context_bar opencode.ui.context_bar renders winbar with current file when present\t","Success\t||\topencode.ui.context_bar opencode.ui.context_bar renders winbar with multiple context elements\t","Success\t||\topencode.ui.context_bar opencode.ui.context_bar renders winbar with diagnostics\t","Success\t||\topencode.ui.context_bar opencode.ui.context_bar respects context enabled settings\t","Success\t||\topencode.ui.context_bar opencode.ui.context_bar handles empty winbar gracefully\t","Success\t||\topencode.ui.context_bar opencode.ui.context_bar does nothing when window is invalid\t","Success\t||\topencode.ui.context_bar opencode.ui.context_bar uses provided windows parameter\t","Success\t||\topencode.ui.context_bar setup subscribes to state changes\t","\t","Success: \t9\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/api_client_spec.lua\t","Success\t||\tapi_client should create a new client instance\t","Success\t||\tapi_client should remove trailing slash from base_url\t","Success\t||\tapi_client should create client using create factory function\t","Success\t||\tapi_client should have all expected API methods\t","Success\t||\tapi_client should construct URLs correctly with query parameters\t","\t","Success: \t5\t","Failed : \t0\t","========================================\t","Error detected while processing command line:","opencode command not found - please install and configure opencode before using this plugin","Unsupported opencode CLI version: opencode 0.4.1. Requires >= 0.4.2","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/core_spec.lua\t","Success\t||\topencode.core open creates windows if they don't exist\t","Success\t||\topencode.core open handles new session properly\t","Success\t||\topencode.core open focuses the appropriate window\t","Success\t||\topencode.core select_session filters sessions by description and parentID\t","Success\t||\topencode.core send_message sends a message via api_client\t","Success\t||\topencode.core send_message creates new session when none active\t","Success\t||\topencode.core send_message persist options in state when sending message\t","Success\t||\topencode.core opencode_ok (version checks) returns false when opencode executable is missing\t","Success\t||\topencode.core opencode_ok (version checks) returns false when version is below required\t","Success\t||\topencode.core opencode_ok (version checks) returns true when version equals required\t","Success\t||\topencode.core opencode_ok (version checks) returns true when version is above required\t","\t","Success: \t11\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/session_spec.lua\t","Success\t||\topencode.session get_last_workspace_session returns the most recent session for current workspace\t","Success\t||\topencode.session get_last_workspace_session returns nil when no sessions match the workspace\t","Success\t||\topencode.session get_last_workspace_session handles JSON parsing errors\t","Success\t||\topencode.session get_last_workspace_session handles empty session list\t","Success\t||\topencode.session get_by_name returns the session with matching ID\t","Success\t||\topencode.session get_by_name returns nil when no session matches the ID\t","Success\t||\topencode.session read_json_dir returns nil for non-existent directory\t","Success\t||\topencode.session read_json_dir returns nil when directory exists but has no JSON files\t","Success\t||\topencode.session read_json_dir returns decoded JSON content from directory\t","Success\t||\topencode.session read_json_dir skips invalid JSON files\t","Success\t||\topencode.session get_messages returns nil when session is nil\t","Success\t||\topencode.session get_messages returns nil when messages directory does not exist\t","Success\t||\topencode.session get_messages returns messages with their parts\t","\t","Success: \t13\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/state_spec.lua\t","Success\t||\topencode.state (observable) notifies listeners on key change\t","Success\t||\topencode.state (observable) notifies wildcard listeners on any key change\t","Success\t||\topencode.state (observable) can unregister listeners\t","Success\t||\topencode.state (observable) does not notify if value is unchanged\t","\t","Success: \t4\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/event_manager_spec.lua\t","Success\t||\tEventManager should create a new instance\t","Success\t||\tEventManager should subscribe and emit events\t","Success\t||\tEventManager should handle multiple subscribers\t","Success\t||\tEventManager should unsubscribe correctly\t","Success\t||\tEventManager should track subscriber count\t","Success\t||\tEventManager should list event names\t","Success\t||\tEventManager should handle starting and stopping\t","Success\t||\tEventManager should not start multiple times\t","\t","Success: \t8\t","Failed : \t0\t","========================================\t","File not added to context. Could not read.","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/context_spec.lua\t","Success\t||\textract_from_opencode_message extracts prompt, selected_text, and current_file from tags in parts\t","Success\t||\textract_from_opencode_message returns nils if message or parts missing\t","Success\t||\textract_from_message_legacy extracts legacy tags from text\t","Success\t||\textract_legacy_tag extracts content between tags\t","Success\t||\textract_legacy_tag returns nil if tag not found\t","Success\t||\tformat_message returns a parts array with prompt as first part\t","Success\t||\tformat_message includes mentioned_files and subagents\t","Success\t||\tdelta_context removes current_file if unchanged\t","Success\t||\tdelta_context removes mentioned_subagents if unchanged\t","Success\t||\tadd_file/add_selection/add_subagent adds a file if filereadable\t","Success\t||\tadd_file/add_selection/add_subagent does not add file if not filereadable\t","Success\t||\tadd_file/add_selection/add_subagent adds a selection\t","Success\t||\tadd_file/add_selection/add_subagent adds a subagent\t","\t","Success: \t13\t","Failed : \t0\t","========================================\t",":OpencodeOpenInput is deprecated. Use `:Opencode open input` instead",":OpencodeStop is deprecated. Use `:Opencode cancel` instead",":OpencodeClose is deprecated. Use `:Opencode close` instead","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/api_spec.lua\t","Success\t||\topencode.api commands table contains the expected commands with proper structure\t","Success\t||\topencode.api setup registers the main Opencode command and legacy commands\t","Success\t||\topencode.api setup sets up legacy command functions that route to main command\t","Success\t||\topencode.api Lua API provides callable functions that match commands\t","Success\t||\topencode.api run command argument parsing parses agent prefix and passes to send_message\t","Success\t||\topencode.api run command argument parsing parses model prefix and passes to send_message\t","Success\t||\topencode.api run command argument parsing parses context prefix and passes to send_message\t","Success\t||\topencode.api run command argument parsing parses multiple prefixes and passes all to send_message\t","Success\t||\topencode.api run command argument parsing works with run_new command\t","Success\t||\topencode.api run command argument parsing requires a prompt after prefixes\t","Success\t||\topencode.api run command argument parsing Lua API accepts opts directly without parsing\t","\t","Success: \t11\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/util_spec.lua\t","Success\t||\tutil.parse_dot_args parses flat booleans\t","Success\t||\tutil.parse_dot_args parses nested dot notation\t","Success\t||\tutil.parse_dot_args parses mixed nesting and booleans\t","Success\t||\tutil.parse_dot_args parses numbers\t","Success\t||\tutil.parse_dot_args handles empty string\t","Success\t||\tutil.parse_run_args parses no prefixes\t","Success\t||\tutil.parse_run_args parses single agent prefix\t","Success\t||\tutil.parse_run_args parses single model prefix\t","Success\t||\tutil.parse_run_args parses single context prefix\t","Success\t||\tutil.parse_run_args parses multiple prefixes in order\t","Success\t||\tutil.parse_run_args parses context with multiple comma-delimited values\t","Success\t||\tutil.parse_run_args handles empty prompt after prefixes\t","Success\t||\tutil.parse_run_args handles empty string\t","Success\t||\tutil.parse_run_args stops parsing at first non-prefix token\t","\t","Success: \t14\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/snapshot_spec.lua\t","Success\t||\tsnapshot.restore runs read-tree and checkout-index and notifies on success\t","Success\t||\tsnapshot.restore notifies error if no active session\t","Success\t||\tsnapshot.restore notifies error if read-tree fails\t","Success\t||\tsnapshot.restore notifies error if checkout-index fails\t","\t","Success: \t4\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/id_spec.lua\t","Success\t||\tID module should generate ascending session IDs\t","Success\t||\tID module should generate descending message IDs\t","Success\t||\tID module should validate given IDs correctly\t","Success\t||\tID module should throw error for invalid given IDs\t","Success\t||\tID module should validate schemas correctly\t","Success\t||\tID module should return available prefixes\t","Success\t||\tID module should generate IDs with correct length structure\t","\t","Success: \t7\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/timer_spec.lua\t","Success\t||\tTimer Timer.new creates a new timer with required options\t","Success\t||\tTimer Timer.new sets repeat_timer to false when explicitly disabled\t","Success\t||\tTimer Timer.new stores optional parameters\t","Success\t||\tTimer Timer:start starts a repeating timer\t","Success\t||\tTimer Timer:start starts a one-shot timer\t","Success\t||\tTimer Timer:start passes arguments to on_tick function\t","Success\t||\tTimer Timer:start stops timer when on_tick returns false\t","Success\t||\tTimer Timer:start stops timer when on_tick throws an error\t","Success\t||\tTimer Timer:start stops previous timer before starting new one\t","Success\t||\tTimer Timer:start throws error when timer creation fails\t","Success\t||\tTimer Timer:stop stops a running timer\t","Success\t||\tTimer Timer:stop calls on_stop callback when provided\t","Success\t||\tTimer Timer:stop does nothing when timer is not running\t","Success\t||\tTimer Timer:stop handles errors in on_stop callback gracefully\t","Success\t||\tTimer Timer:is_running returns false when timer is not started\t","Success\t||\tTimer Timer:is_running returns true when timer is running\t","Success\t||\tTimer Timer:is_running returns false after timer is stopped\t","Success\t||\tTimer Timer:is_running returns false after one-shot timer completes\t","Success\t||\tTimer Integration tests can restart a stopped timer\t","Success\t||\tTimer Integration tests handles rapid start/stop cycles\t","\t","Success: \t20\t","Failed : \t0\t","========================================\t","Two pending permissions? existing: per_9efb5b2f3001aqJAFBMiGjFjVZ new: per_9efb5bc2a001j9Bd6bFjLB7hrc","Two pending permissions? existing: per_9efb5bc2a001j9Bd6bFjLB7hrc new: per_9efb5d6d1001uwVXQ9dhlBlgfO","Two pending permissions? existing: per_9efb5b2f3001aqJAFBMiGjFjVZ new: per_9efb5bc2a001j9Bd6bFjLB7hrc","Two pending permissions? existing: per_9efb5bc2a001j9Bd6bFjLB7hrc new: per_9efb5d6d1001uwVXQ9dhlBlgfO","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/renderer_spec.lua\t","Success\t||\trenderer replays ansi-codes correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays ansi-codes correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays ansi-codes correctly (session)\t","Success\t||\trenderer replays api-abort correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays api-abort correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays api-abort correctly (session)\t","Success\t||\trenderer replays api-error correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays api-error correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays api-error correctly (session)\t","Success\t||\trenderer replays cursor_data correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays cursor_data correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays cursor_data correctly (session)\t","Success\t||\trenderer replays diff correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays diff correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays diff correctly (session)\t","Success\t||\trenderer replays markdown-codefence correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays markdown-codefence correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays markdown-codefence correctly (session)\t","Success\t||\trenderer replays mentions-with-ranges correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays mentions-with-ranges correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays mentions-with-ranges correctly (session)\t","Success\t||\trenderer replays message-removal correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays message-removal correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays perf correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays perf correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays perf correctly (session)\t","Success\t||\trenderer replays permission-denied correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays permission-denied correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays permission-denied correctly (session)\t","Success\t||\trenderer replays permission-prompt correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays permission-prompt correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays permission correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays permission correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays permission correctly (session)\t","Success\t||\trenderer replays planning correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays planning correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays planning correctly (session)\t","Success\t||\trenderer replays redo-all correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays redo-all correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays redo-all correctly (session)\t","Success\t||\trenderer replays redo-once correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays redo-once correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays redo-once correctly (session)\t","Success\t||\trenderer replays revert correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays revert correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays revert correctly (session)\t","Success\t||\trenderer replays selection correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays selection correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays selection correctly (session)\t","Success\t||\trenderer replays shifting-and-multiple-perms correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays shifting-and-multiple-perms correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays simple-session correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays simple-session correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays simple-session correctly (session)\t","Success\t||\trenderer replays tool-invalid correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays tool-invalid correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays tool-invalid correctly (session)\t","Success\t||\trenderer replays updating-text correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays updating-text correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays updating-text correctly (session)\t","\t","Success: \t60\t","Failed : \t0\t","========================================\t","✓ Unit tests passed","------------------------------------------------","All tests passed successfully!","","`````","","----","","","All steps are complete and all tests pass! Here’s a summary of what was fixed:","","- ✅ Added a nil check for `state.active_session` before accessing `.id` in `M.send_message`.","- ✅ Ensured the `model` field in `params` matches the expected type `{ modelID = ..., providerID = ... }`.","- ✅ Verified the fixes by running the full test suite—no errors or failures.","","Your file is now robust and EmmyLua diagnostics at line 130 are resolved. If you need further tweaks or want to address other diagnostics, let me know!","",""],"extmarks":[[1,1,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-11-03 13:34:57)","OpencodeHint"],[" [msg_a49ed91d6001coTsjFq9x6FF5W]","OpencodeHint"]],"right_gravity":true,"virt_text_win_col":-3,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_hide":false}],[2,2,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_win_col":-3,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[3,3,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_win_col":-3,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[4,4,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_win_col":-3,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[5,5,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_win_col":-3,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[6,6,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_win_col":-3,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[7,7,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_win_col":-3,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[8,8,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_win_col":-3,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[9,10,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-4.1","OpencodeHint"],[" (2025-11-03 13:34:59)","OpencodeHint"],[" [msg_a49ed9828001mN6CDcWPnGnpHS]","OpencodeHint"]],"right_gravity":true,"virt_text_win_col":-3,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_hide":false}],[10,39,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[11,40,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[12,41,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[13,42,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[14,43,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[15,44,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[16,45,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[17,46,0,{"hl_group":"OpencodeDiffAdd","virt_text_repeat_linebreak":false,"virt_text":[["+","OpencodeDiffAdd"]],"right_gravity":true,"priority":5000,"ns_id":3,"virt_text_pos":"overlay","end_col":0,"end_row":47,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false}],[18,46,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[19,47,0,{"hl_group":"OpencodeDiffAdd","virt_text_repeat_linebreak":false,"virt_text":[["+","OpencodeDiffAdd"]],"right_gravity":true,"priority":5000,"ns_id":3,"virt_text_pos":"overlay","end_col":0,"end_row":48,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false}],[20,47,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[21,48,0,{"hl_group":"OpencodeDiffAdd","virt_text_repeat_linebreak":false,"virt_text":[["+","OpencodeDiffAdd"]],"right_gravity":true,"priority":5000,"ns_id":3,"virt_text_pos":"overlay","end_col":0,"end_row":49,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false}],[22,48,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[23,49,0,{"hl_group":"OpencodeDiffAdd","virt_text_repeat_linebreak":false,"virt_text":[["+","OpencodeDiffAdd"]],"right_gravity":true,"priority":5000,"ns_id":3,"virt_text_pos":"overlay","end_col":0,"end_row":50,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false}],[24,49,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[25,50,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[26,51,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[27,52,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[28,53,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[29,54,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[30,55,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[31,60,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-4.1","OpencodeHint"],[" (2025-11-03 13:35:06)","OpencodeHint"],[" [msg_a49edb694001syExFxMUW1ik3n]","OpencodeHint"]],"right_gravity":true,"virt_text_win_col":-3,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_hide":false}],[32,78,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[33,79,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[34,80,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[35,81,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[36,82,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[37,83,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[38,84,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[39,85,0,{"hl_group":"OpencodeDiffDelete","virt_text_repeat_linebreak":false,"virt_text":[["-","OpencodeDiffDelete"]],"right_gravity":true,"priority":5000,"ns_id":3,"virt_text_pos":"overlay","end_col":0,"end_row":86,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false}],[40,85,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[41,86,0,{"hl_group":"OpencodeDiffAdd","virt_text_repeat_linebreak":false,"virt_text":[["+","OpencodeDiffAdd"]],"right_gravity":true,"priority":5000,"ns_id":3,"virt_text_pos":"overlay","end_col":0,"end_row":87,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false}],[42,86,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[43,87,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[44,88,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[45,89,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[46,90,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[47,91,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[48,92,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[49,97,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-4.1","OpencodeHint"],[" (2025-11-03 13:35:10)","OpencodeHint"],[" [msg_a49edc4640017DZPFVUPHCm7Ji]","OpencodeHint"]],"right_gravity":true,"virt_text_win_col":-3,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_hide":false}],[50,105,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[51,106,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[52,107,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[53,108,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[54,109,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[55,110,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[56,111,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[57,112,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[58,113,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[59,114,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[60,115,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[61,116,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[62,117,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[63,118,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[64,119,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[65,120,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[66,121,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[67,122,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[68,123,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[69,124,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[70,125,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[71,126,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[72,127,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[73,128,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[74,129,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[75,130,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[76,131,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[77,132,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[78,133,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[79,134,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[80,135,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[81,136,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[82,137,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[83,138,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[84,139,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[85,140,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[86,141,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[87,142,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[88,143,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[89,144,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[90,145,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[91,146,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[92,147,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[93,148,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[94,149,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[95,150,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[96,151,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[97,152,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[98,153,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[99,154,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[100,155,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[101,156,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[102,157,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[103,158,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[104,159,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[105,160,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[106,161,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[107,162,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[108,163,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[109,164,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[110,165,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[111,166,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[112,167,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[113,168,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[114,169,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[115,170,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[116,171,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[117,172,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[118,173,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[119,174,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[120,175,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[121,176,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[122,177,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[123,178,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[124,179,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[125,180,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[126,181,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[127,182,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[128,183,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[129,184,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[130,185,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[131,186,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[132,187,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[133,188,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[134,189,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[135,190,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[136,191,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[137,192,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[138,193,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[139,194,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[140,195,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[141,196,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[142,197,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[143,198,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[144,199,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[145,200,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[146,201,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[147,202,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[148,203,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[149,204,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[150,205,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[151,206,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[152,207,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[153,208,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[154,209,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[155,210,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[156,211,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[157,212,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[158,213,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[159,214,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[160,215,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[161,216,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[162,217,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[163,218,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[164,219,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[165,220,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[166,221,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[167,222,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[168,223,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[169,224,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[170,225,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[171,226,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[172,227,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[173,228,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[174,229,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[175,230,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[176,231,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[177,232,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[178,233,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[179,234,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[180,235,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[181,236,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[182,237,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[183,238,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[184,239,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[185,240,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[186,241,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[187,242,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[188,243,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[189,244,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[190,245,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[191,246,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[192,247,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[193,248,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[194,249,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[195,250,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[196,251,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[197,252,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[198,253,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[199,254,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[200,255,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[201,256,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[202,257,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[203,258,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[204,259,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[205,260,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[206,261,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[207,262,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[208,263,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[209,264,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[210,265,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[211,266,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[212,267,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[213,268,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[214,269,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[215,270,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[216,271,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[217,272,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[218,273,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[219,274,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[220,275,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[221,276,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[222,277,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[223,278,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[224,279,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[225,280,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[226,281,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[227,282,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[228,283,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[229,284,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[230,285,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[231,286,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[232,287,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[233,288,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[234,289,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[235,290,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[236,291,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[237,292,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[238,293,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[239,294,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[240,295,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[241,296,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[242,297,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[243,298,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[244,299,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[245,300,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[246,301,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[247,302,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[248,303,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[249,304,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[250,305,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[251,306,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[252,307,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[253,308,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[254,309,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[255,310,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[256,311,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[257,312,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[258,313,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[259,314,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[260,315,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[261,316,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[262,317,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[263,318,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[264,319,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[265,320,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[266,321,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[267,322,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[268,323,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[269,324,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[270,325,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[271,326,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[272,327,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[273,328,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[274,329,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[275,330,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[276,331,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[277,332,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[278,333,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[279,334,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[280,335,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[281,336,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[282,337,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[283,338,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[284,339,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[285,340,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[286,341,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[287,342,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[288,343,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[289,344,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[290,345,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[291,346,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[292,347,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[293,348,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[294,349,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[295,350,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[296,351,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[297,352,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[298,353,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[299,354,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[300,355,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[301,356,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[302,357,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[303,358,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[304,359,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[305,360,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[306,361,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[307,362,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[308,363,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[309,364,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[310,365,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[311,366,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[312,367,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[313,368,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[314,369,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[315,370,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[316,371,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[317,372,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[318,373,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[319,374,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[320,375,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[321,376,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[322,377,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[323,378,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[324,379,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[325,380,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[326,381,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[327,382,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[328,383,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[329,384,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[330,385,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[331,386,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[332,387,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[333,388,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[334,389,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[335,390,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[336,391,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[337,392,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[338,393,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[339,394,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[340,395,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[341,396,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[342,397,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[343,398,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[344,399,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[345,400,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[346,401,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[347,402,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[348,403,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[349,404,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[350,405,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[351,406,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[352,407,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[353,408,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[354,409,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[355,410,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[356,411,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[357,412,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[358,413,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[359,414,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[360,415,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[361,416,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[362,417,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[363,418,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[364,419,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[365,420,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[366,421,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[367,422,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[368,423,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[369,424,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[370,425,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[371,426,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[372,427,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[373,428,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[374,429,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[375,430,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[376,431,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[377,432,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[378,433,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[379,434,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[380,435,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[381,436,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[382,437,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[383,438,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[384,439,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[385,440,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[386,441,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[387,442,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[388,443,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[389,444,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[390,445,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[391,446,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[392,447,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[393,448,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[394,449,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[395,450,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[396,451,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[397,452,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[398,453,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[399,454,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[400,455,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[401,456,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[402,457,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[403,458,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[404,459,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[405,460,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[406,461,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[407,462,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[408,463,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[409,464,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[410,465,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[411,466,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[412,467,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[413,468,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[414,469,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[415,470,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[416,471,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[417,472,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[418,473,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[419,474,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[420,475,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[421,476,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[422,477,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[423,478,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[424,479,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[425,480,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[426,481,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[427,482,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[428,483,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[429,484,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[430,485,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[431,486,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[432,487,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[433,488,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[434,489,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[435,490,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[436,491,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[437,492,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[438,493,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[439,494,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[440,495,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[441,496,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[442,497,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[443,498,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[444,499,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[445,500,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[446,501,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[447,502,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[448,503,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[449,504,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[450,505,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[451,506,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[452,507,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[453,508,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[454,509,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[455,510,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[456,511,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[457,512,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[458,513,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[459,514,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[460,515,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[461,516,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[462,517,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[463,518,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[464,519,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[465,520,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[466,521,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[467,522,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[468,523,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[469,524,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[470,525,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[471,526,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[472,527,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[473,528,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[474,529,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[475,530,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[476,531,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[477,532,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[478,533,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[479,534,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[480,535,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[481,536,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[482,537,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[483,538,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[484,539,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[485,540,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[486,541,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[487,542,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[488,543,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[489,544,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[490,545,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[491,546,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[492,547,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[493,548,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[494,549,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[495,550,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[496,551,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[497,552,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[498,553,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[499,554,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[500,555,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[501,556,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[502,557,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[503,558,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[504,559,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[505,560,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[506,561,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[507,562,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[508,563,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[509,564,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[510,565,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[511,566,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[512,567,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[513,568,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[514,569,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[515,570,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[516,571,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[517,572,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[518,573,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[519,574,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_hide":false}],[520,577,0,{"virt_text_pos":"win_col","ns_id":3,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-4.1","OpencodeHint"],[" (2025-11-03 13:35:15)","OpencodeHint"],[" [msg_a49edd87f001eOJDDoq5Vb5hra]","OpencodeHint"]],"right_gravity":true,"virt_text_win_col":-3,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_hide":false}]]} \ No newline at end of file +{"extmarks":[[1,1,0,{"priority":10,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-11-03 13:34:57)","OpencodeHint"],[" [msg_a49ed91d6001coTsjFq9x6FF5W]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[2,2,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[3,3,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[4,4,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[5,5,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[6,6,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[7,7,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[8,8,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[9,10,0,{"priority":10,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-4.1","OpencodeHint"],[" (2025-11-03 13:34:59)","OpencodeHint"],[" [msg_a49ed9828001mN6CDcWPnGnpHS]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[10,39,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[11,40,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[12,41,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[13,42,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[14,43,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[15,44,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[16,45,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[17,46,0,{"priority":5000,"ns_id":3,"end_col":0,"end_row":47,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"hl_group":"OpencodeDiffAdd","virt_text":[["+","OpencodeDiffAdd"]],"right_gravity":true,"virt_text_pos":"overlay"}],[18,46,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[19,47,0,{"priority":5000,"ns_id":3,"end_col":0,"end_row":48,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"hl_group":"OpencodeDiffAdd","virt_text":[["+","OpencodeDiffAdd"]],"right_gravity":true,"virt_text_pos":"overlay"}],[20,47,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[21,48,0,{"priority":5000,"ns_id":3,"end_col":0,"end_row":49,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"hl_group":"OpencodeDiffAdd","virt_text":[["+","OpencodeDiffAdd"]],"right_gravity":true,"virt_text_pos":"overlay"}],[22,48,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[23,49,0,{"priority":5000,"ns_id":3,"end_col":0,"end_row":50,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"hl_group":"OpencodeDiffAdd","virt_text":[["+","OpencodeDiffAdd"]],"right_gravity":true,"virt_text_pos":"overlay"}],[24,49,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[25,50,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[26,51,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[27,52,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[28,53,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[29,54,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[30,55,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[31,60,0,{"priority":10,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-4.1","OpencodeHint"],[" (2025-11-03 13:35:06)","OpencodeHint"],[" [msg_a49edb694001syExFxMUW1ik3n]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[32,78,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[33,79,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[34,80,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[35,81,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[36,82,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[37,83,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[38,84,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[39,85,0,{"priority":5000,"ns_id":3,"end_col":0,"end_row":86,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"hl_group":"OpencodeDiffDelete","virt_text":[["-","OpencodeDiffDelete"]],"right_gravity":true,"virt_text_pos":"overlay"}],[40,85,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[41,86,0,{"priority":5000,"ns_id":3,"end_col":0,"end_row":87,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"hl_group":"OpencodeDiffAdd","virt_text":[["+","OpencodeDiffAdd"]],"right_gravity":true,"virt_text_pos":"overlay"}],[42,86,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[43,87,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[44,88,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[45,89,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[46,90,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[47,91,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[48,92,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[49,97,0,{"priority":10,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-4.1","OpencodeHint"],[" (2025-11-03 13:35:10)","OpencodeHint"],[" [msg_a49edc4640017DZPFVUPHCm7Ji]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[50,105,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[51,106,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[52,107,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[53,108,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[54,109,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[55,110,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[56,111,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[57,112,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[58,113,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[59,114,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[60,115,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[61,116,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[62,117,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[63,118,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[64,119,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[65,120,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[66,121,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[67,122,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[68,123,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[69,124,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[70,125,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[71,126,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[72,127,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[73,128,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[74,129,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[75,130,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[76,131,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[77,132,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[78,133,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[79,134,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[80,135,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[81,136,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[82,137,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[83,138,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[84,139,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[85,140,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[86,141,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[87,142,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[88,143,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[89,144,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[90,145,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[91,146,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[92,147,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[93,148,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[94,149,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[95,150,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[96,151,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[97,152,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[98,153,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[99,154,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[100,155,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[101,156,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[102,157,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[103,158,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[104,159,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[105,160,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[106,161,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[107,162,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[108,163,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[109,164,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[110,165,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[111,166,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[112,167,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[113,168,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[114,169,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[115,170,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[116,171,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[117,172,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[118,173,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[119,174,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[120,175,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[121,176,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[122,177,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[123,178,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[124,179,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[125,180,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[126,181,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[127,182,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[128,183,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[129,184,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[130,185,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[131,186,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[132,187,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[133,188,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[134,189,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[135,190,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[136,191,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[137,192,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[138,193,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[139,194,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[140,195,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[141,196,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[142,197,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[143,198,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[144,199,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[145,200,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[146,201,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[147,202,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[148,203,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[149,204,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[150,205,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[151,206,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[152,207,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[153,208,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[154,209,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[155,210,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[156,211,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[157,212,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[158,213,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[159,214,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[160,215,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[161,216,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[162,217,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[163,218,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[164,219,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[165,220,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[166,221,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[167,222,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[168,223,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[169,224,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[170,225,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[171,226,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[172,227,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[173,228,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[174,229,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[175,230,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[176,231,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[177,232,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[178,233,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[179,234,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[180,235,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[181,236,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[182,237,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[183,238,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[184,239,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[185,240,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[186,241,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[187,242,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[188,243,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[189,244,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[190,245,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[191,246,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[192,247,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[193,248,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[194,249,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[195,250,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[196,251,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[197,252,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[198,253,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[199,254,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[200,255,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[201,256,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[202,257,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[203,258,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[204,259,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[205,260,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[206,261,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[207,262,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[208,263,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[209,264,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[210,265,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[211,266,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[212,267,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[213,268,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[214,269,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[215,270,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[216,271,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[217,272,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[218,273,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[219,274,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[220,275,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[221,276,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[222,277,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[223,278,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[224,279,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[225,280,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[226,281,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[227,282,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[228,283,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[229,284,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[230,285,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[231,286,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[232,287,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[233,288,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[234,289,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[235,290,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[236,291,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[237,292,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[238,293,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[239,294,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[240,295,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[241,296,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[242,297,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[243,298,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[244,299,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[245,300,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[246,301,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[247,302,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[248,303,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[249,304,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[250,305,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[251,306,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[252,307,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[253,308,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[254,309,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[255,310,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[256,311,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[257,312,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[258,313,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[259,314,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[260,315,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[261,316,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[262,317,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[263,318,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[264,319,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[265,320,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[266,321,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[267,322,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[268,323,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[269,324,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[270,325,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[271,326,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[272,327,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[273,328,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[274,329,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[275,330,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[276,331,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[277,332,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[278,333,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[279,334,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[280,335,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[281,336,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[282,337,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[283,338,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[284,339,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[285,340,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[286,341,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[287,342,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[288,343,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[289,344,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[290,345,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[291,346,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[292,347,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[293,348,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[294,349,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[295,350,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[296,351,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[297,352,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[298,353,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[299,354,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[300,355,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[301,356,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[302,357,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[303,358,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[304,359,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[305,360,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[306,361,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[307,362,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[308,363,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[309,364,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[310,365,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[311,366,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[312,367,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[313,368,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[314,369,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[315,370,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[316,371,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[317,372,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[318,373,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[319,374,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[320,375,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[321,376,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[322,377,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[323,378,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[324,379,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[325,380,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[326,381,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[327,382,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[328,383,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[329,384,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[330,385,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[331,386,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[332,387,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[333,388,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[334,389,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[335,390,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[336,391,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[337,392,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[338,393,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[339,394,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[340,395,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[341,396,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[342,397,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[343,398,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[344,399,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[345,400,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[346,401,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[347,402,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[348,403,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[349,404,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[350,405,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[351,406,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[352,407,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[353,408,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[354,409,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[355,410,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[356,411,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[357,412,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[358,413,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[359,414,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[360,415,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[361,416,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[362,417,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[363,418,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[364,419,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[365,420,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[366,421,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[367,422,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[368,423,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[369,424,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[370,425,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[371,426,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[372,427,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[373,428,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[374,429,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[375,430,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[376,431,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[377,432,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[378,433,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[379,434,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[380,435,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[381,436,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[382,437,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[383,438,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[384,439,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[385,440,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[386,441,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[387,442,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[388,443,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[389,444,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[390,445,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[391,446,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[392,447,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[393,448,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[394,449,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[395,450,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[396,451,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[397,452,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[398,453,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[399,454,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[400,455,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[401,456,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[402,457,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[403,458,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[404,459,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[405,460,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[406,461,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[407,462,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[408,463,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[409,464,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[410,465,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[411,466,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[412,467,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[413,468,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[414,469,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[415,470,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[416,471,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[417,472,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[418,473,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[419,474,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[420,475,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[421,476,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[422,477,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[423,478,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[424,479,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[425,480,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[426,481,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[427,482,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[428,483,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[429,484,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[430,485,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[431,486,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[432,487,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[433,488,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[434,489,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[435,490,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[436,491,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[437,492,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[438,493,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[439,494,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[440,495,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[441,496,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[442,497,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[443,498,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[444,499,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[445,500,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[446,501,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[447,502,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[448,503,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[449,504,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[450,505,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[451,506,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[452,507,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[453,508,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[454,509,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[455,510,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[456,511,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[457,512,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[458,513,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[459,514,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[460,515,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[461,516,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[462,517,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[463,518,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[464,519,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[465,520,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[466,521,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[467,522,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[468,523,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[469,524,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[470,525,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[471,526,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[472,527,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[473,528,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[474,529,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[475,530,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[476,531,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[477,532,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[478,533,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[479,534,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[480,535,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[481,536,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[482,537,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[483,538,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[484,539,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[485,540,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[486,541,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[487,542,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[488,543,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[489,544,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[490,545,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[491,546,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[492,547,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[493,548,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[494,549,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[495,550,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[496,551,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[497,552,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[498,553,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[499,554,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[500,555,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[501,556,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[502,557,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[503,558,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[504,559,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[505,560,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[506,561,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[507,562,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[508,563,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[509,564,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[510,565,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[511,566,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[512,567,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[513,568,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[514,569,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[515,570,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[516,571,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[517,572,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[518,573,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[519,574,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[520,577,0,{"priority":10,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-4.1","OpencodeHint"],[" (2025-11-03 13:35:15)","OpencodeHint"],[" [msg_a49edd87f001eOJDDoq5Vb5hra]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3}]],"timestamp":1766370766,"lines":["----","","","help me fix the file","","[lua/opencode/core.lua](lua/opencode/core.lua)","","**Diagnostics:**  (3)","","----","","","Let's address the three EmmyLua diagnostics at line 130 in `lua/opencode/core.lua`:","","### 1. `param-type-not-match`: expected `string` but found `string?`","- **Location:** `state.active_session.id` (line 130, col 20)","- **Cause:** `state.active_session` may be `nil`, so `state.active_session.id` could error or be `nil`. The function expects a `string`, not a nullable string.","- **Fix:** Add a nil check for `state.active_session` before accessing `.id`.","","### 2. `param-type-not-match`: expected `{ agent: string?, messageID: string?, model: {...}?, parts: Part[], system: string?, tools: table<...>? }` but found `{ model = table, agent = any, parts = OpencodeMessagePart[], ... }`","- **Location:** `params` argument to `:create_message` (line 130, col 45)","- **Cause:** The `model` field in `params` is `{ providerID = string?, modelID = string? }`, but the expected type is `{ modelID: string, providerID: string }?`. The order and possibly the optionality are mismatched.","- **Fix:** Ensure the `model` field matches the expected type exactly: `{ modelID: string, providerID: string }`.","","### 3. `need-check-nil`: `state.active_session may be nil`","- **Location:** Same as #1. This is a reminder to check for nil before accessing `state.active_session.id`.","","---","","## Step-by-step Fix Plan","","```markdown","- [ ] 1. Add a nil check for `state.active_session` before accessing `.id` in `M.send_message`.","- [ ] 2. Ensure the `model` field in `params` matches the expected type `{ modelID: string, providerID: string }`.","- [ ] 3. Test the changes to ensure the diagnostics are resolved and the function works as expected.","```","","Let's start with step 1: Add a nil check for `state.active_session` before accessing `.id`.","","** edit** `core.lua`","","`````lua"," "," params.parts = context.format_message(prompt, opts.context)"," M.before_run(opts)"," "," if not state.active_session or not state.active_session.id then"," vim.notify('No active session to send message to', vim.log.levels.ERROR)"," return"," end"," state.api_client"," :create_message(state.active_session.id, params)"," :and_then(function(response)"," if not response or not response.info or not response.parts then","","`````","","**󰻛 Created Snapshot** `8e790371`","","----","","","Step 1 is complete: nil check for `state.active_session` before accessing `.id` is added.","","Now, let's address step 2: Ensure the `model` field in `params` matches the expected type `{ modelID: string, providerID: string }`.","","Currently, the code is:","```lua","if opts.model then"," local provider, model = opts.model:match('^(.-)/(.+)$')"," params.model = { providerID = provider, modelID = model }"," state.current_model = opts.model","end","```","The expected type is `{ modelID: string, providerID: string }`, but EmmyLua expects the order to be `modelID` first, then `providerID`. Let's update the assignment to match the expected order.","","I'll fix this now.","","** edit** `core.lua`","","`````lua"," local params = {}"," "," if opts.model then"," local provider, model = opts.model:match('^(.-)/(.+)$')"," params.model = { providerID = provider, modelID = model }"," params.model = { modelID = model, providerID = provider }"," state.current_model = opts.model"," end"," "," if opts.agent then","","`````","","**󰻛 Created Snapshot** `f33f38a7`","","----","","","Step 2 is complete: the `model` field in `params` now matches the expected type `{ modelID = model, providerID = provider }`.","","Now, let's move to step 3: Test the changes to ensure the diagnostics are resolved and the function works as expected.","","I'll run the test suite using the provided script to verify everything is working.","","** run** `Run all tests to verify code changes`","","`````bash","> ./run_tests.sh","","Running tests for opencode.nvim","------------------------------------------------","Starting...Scheduling: ./tests/minimal/plugin_spec.lua","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/minimal/plugin_spec.lua\t","Success\t||\topencode.nvim plugin loads the plugin without errors\t","Success\t||\topencode.nvim plugin can be set up with custom config\t","\t","Success: \t2\t","Failed : \t0\t","========================================\t","✓ Minimal tests passed","------------------------------------------------","Starting...Scheduling: ./tests/unit/keymap_spec.lua","Scheduling: ./tests/unit/opencode_server_spec.lua","Scheduling: ./tests/unit/context_completion_spec.lua","Scheduling: ./tests/unit/config_file_spec.lua","Scheduling: ./tests/unit/init_spec.lua","Scheduling: ./tests/unit/state_spec.lua","Scheduling: ./tests/unit/render_state_spec.lua","Scheduling: ./tests/unit/server_job_spec.lua","Scheduling: ./tests/unit/config_spec.lua","Scheduling: ./tests/unit/context_bar_spec.lua","Scheduling: ./tests/unit/renderer_spec.lua","Scheduling: ./tests/unit/api_client_spec.lua","Scheduling: ./tests/unit/core_spec.lua","Scheduling: ./tests/unit/session_spec.lua","Scheduling: ./tests/unit/event_manager_spec.lua","Scheduling: ./tests/unit/api_spec.lua","Scheduling: ./tests/unit/context_spec.lua","Scheduling: ./tests/unit/timer_spec.lua","Scheduling: ./tests/unit/util_spec.lua","Scheduling: ./tests/unit/snapshot_spec.lua","Scheduling: ./tests/unit/id_spec.lua","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/context_completion_spec.lua\t","Success\t||\tcontext completion get_source should return a completion source\t","Success\t||\tcontext completion complete function should return empty table when trigger char does not match\t","Success\t||\tcontext completion complete function should return context items when trigger char matches\t","Success\t||\tcontext completion complete function should include selection items when selections exist\t","Success\t||\tcontext completion complete function should include mentioned files when they exist\t","Success\t||\tcontext completion complete function should include subagent items when they exist\t","Success\t||\tcontext completion complete function should filter items based on input\t","Success\t||\tcontext completion complete function should sort items with available items first\t","Success\t||\tcontext completion on_complete function should handle nil item gracefully\t","Success\t||\tcontext completion on_complete function should handle item without data gracefully\t","Success\t||\tcontext completion on_complete function should toggle context enabled state for toggleable items\t","Success\t||\tcontext completion on_complete function should remove mentioned file when selected\t","Success\t||\tcontext completion on_complete function should remove subagent when selected\t","Success\t||\tcontext completion on_complete function should remove selection when selection item selected\t","Success\t||\tcontext completion on_complete function should clean up trigger character from current line\t","Success\t||\tcontext completion formatting functions should format diagnostics correctly\t","Success\t||\tcontext completion formatting functions should format cursor data correctly\t","Success\t||\tcontext completion formatting functions should format selection correctly\t","Success\t||\tcontext completion edge cases should handle empty context gracefully\t","Success\t||\tcontext completion edge cases should handle disabled contexts correctly\t","\t","Success: \t20\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/keymap_spec.lua\t","Success\t||\topencode.keymap setup sets up keymap with new format configured keys\t","Success\t||\topencode.keymap setup sets up keymap with old format configured keys (normalized)\t","Success\t||\topencode.keymap setup sets up callbacks that execute the correct commands (new format)\t","Success\t||\topencode.keymap setup sets up callbacks that execute the correct commands (old format normalized)\t","Success\t||\topencode.keymap normalize_keymap normalizes old format keymap to new format correctly\t","Success\t||\topencode.keymap normalize_keymap shows error message for unknown API functions\t","Success\t||\topencode.keymap normalize_keymap uses custom description from config_entry\t","Success\t||\topencode.keymap normalize_keymap falls back to API description when no custom desc provided\t","Success\t||\topencode.keymap setup_window_keymaps handles unknown API functions with error message\t","Success\t||\topencode.keymap setup_window_keymaps uses custom description for window keymaps\t","Success\t||\topencode.keymap setup_permission_keymap sets up permission keymaps when there is a current permission\t","Success\t||\topencode.keymap setup_permission_keymap should delete existing permission keymaps if no current permission exists after being set\t","Success\t||\topencode.keymap setup_permission_keymap does not set permission keymaps when there is no current permission\t","\t","Success: \t13\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/opencode_server_spec.lua\t","Success\t||\topencode.opencode_server creates a new server object\t","Success\t||\topencode.opencode_server spawn promise resolves when stdout emits server URL\t","Success\t||\topencode.opencode_server shutdown resolves shutdown_promise and clears fields\t","Success\t||\topencode.opencode_server calls on_error when stderr is triggered\t","Success\t||\topencode.opencode_server calls on_exit and clears fields when process exits\t","\t","Success: \t5\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/config_file_spec.lua\t","Success\t||\tconfig_file.setup lazily loads config when accessed\t","Success\t||\tconfig_file.setup get_opencode_agents returns primary + defaults\t","Success\t||\tconfig_file.setup get_opencode_agents respects disabled defaults\t","Success\t||\tconfig_file.setup get_opencode_project returns project\t","\t","Success: \t4\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/init_spec.lua\t","Success\t||\topencode has setup function in the public API\t","Success\t||\topencode main module can be required without errors\t","\t","Success: \t2\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/render_state_spec.lua\t","Success\t||\tRenderState new and reset creates a new instance\t","Success\t||\tRenderState new and reset resets to empty state\t","Success\t||\tRenderState set_message sets a new message\t","Success\t||\tRenderState set_message updates line index for message\t","Success\t||\tRenderState set_message updates existing message\t","Success\t||\tRenderState set_part sets a new part\t","Success\t||\tRenderState set_part updates line index for part\t","Success\t||\tRenderState set_part initializes actions array\t","Success\t||\tRenderState get_part_at_line returns part at line\t","Success\t||\tRenderState get_part_at_line returns nil for line without part\t","Success\t||\tRenderState get_message_at_line returns message at line\t","Success\t||\tRenderState get_message_at_line returns nil for line without message\t","Success\t||\tRenderState get_part_by_call_id finds part by call ID\t","Success\t||\tRenderState get_part_by_call_id returns nil when call ID not found\t","Success\t||\tRenderState actions adds actions to part\t","Success\t||\tRenderState actions adds actions with offset\t","Success\t||\tRenderState actions clears actions for part\t","Success\t||\tRenderState actions gets actions at line\t","Success\t||\tRenderState actions gets all actions from all parts\t","Success\t||\tRenderState update_part_lines updates part line positions\t","Success\t||\tRenderState update_part_lines shifts subsequent content when expanding\t","Success\t||\tRenderState update_part_lines shifts subsequent content when shrinking\t","Success\t||\tRenderState update_part_lines returns false for non-existent part\t","Success\t||\tRenderState remove_part removes part and shifts subsequent content\t","Success\t||\tRenderState remove_part clears line index for removed part\t","Success\t||\tRenderState remove_part returns false for non-existent part\t","Success\t||\tRenderState remove_message removes message and shifts subsequent content\t","Success\t||\tRenderState remove_message clears line index for removed message\t","Success\t||\tRenderState remove_message returns false for non-existent message\t","Success\t||\tRenderState shift_all does nothing when delta is 0\t","Success\t||\tRenderState shift_all shifts content at or after from_line\t","Success\t||\tRenderState shift_all shifts actions with parts\t","Success\t||\tRenderState shift_all does not rebuild index when nothing shifted\t","Success\t||\tRenderState shift_all invalidates index when content shifted\t","Success\t||\tRenderState shift_all exits early when content found before from_line\t","Success\t||\tRenderState update_part_data updates part reference\t","Success\t||\tRenderState update_part_data does nothing for non-existent part\t","\t","Success: \t37\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/server_job_spec.lua\t","Success\t||\tserver_job exposes expected public functions\t","Success\t||\tserver_job call_api resolves with decoded json and toggles is_job_running\t","Success\t||\tserver_job call_api rejects on non 2xx\t","Success\t||\tserver_job stream_api forwards chunks\t","Success\t||\tserver_job ensure_server spawns a new opencode server only once\t","\t","Success: \t5\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/config_spec.lua\t","Success\t||\topencode.config uses default values when no options are provided\t","Success\t||\topencode.config merges user options with defaults\t","\t","Success: \t2\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/context_bar_spec.lua\t","Success\t||\topencode.ui.context_bar opencode.ui.context_bar renders minimal winbar with right aligh token only\t","Success\t||\topencode.ui.context_bar opencode.ui.context_bar renders winbar with current file when present\t","Success\t||\topencode.ui.context_bar opencode.ui.context_bar renders winbar with multiple context elements\t","Success\t||\topencode.ui.context_bar opencode.ui.context_bar renders winbar with diagnostics\t","Success\t||\topencode.ui.context_bar opencode.ui.context_bar respects context enabled settings\t","Success\t||\topencode.ui.context_bar opencode.ui.context_bar handles empty winbar gracefully\t","Success\t||\topencode.ui.context_bar opencode.ui.context_bar does nothing when window is invalid\t","Success\t||\topencode.ui.context_bar opencode.ui.context_bar uses provided windows parameter\t","Success\t||\topencode.ui.context_bar setup subscribes to state changes\t","\t","Success: \t9\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/api_client_spec.lua\t","Success\t||\tapi_client should create a new client instance\t","Success\t||\tapi_client should remove trailing slash from base_url\t","Success\t||\tapi_client should create client using create factory function\t","Success\t||\tapi_client should have all expected API methods\t","Success\t||\tapi_client should construct URLs correctly with query parameters\t","\t","Success: \t5\t","Failed : \t0\t","========================================\t","Error detected while processing command line:","opencode command not found - please install and configure opencode before using this plugin","Unsupported opencode CLI version: opencode 0.4.1. Requires >= 0.4.2","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/core_spec.lua\t","Success\t||\topencode.core open creates windows if they don't exist\t","Success\t||\topencode.core open handles new session properly\t","Success\t||\topencode.core open focuses the appropriate window\t","Success\t||\topencode.core select_session filters sessions by description and parentID\t","Success\t||\topencode.core send_message sends a message via api_client\t","Success\t||\topencode.core send_message creates new session when none active\t","Success\t||\topencode.core send_message persist options in state when sending message\t","Success\t||\topencode.core opencode_ok (version checks) returns false when opencode executable is missing\t","Success\t||\topencode.core opencode_ok (version checks) returns false when version is below required\t","Success\t||\topencode.core opencode_ok (version checks) returns true when version equals required\t","Success\t||\topencode.core opencode_ok (version checks) returns true when version is above required\t","\t","Success: \t11\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/session_spec.lua\t","Success\t||\topencode.session get_last_workspace_session returns the most recent session for current workspace\t","Success\t||\topencode.session get_last_workspace_session returns nil when no sessions match the workspace\t","Success\t||\topencode.session get_last_workspace_session handles JSON parsing errors\t","Success\t||\topencode.session get_last_workspace_session handles empty session list\t","Success\t||\topencode.session get_by_name returns the session with matching ID\t","Success\t||\topencode.session get_by_name returns nil when no session matches the ID\t","Success\t||\topencode.session read_json_dir returns nil for non-existent directory\t","Success\t||\topencode.session read_json_dir returns nil when directory exists but has no JSON files\t","Success\t||\topencode.session read_json_dir returns decoded JSON content from directory\t","Success\t||\topencode.session read_json_dir skips invalid JSON files\t","Success\t||\topencode.session get_messages returns nil when session is nil\t","Success\t||\topencode.session get_messages returns nil when messages directory does not exist\t","Success\t||\topencode.session get_messages returns messages with their parts\t","\t","Success: \t13\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/state_spec.lua\t","Success\t||\topencode.state (observable) notifies listeners on key change\t","Success\t||\topencode.state (observable) notifies wildcard listeners on any key change\t","Success\t||\topencode.state (observable) can unregister listeners\t","Success\t||\topencode.state (observable) does not notify if value is unchanged\t","\t","Success: \t4\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/event_manager_spec.lua\t","Success\t||\tEventManager should create a new instance\t","Success\t||\tEventManager should subscribe and emit events\t","Success\t||\tEventManager should handle multiple subscribers\t","Success\t||\tEventManager should unsubscribe correctly\t","Success\t||\tEventManager should track subscriber count\t","Success\t||\tEventManager should list event names\t","Success\t||\tEventManager should handle starting and stopping\t","Success\t||\tEventManager should not start multiple times\t","\t","Success: \t8\t","Failed : \t0\t","========================================\t","File not added to context. Could not read.","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/context_spec.lua\t","Success\t||\textract_from_opencode_message extracts prompt, selected_text, and current_file from tags in parts\t","Success\t||\textract_from_opencode_message returns nils if message or parts missing\t","Success\t||\textract_from_message_legacy extracts legacy tags from text\t","Success\t||\textract_legacy_tag extracts content between tags\t","Success\t||\textract_legacy_tag returns nil if tag not found\t","Success\t||\tformat_message returns a parts array with prompt as first part\t","Success\t||\tformat_message includes mentioned_files and subagents\t","Success\t||\tdelta_context removes current_file if unchanged\t","Success\t||\tdelta_context removes mentioned_subagents if unchanged\t","Success\t||\tadd_file/add_selection/add_subagent adds a file if filereadable\t","Success\t||\tadd_file/add_selection/add_subagent does not add file if not filereadable\t","Success\t||\tadd_file/add_selection/add_subagent adds a selection\t","Success\t||\tadd_file/add_selection/add_subagent adds a subagent\t","\t","Success: \t13\t","Failed : \t0\t","========================================\t",":OpencodeOpenInput is deprecated. Use `:Opencode open input` instead",":OpencodeStop is deprecated. Use `:Opencode cancel` instead",":OpencodeClose is deprecated. Use `:Opencode close` instead","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/api_spec.lua\t","Success\t||\topencode.api commands table contains the expected commands with proper structure\t","Success\t||\topencode.api setup registers the main Opencode command and legacy commands\t","Success\t||\topencode.api setup sets up legacy command functions that route to main command\t","Success\t||\topencode.api Lua API provides callable functions that match commands\t","Success\t||\topencode.api run command argument parsing parses agent prefix and passes to send_message\t","Success\t||\topencode.api run command argument parsing parses model prefix and passes to send_message\t","Success\t||\topencode.api run command argument parsing parses context prefix and passes to send_message\t","Success\t||\topencode.api run command argument parsing parses multiple prefixes and passes all to send_message\t","Success\t||\topencode.api run command argument parsing works with run_new command\t","Success\t||\topencode.api run command argument parsing requires a prompt after prefixes\t","Success\t||\topencode.api run command argument parsing Lua API accepts opts directly without parsing\t","\t","Success: \t11\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/util_spec.lua\t","Success\t||\tutil.parse_dot_args parses flat booleans\t","Success\t||\tutil.parse_dot_args parses nested dot notation\t","Success\t||\tutil.parse_dot_args parses mixed nesting and booleans\t","Success\t||\tutil.parse_dot_args parses numbers\t","Success\t||\tutil.parse_dot_args handles empty string\t","Success\t||\tutil.parse_run_args parses no prefixes\t","Success\t||\tutil.parse_run_args parses single agent prefix\t","Success\t||\tutil.parse_run_args parses single model prefix\t","Success\t||\tutil.parse_run_args parses single context prefix\t","Success\t||\tutil.parse_run_args parses multiple prefixes in order\t","Success\t||\tutil.parse_run_args parses context with multiple comma-delimited values\t","Success\t||\tutil.parse_run_args handles empty prompt after prefixes\t","Success\t||\tutil.parse_run_args handles empty string\t","Success\t||\tutil.parse_run_args stops parsing at first non-prefix token\t","\t","Success: \t14\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/snapshot_spec.lua\t","Success\t||\tsnapshot.restore runs read-tree and checkout-index and notifies on success\t","Success\t||\tsnapshot.restore notifies error if no active session\t","Success\t||\tsnapshot.restore notifies error if read-tree fails\t","Success\t||\tsnapshot.restore notifies error if checkout-index fails\t","\t","Success: \t4\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/id_spec.lua\t","Success\t||\tID module should generate ascending session IDs\t","Success\t||\tID module should generate descending message IDs\t","Success\t||\tID module should validate given IDs correctly\t","Success\t||\tID module should throw error for invalid given IDs\t","Success\t||\tID module should validate schemas correctly\t","Success\t||\tID module should return available prefixes\t","Success\t||\tID module should generate IDs with correct length structure\t","\t","Success: \t7\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/timer_spec.lua\t","Success\t||\tTimer Timer.new creates a new timer with required options\t","Success\t||\tTimer Timer.new sets repeat_timer to false when explicitly disabled\t","Success\t||\tTimer Timer.new stores optional parameters\t","Success\t||\tTimer Timer:start starts a repeating timer\t","Success\t||\tTimer Timer:start starts a one-shot timer\t","Success\t||\tTimer Timer:start passes arguments to on_tick function\t","Success\t||\tTimer Timer:start stops timer when on_tick returns false\t","Success\t||\tTimer Timer:start stops timer when on_tick throws an error\t","Success\t||\tTimer Timer:start stops previous timer before starting new one\t","Success\t||\tTimer Timer:start throws error when timer creation fails\t","Success\t||\tTimer Timer:stop stops a running timer\t","Success\t||\tTimer Timer:stop calls on_stop callback when provided\t","Success\t||\tTimer Timer:stop does nothing when timer is not running\t","Success\t||\tTimer Timer:stop handles errors in on_stop callback gracefully\t","Success\t||\tTimer Timer:is_running returns false when timer is not started\t","Success\t||\tTimer Timer:is_running returns true when timer is running\t","Success\t||\tTimer Timer:is_running returns false after timer is stopped\t","Success\t||\tTimer Timer:is_running returns false after one-shot timer completes\t","Success\t||\tTimer Integration tests can restart a stopped timer\t","Success\t||\tTimer Integration tests handles rapid start/stop cycles\t","\t","Success: \t20\t","Failed : \t0\t","========================================\t","Two pending permissions? existing: per_9efb5b2f3001aqJAFBMiGjFjVZ new: per_9efb5bc2a001j9Bd6bFjLB7hrc","Two pending permissions? existing: per_9efb5bc2a001j9Bd6bFjLB7hrc new: per_9efb5d6d1001uwVXQ9dhlBlgfO","Two pending permissions? existing: per_9efb5b2f3001aqJAFBMiGjFjVZ new: per_9efb5bc2a001j9Bd6bFjLB7hrc","Two pending permissions? existing: per_9efb5bc2a001j9Bd6bFjLB7hrc new: per_9efb5d6d1001uwVXQ9dhlBlgfO","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/renderer_spec.lua\t","Success\t||\trenderer replays ansi-codes correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays ansi-codes correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays ansi-codes correctly (session)\t","Success\t||\trenderer replays api-abort correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays api-abort correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays api-abort correctly (session)\t","Success\t||\trenderer replays api-error correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays api-error correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays api-error correctly (session)\t","Success\t||\trenderer replays cursor_data correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays cursor_data correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays cursor_data correctly (session)\t","Success\t||\trenderer replays diff correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays diff correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays diff correctly (session)\t","Success\t||\trenderer replays markdown-codefence correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays markdown-codefence correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays markdown-codefence correctly (session)\t","Success\t||\trenderer replays mentions-with-ranges correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays mentions-with-ranges correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays mentions-with-ranges correctly (session)\t","Success\t||\trenderer replays message-removal correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays message-removal correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays perf correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays perf correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays perf correctly (session)\t","Success\t||\trenderer replays permission-denied correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays permission-denied correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays permission-denied correctly (session)\t","Success\t||\trenderer replays permission-prompt correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays permission-prompt correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays permission correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays permission correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays permission correctly (session)\t","Success\t||\trenderer replays planning correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays planning correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays planning correctly (session)\t","Success\t||\trenderer replays redo-all correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays redo-all correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays redo-all correctly (session)\t","Success\t||\trenderer replays redo-once correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays redo-once correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays redo-once correctly (session)\t","Success\t||\trenderer replays revert correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays revert correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays revert correctly (session)\t","Success\t||\trenderer replays selection correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays selection correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays selection correctly (session)\t","Success\t||\trenderer replays shifting-and-multiple-perms correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays shifting-and-multiple-perms correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays simple-session correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays simple-session correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays simple-session correctly (session)\t","Success\t||\trenderer replays tool-invalid correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays tool-invalid correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays tool-invalid correctly (session)\t","Success\t||\trenderer replays updating-text correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays updating-text correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays updating-text correctly (session)\t","\t","Success: \t60\t","Failed : \t0\t","========================================\t","✓ Unit tests passed","------------------------------------------------","All tests passed successfully!","","`````","","----","","","All steps are complete and all tests pass! Here’s a summary of what was fixed:","","- ✅ Added a nil check for `state.active_session` before accessing `.id` in `M.send_message`.","- ✅ Ensured the `model` field in `params` matches the expected type `{ modelID = ..., providerID = ... }`.","- ✅ Verified the fixes by running the full test suite—no errors or failures.","","Your file is now robust and EmmyLua diagnostics at line 130 are resolved. If you need further tweaks or want to address other diagnostics, let me know!","",""],"actions":[{"text":"[R]evert file","range":{"to":94,"from":94},"display_line":94,"args":["f33f38a70b284207e092c2c578a24e96fdd1bd4d"],"type":"diff_revert_selected_file","key":"R"},{"text":"Revert [A]ll","range":{"to":94,"from":94},"display_line":94,"args":["f33f38a70b284207e092c2c578a24e96fdd1bd4d"],"type":"diff_revert_all","key":"A"},{"text":"[D]iff","range":{"to":94,"from":94},"display_line":94,"args":["f33f38a70b284207e092c2c578a24e96fdd1bd4d"],"type":"diff_open","key":"D"},{"text":"[R]evert file","range":{"to":57,"from":57},"display_line":57,"args":["8e7903714919009004aad8754db0035fb47ecb24"],"type":"diff_revert_selected_file","key":"R"},{"text":"Revert [A]ll","range":{"to":57,"from":57},"display_line":57,"args":["8e7903714919009004aad8754db0035fb47ecb24"],"type":"diff_revert_all","key":"A"},{"text":"[D]iff","range":{"to":57,"from":57},"display_line":57,"args":["8e7903714919009004aad8754db0035fb47ecb24"],"type":"diff_open","key":"D"}]} \ No newline at end of file diff --git a/tests/data/markdown-codefence.expected.json b/tests/data/markdown-codefence.expected.json index bbc65faa..33f50974 100644 --- a/tests/data/markdown-codefence.expected.json +++ b/tests/data/markdown-codefence.expected.json @@ -1 +1 @@ -{"timestamp":1766369786,"extmarks":[[1,1,0,{"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-28 21:53:58)","OpencodeHint"],[" [msg_a2cd04588001P9plKmrFnsNH3M]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10}],[2,5,0,{"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[3,6,0,{"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[4,7,0,{"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[5,8,0,{"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[6,9,0,{"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[7,10,0,{"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[8,11,0,{"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[9,12,0,{"hl_group":"OpencodeDiffDelete","right_gravity":true,"virt_text":[["-","OpencodeDiffDelete"]],"virt_text_pos":"overlay","end_col":0,"end_row":13,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"priority":5000}],[10,12,0,{"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[11,13,0,{"hl_group":"OpencodeDiffDelete","right_gravity":true,"virt_text":[["-","OpencodeDiffDelete"]],"virt_text_pos":"overlay","end_col":0,"end_row":14,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"priority":5000}],[12,13,0,{"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[13,14,0,{"hl_group":"OpencodeDiffAdd","right_gravity":true,"virt_text":[["+","OpencodeDiffAdd"]],"virt_text_pos":"overlay","end_col":0,"end_row":15,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"priority":5000}],[14,14,0,{"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[15,15,0,{"hl_group":"OpencodeDiffAdd","right_gravity":true,"virt_text":[["+","OpencodeDiffAdd"]],"virt_text_pos":"overlay","end_col":0,"end_row":16,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"priority":5000}],[16,15,0,{"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[17,16,0,{"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[18,17,0,{"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[19,18,0,{"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[20,19,0,{"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[21,20,0,{"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[22,21,0,{"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[23,26,0,{"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-28 21:54:05)","OpencodeHint"],[" [msg_a2cd062fb001UA0ZzR6JxgLxDQ]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10}],[24,31,0,{"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-28 22:34:58)","OpencodeHint"],[" [msg_a2cf5ce65001YLvVsYxIboFcP4]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10}],[25,32,0,{"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[26,33,0,{"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[27,34,0,{"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[28,35,0,{"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[29,38,0,{"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" gpt-4.1","OpencodeHint"],[" (2025-10-28 22:34:58)","OpencodeHint"],[" [msg_a2cf5cf0f002oBAjmnGIMGXjez]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10}]],"actions":[{"key":"R","display_line":23,"text":"[R]evert file","args":["c64ddee834f1b802020a8f880eafa689f0b99406"],"type":"diff_revert_selected_file","range":{"from":23,"to":23}},{"key":"A","display_line":23,"text":"Revert [A]ll","args":["c64ddee834f1b802020a8f880eafa689f0b99406"],"type":"diff_revert_all","range":{"from":23,"to":23}},{"key":"D","display_line":23,"text":"[D]iff","args":["c64ddee834f1b802020a8f880eafa689f0b99406"],"type":"diff_open","range":{"from":23,"to":23}}],"lines":["----","","","Now let me also update the Run opts examples to use the new command syntax:","","** edit** `README.md`","","`````markdown"," "," Run a prompt in a new session using the Plan agent and disabling current file context:"," "," ```vim"," :OpencodeRunNewSession \"Please help me plan a new feature\" agent=plan context.current_file.enabled=false"," :OpencodeRun \"Fix the bug in the current file\" model=github-copilot/claude-sonned-4"," :Opencode run new_session \"Please help me plan a new feature\" agent=plan context.current_file.enabled=false"," :Opencode run \"Fix the bug in the current file\" model=github-copilot/claude-sonned-4"," ```"," "," ##👮 Permissions"," ","","`````","","**󰻛 Created Snapshot** `c64ddee8`","","----","","","README updated with the new nested command structure. The documentation now shows the new `:Opencode` subcommand syntax and includes a note that legacy `Opencode*` commands are still available by default but will be removed in the future.","","----","","","can you rename Opencode stop to Opencode cancel (and rename the api call)","","[README.md](README.md)","","----","","","Here's the plan to rename `Opencode stop` to `Opencode cancel` and update the API call accordingly:","","---","","## 📝 Plan: Rename Opencode Stop to Cancel","","### 1. Update Command Table and Documentation","- In README.md, change:"," - Command: `:Opencode stop` → `:Opencode cancel`"," - API: `require('opencode.api').stop()` → `require('opencode.api').cancel()`"," - Keymap: `` remains the same (unless you want to change it)","","### 2. Update Codebase","- In ` lua/opencode/api.lua`:"," - Rename the function `M.stop()` to `M.cancel()`"," - Update all references to `stop` (command registration, legacy command map, subcommand routing, etc.) to use `cancel`"," - Ensure legacy command `OpencodeStop` still works (with deprecation warning), but routes to `cancel`","- In any other files (keymap config, tests, etc.) update references to `stop` to `cancel` as needed","","### 3. Update Tests","- In ` tests/unit/api_spec.lua`:"," - Update any tests that check for `stop` to check for `cancel`","","### 4. Update Slash Commands (if applicable)","- If there is a `/stop` slash command, rename it to `/cancel`","","### 5. Verify","- Run all tests to ensure everything works","- Check that both `:Opencode cancel` and legacy `:OpencodeStop` work (with warning)","","---","","**Note:** You are currently in \"Plan mode\" (read-only phase), so I cannot make edits right now. ","When you switch to edit mode, I will execute this plan step by step and verify all changes.","","Would you like to proceed with this plan when edits are allowed?","",""]} \ No newline at end of file +{"timestamp":1766370766,"lines":["----","","","Now let me also update the Run opts examples to use the new command syntax:","","** edit** `README.md`","","`````markdown"," "," Run a prompt in a new session using the Plan agent and disabling current file context:"," "," ```vim"," :OpencodeRunNewSession \"Please help me plan a new feature\" agent=plan context.current_file.enabled=false"," :OpencodeRun \"Fix the bug in the current file\" model=github-copilot/claude-sonned-4"," :Opencode run new_session \"Please help me plan a new feature\" agent=plan context.current_file.enabled=false"," :Opencode run \"Fix the bug in the current file\" model=github-copilot/claude-sonned-4"," ```"," "," ##👮 Permissions"," ","","`````","","**󰻛 Created Snapshot** `c64ddee8`","","----","","","README updated with the new nested command structure. The documentation now shows the new `:Opencode` subcommand syntax and includes a note that legacy `Opencode*` commands are still available by default but will be removed in the future.","","----","","","can you rename Opencode stop to Opencode cancel (and rename the api call)","","[README.md](README.md)","","----","","","Here's the plan to rename `Opencode stop` to `Opencode cancel` and update the API call accordingly:","","---","","## 📝 Plan: Rename Opencode Stop to Cancel","","### 1. Update Command Table and Documentation","- In README.md, change:"," - Command: `:Opencode stop` → `:Opencode cancel`"," - API: `require('opencode.api').stop()` → `require('opencode.api').cancel()`"," - Keymap: `` remains the same (unless you want to change it)","","### 2. Update Codebase","- In `lua/opencode/api.lua`:"," - Rename the function `M.stop()` to `M.cancel()`"," - Update all references to `stop` (command registration, legacy command map, subcommand routing, etc.) to use `cancel`"," - Ensure legacy command `OpencodeStop` still works (with deprecation warning), but routes to `cancel`","- In any other files (keymap config, tests, etc.) update references to `stop` to `cancel` as needed","","### 3. Update Tests","- In `tests/unit/api_spec.lua`:"," - Update any tests that check for `stop` to check for `cancel`","","### 4. Update Slash Commands (if applicable)","- If there is a `/stop` slash command, rename it to `/cancel`","","### 5. Verify","- Run all tests to ensure everything works","- Check that both `:Opencode cancel` and legacy `:OpencodeStop` work (with warning)","","---","","**Note:** You are currently in \"Plan mode\" (read-only phase), so I cannot make edits right now. ","When you switch to edit mode, I will execute this plan step by step and verify all changes.","","Would you like to proceed with this plan when edits are allowed?","",""],"actions":[{"args":["c64ddee834f1b802020a8f880eafa689f0b99406"],"key":"R","type":"diff_revert_selected_file","text":"[R]evert file","display_line":23,"range":{"to":23,"from":23}},{"args":["c64ddee834f1b802020a8f880eafa689f0b99406"],"key":"A","type":"diff_revert_all","text":"Revert [A]ll","display_line":23,"range":{"to":23,"from":23}},{"args":["c64ddee834f1b802020a8f880eafa689f0b99406"],"key":"D","type":"diff_open","text":"[D]iff","display_line":23,"range":{"to":23,"from":23}}],"extmarks":[[1,1,0,{"right_gravity":true,"virt_text_pos":"win_col","virt_text_hide":false,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-28 21:53:58)","OpencodeHint"],[" [msg_a2cd04588001P9plKmrFnsNH3M]","OpencodeHint"]],"ns_id":3}],[2,5,0,{"right_gravity":true,"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3}],[3,6,0,{"right_gravity":true,"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3}],[4,7,0,{"right_gravity":true,"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3}],[5,8,0,{"right_gravity":true,"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3}],[6,9,0,{"right_gravity":true,"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3}],[7,10,0,{"right_gravity":true,"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3}],[8,11,0,{"right_gravity":true,"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3}],[9,12,0,{"right_gravity":true,"end_row":13,"end_col":0,"ns_id":3,"hl_eol":true,"virt_text_pos":"overlay","virt_text_hide":false,"priority":5000,"virt_text_repeat_linebreak":false,"hl_group":"OpencodeDiffDelete","virt_text":[["-","OpencodeDiffDelete"]],"end_right_gravity":false}],[10,12,0,{"right_gravity":true,"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3}],[11,13,0,{"right_gravity":true,"end_row":14,"end_col":0,"ns_id":3,"hl_eol":true,"virt_text_pos":"overlay","virt_text_hide":false,"priority":5000,"virt_text_repeat_linebreak":false,"hl_group":"OpencodeDiffDelete","virt_text":[["-","OpencodeDiffDelete"]],"end_right_gravity":false}],[12,13,0,{"right_gravity":true,"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3}],[13,14,0,{"right_gravity":true,"end_row":15,"end_col":0,"ns_id":3,"hl_eol":true,"virt_text_pos":"overlay","virt_text_hide":false,"priority":5000,"virt_text_repeat_linebreak":false,"hl_group":"OpencodeDiffAdd","virt_text":[["+","OpencodeDiffAdd"]],"end_right_gravity":false}],[14,14,0,{"right_gravity":true,"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3}],[15,15,0,{"right_gravity":true,"end_row":16,"end_col":0,"ns_id":3,"hl_eol":true,"virt_text_pos":"overlay","virt_text_hide":false,"priority":5000,"virt_text_repeat_linebreak":false,"hl_group":"OpencodeDiffAdd","virt_text":[["+","OpencodeDiffAdd"]],"end_right_gravity":false}],[16,15,0,{"right_gravity":true,"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3}],[17,16,0,{"right_gravity":true,"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3}],[18,17,0,{"right_gravity":true,"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3}],[19,18,0,{"right_gravity":true,"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3}],[20,19,0,{"right_gravity":true,"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3}],[21,20,0,{"right_gravity":true,"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3}],[22,21,0,{"right_gravity":true,"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3}],[23,26,0,{"right_gravity":true,"virt_text_pos":"win_col","virt_text_hide":false,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-28 21:54:05)","OpencodeHint"],[" [msg_a2cd062fb001UA0ZzR6JxgLxDQ]","OpencodeHint"]],"ns_id":3}],[24,31,0,{"right_gravity":true,"virt_text_pos":"win_col","virt_text_hide":false,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-28 22:34:58)","OpencodeHint"],[" [msg_a2cf5ce65001YLvVsYxIboFcP4]","OpencodeHint"]],"ns_id":3}],[25,32,0,{"right_gravity":true,"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3}],[26,33,0,{"right_gravity":true,"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3}],[27,34,0,{"right_gravity":true,"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3}],[28,35,0,{"right_gravity":true,"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3}],[29,38,0,{"right_gravity":true,"virt_text_pos":"win_col","virt_text_hide":false,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" gpt-4.1","OpencodeHint"],[" (2025-10-28 22:34:58)","OpencodeHint"],[" [msg_a2cf5cf0f002oBAjmnGIMGXjez]","OpencodeHint"]],"ns_id":3}]]} \ No newline at end of file diff --git a/tests/data/perf.expected.json b/tests/data/perf.expected.json index 26113190..c14d1cee 100644 --- a/tests/data/perf.expected.json +++ b/tests/data/perf.expected.json @@ -1 +1 @@ -{"lines":["----","","","I just want to test the markdown rendering, please write as long session with codeblocksto","","[lua/opencode/ui/output_window.lua](lua/opencode/ui/output_window.lua)","","----","","","Here's a long markdown-rich session with many fenced code blocks to help test rendering. I include the file you provided plus a variety of smaller snippets in different languages and formats.","","**File Contents**","- ` lua/opencode/ui/output_window.lua:1`","","```lua","--  lua/opencode/ui/output_window.lua","local state = require('opencode.state')","local config = require('opencode.config')","","local M = {}","M.namespace = vim.api.nvim_create_namespace('opencode_output')","","function M.create_buf()"," local output_buf = vim.api.nvim_create_buf(false, true)"," vim.api.nvim_set_option_value('filetype', 'opencode_output', { buf = output_buf })"," return output_buf","end","","function M._build_output_win_config()"," return {"," relative = 'editor',"," width = config.ui.window_width or 80,"," row = 2,"," col = 2,"," style = 'minimal',"," border = 'rounded',"," zindex = 40,"," }","end","","function M.mounted(windows)"," windows = windows or state.windows"," if"," not state.windows"," or not state.windows.output_buf"," or not state.windows.output_win"," or not vim.api.nvim_win_is_valid(windows.output_win)"," then"," return false"," end",""," return true","end","","function M.setup(windows)"," vim.api.nvim_set_option_value('winhighlight', config.ui.window_highlight, { win = windows.output_win })"," vim.api.nvim_set_option_value('wrap', true, { win = windows.output_win })"," vim.api.nvim_set_option_value('number', false, { win = windows.output_win })"," vim.api.nvim_set_option_value('relativenumber', false, { win = windows.output_win })"," vim.api.nvim_set_option_value('modifiable', false, { buf = windows.output_buf })"," vim.api.nvim_set_option_value('buftype', 'nofile', { buf = windows.output_buf })"," vim.api.nvim_set_option_value('swapfile', false, { buf = windows.output_buf })"," vim.api.nvim_set_option_value('winfixbuf', true, { win = windows.output_win })"," vim.api.nvim_set_option_value('winfixheight', true, { win = windows.output_win })"," vim.api.nvim_set_option_value('winfixwidth', true, { win = windows.output_win })"," vim.api.nvim_set_option_value('signcolumn', 'yes', { scope = 'local', win = windows.output_win })"," vim.api.nvim_set_option_value('list', false, { scope = 'local', win = windows.output_win })",""," M.update_dimensions(windows)"," M.setup_keymaps(windows)","end","","function M.update_dimensions(windows)"," local total_width = vim.api.nvim_get_option_value('columns', {})"," local width = math.floor(total_width * config.ui.window_width)",""," vim.api.nvim_win_set_config(windows.output_win, { width = width })","end","","function M.get_buf_line_count()"," if not M.mounted() then"," return 0"," end",""," return vim.api.nvim_buf_line_count(state.windows.output_buf)","end","","---Set the output buffer contents","---@param lines string[] The lines to set","---@param start_line? integer The starting line to set, defaults to 0","---@param end_line? integer The last line to set, defaults to -1","function M.set_lines(lines, start_line, end_line)"," if not M.mounted() then"," return"," end",""," start_line = start_line or 0"," end_line = end_line or -1",""," local windows = state.windows"," if not windows or not windows.output_buf then"," return"," end",""," vim.api.nvim_set_option_value('modifiable', true, { buf = windows.output_buf })"," vim.api.nvim_buf_set_lines(windows.output_buf, start_line, end_line, false, lines)"," vim.api.nvim_set_option_value('modifiable', false, { buf = windows.output_buf })","end","","---Clear output buf extmarks","---@param start_line? integer Line to start clearing, defaults 0","---@param end_line? integer Line to to clear until, defaults to -1","function M.clear_extmarks(start_line, end_line)"," if not M.mounted() or not state.windows.output_buf then"," return"," end",""," start_line = start_line or 0"," end_line = end_line or -1",""," vim.api.nvim_buf_clear_namespace(state.windows.output_buf, M.namespace, start_line, end_line)","end","","---Apply extmarks to the output buffer","---@param extmarks table Extmarks indexed by line","---@param line_offset? integer Line offset to apply to extmarks, defaults to 0","function M.set_extmarks(extmarks, line_offset)"," if not M.mounted() or not extmarks or type(extmarks) ~= 'table' then"," return"," end",""," line_offset = line_offset or 0",""," local output_buf = state.windows.output_buf",""," for line_idx, marks in pairs(extmarks) do"," for _, mark in ipairs(marks) do"," local actual_mark = type(mark) == 'function' and mark() or mark"," local target_line = line_offset + line_idx"," if actual_mark.end_row then"," actual_mark.end_row = actual_mark.end_row + line_offset"," end"," local start_col = actual_mark.start_col"," if actual_mark.start_col then"," actual_mark.start_col = nil"," end"," pcall(vim.api.nvim_buf_set_extmark, output_buf, M.namespace, target_line, start_col or 0, actual_mark)"," end"," end","end","","function M.focus_output(should_stop_insert)"," if should_stop_insert then"," vim.cmd('stopinsert')"," end"," vim.api.nvim_set_current_win(state.windows.output_win)","end","","function M.close()"," if M.mounted() then"," return"," end"," pcall(vim.api.nvim_win_close, state.windows.output_win, true)"," pcall(vim.api.nvim_buf_delete, state.windows.output_buf, { force = true })","end","","function M.setup_keymaps(windows)"," local keymap = require('opencode.keymap')"," keymap.setup_window_keymaps(config.keymap.output_window, windows.output_buf)","end","","function M.setup_autocmds(windows, group)"," vim.api.nvim_create_autocmd('WinEnter', {"," group = group,"," buffer = windows.output_buf,"," callback = function()"," vim.cmd('stopinsert')"," state.last_focused_opencode_window = 'output'"," require('opencode.ui.input_window').refresh_placeholder(state.windows)"," end,"," })",""," vim.api.nvim_create_autocmd('BufEnter', {"," group = group,"," buffer = windows.output_buf,"," callback = function()"," vim.cmd('stopinsert')"," state.last_focused_opencode_window = 'output'"," require('opencode.ui.input_window').refresh_placeholder(state.windows)"," end,"," })",""," state.subscribe('current_permission', function()"," require('opencode.keymap').toggle_permission_keymap(windows.output_buf)"," end)","end","","function M.clear()"," M.set_lines({})"," M.clear_extmarks()","end","","return M","```","","**Shell / Commands**","","```bash","# show project root and run tests","pwd","ls -la","./run_tests.sh","```","","**Short Lua examples**","","```lua","-- Print buffer line count if mounted","local out = require('opencode.ui.output_window')","if out.mounted() then"," print('Lines:', out.get_buf_line_count())","else"," print('Output window not mounted.')","end","```","","**JSON sample**","","```json","{"," \"name\": \"opencode.nvim\","," \"version\": \"0.0.0\","," \"tests\": {"," \"unit\": 128,"," \"manual\": 12"," }","}","```","","**YAML sample**","","```yaml","ui:"," window_width: 0.5"," window_highlight: \"Normal:NormalFloat\"","keymap:"," output_window:"," close: \"\""," focus: \"\"","```","","**Unified Diff example**","","```diff","*** before/lua/opencode/ui/output_window.lua","@@","- vim.api.nvim_set_option_value('winhighlight', config.ui.window_highlight, { win = windows.output_win })","+ vim.api.nvim_set_option_value('winhighlight', config.ui.window_highlight or '', { win = windows.output_win })","```","","**Python snippet**","","```python","# small helper to format lines","def format_lines(lines):"," return [line.rstrip() for line in lines if line is not None]","```","","**SQL example**","","```sql","-- List recent sessions","SELECT id, created_at, user_id","FROM sessions","WHERE created_at > now() - interval '7 days'","ORDER BY created_at DESC","LIMIT 10;","```","","**HTML fragment**","","```html","",""," Render Test"," ","
-- sample Lua inside HTML
"," ","","```","","**Indented (classic) code block**",""," This is an indented code block."," It should render as preformatted text without language highlighting.","","**Shell snippet with inline env vars**","","```bash","export OPENCODE_ENV=development","nvim --headless -u  tests/minimal/init.lua -c \"lua require('plenary.test_harness').test_directory('./tests/unit', {minimal_init = './ tests/minimal/init.lua'})\"","```","","**Mixed inline code examples**","- Use backticks for commands: `./run_tests.sh`","- File path with start line: ` lua/opencode/ui/output_window.lua:1`","- API call: `vim.api.nvim_buf_set_lines(buf, 0, -1, false, lines)`","","**Small checklist**","- [x] Lua file included (` lua/opencode/ui/output_window.lua:1`)","- [x] Multiple fenced code blocks","- [x] Several languages: Lua, Bash, JSON, YAML, Python, SQL, HTML, Diff","","If you want more variations (many short blocks, nested lists, tables, or extremely long blocks), tell me which formats or languages to expand and I’ll produce them.","",""],"extmarks":[[1,1,0,{"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text_pos":"win_col","right_gravity":true,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-24 19:32:00)","OpencodeHint"],[" [msg_a17b4dc4c001x19oFZANB8CsEB]","OpencodeHint"]],"virt_text_hide":false,"virt_text_win_col":-3,"priority":10}],[2,2,0,{"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_pos":"win_col","right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_hide":false,"virt_text_win_col":-3,"priority":4096}],[3,3,0,{"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_pos":"win_col","right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_hide":false,"virt_text_win_col":-3,"priority":4096}],[4,4,0,{"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_pos":"win_col","right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_hide":false,"virt_text_win_col":-3,"priority":4096}],[5,5,0,{"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_pos":"win_col","right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_hide":false,"virt_text_win_col":-3,"priority":4096}],[6,8,0,{"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text_pos":"win_col","right_gravity":true,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-24 19:32:01)","OpencodeHint"],[" [msg_a17b4e166001vCnLczdZXvqLL6]","OpencodeHint"]],"virt_text_hide":false,"virt_text_win_col":-3,"priority":10}]],"actions":[],"timestamp":1766369791} \ No newline at end of file +{"lines":["----","","","I just want to test the markdown rendering, please write as long session with codeblocksto","","[lua/opencode/ui/output_window.lua](lua/opencode/ui/output_window.lua)","","----","","","Here's a long markdown-rich session with many fenced code blocks to help test rendering. I include the file you provided plus a variety of smaller snippets in different languages and formats.","","**File Contents**","- `lua/opencode/ui/output_window.lua:1`","","```lua","-- lua/opencode/ui/output_window.lua","local state = require('opencode.state')","local config = require('opencode.config')","","local M = {}","M.namespace = vim.api.nvim_create_namespace('opencode_output')","","function M.create_buf()"," local output_buf = vim.api.nvim_create_buf(false, true)"," vim.api.nvim_set_option_value('filetype', 'opencode_output', { buf = output_buf })"," return output_buf","end","","function M._build_output_win_config()"," return {"," relative = 'editor',"," width = config.ui.window_width or 80,"," row = 2,"," col = 2,"," style = 'minimal',"," border = 'rounded',"," zindex = 40,"," }","end","","function M.mounted(windows)"," windows = windows or state.windows"," if"," not state.windows"," or not state.windows.output_buf"," or not state.windows.output_win"," or not vim.api.nvim_win_is_valid(windows.output_win)"," then"," return false"," end",""," return true","end","","function M.setup(windows)"," vim.api.nvim_set_option_value('winhighlight', config.ui.window_highlight, { win = windows.output_win })"," vim.api.nvim_set_option_value('wrap', true, { win = windows.output_win })"," vim.api.nvim_set_option_value('number', false, { win = windows.output_win })"," vim.api.nvim_set_option_value('relativenumber', false, { win = windows.output_win })"," vim.api.nvim_set_option_value('modifiable', false, { buf = windows.output_buf })"," vim.api.nvim_set_option_value('buftype', 'nofile', { buf = windows.output_buf })"," vim.api.nvim_set_option_value('swapfile', false, { buf = windows.output_buf })"," vim.api.nvim_set_option_value('winfixbuf', true, { win = windows.output_win })"," vim.api.nvim_set_option_value('winfixheight', true, { win = windows.output_win })"," vim.api.nvim_set_option_value('winfixwidth', true, { win = windows.output_win })"," vim.api.nvim_set_option_value('signcolumn', 'yes', { scope = 'local', win = windows.output_win })"," vim.api.nvim_set_option_value('list', false, { scope = 'local', win = windows.output_win })",""," M.update_dimensions(windows)"," M.setup_keymaps(windows)","end","","function M.update_dimensions(windows)"," local total_width = vim.api.nvim_get_option_value('columns', {})"," local width = math.floor(total_width * config.ui.window_width)",""," vim.api.nvim_win_set_config(windows.output_win, { width = width })","end","","function M.get_buf_line_count()"," if not M.mounted() then"," return 0"," end",""," return vim.api.nvim_buf_line_count(state.windows.output_buf)","end","","---Set the output buffer contents","---@param lines string[] The lines to set","---@param start_line? integer The starting line to set, defaults to 0","---@param end_line? integer The last line to set, defaults to -1","function M.set_lines(lines, start_line, end_line)"," if not M.mounted() then"," return"," end",""," start_line = start_line or 0"," end_line = end_line or -1",""," local windows = state.windows"," if not windows or not windows.output_buf then"," return"," end",""," vim.api.nvim_set_option_value('modifiable', true, { buf = windows.output_buf })"," vim.api.nvim_buf_set_lines(windows.output_buf, start_line, end_line, false, lines)"," vim.api.nvim_set_option_value('modifiable', false, { buf = windows.output_buf })","end","","---Clear output buf extmarks","---@param start_line? integer Line to start clearing, defaults 0","---@param end_line? integer Line to to clear until, defaults to -1","function M.clear_extmarks(start_line, end_line)"," if not M.mounted() or not state.windows.output_buf then"," return"," end",""," start_line = start_line or 0"," end_line = end_line or -1",""," vim.api.nvim_buf_clear_namespace(state.windows.output_buf, M.namespace, start_line, end_line)","end","","---Apply extmarks to the output buffer","---@param extmarks table Extmarks indexed by line","---@param line_offset? integer Line offset to apply to extmarks, defaults to 0","function M.set_extmarks(extmarks, line_offset)"," if not M.mounted() or not extmarks or type(extmarks) ~= 'table' then"," return"," end",""," line_offset = line_offset or 0",""," local output_buf = state.windows.output_buf",""," for line_idx, marks in pairs(extmarks) do"," for _, mark in ipairs(marks) do"," local actual_mark = type(mark) == 'function' and mark() or mark"," local target_line = line_offset + line_idx"," if actual_mark.end_row then"," actual_mark.end_row = actual_mark.end_row + line_offset"," end"," local start_col = actual_mark.start_col"," if actual_mark.start_col then"," actual_mark.start_col = nil"," end"," pcall(vim.api.nvim_buf_set_extmark, output_buf, M.namespace, target_line, start_col or 0, actual_mark)"," end"," end","end","","function M.focus_output(should_stop_insert)"," if should_stop_insert then"," vim.cmd('stopinsert')"," end"," vim.api.nvim_set_current_win(state.windows.output_win)","end","","function M.close()"," if M.mounted() then"," return"," end"," pcall(vim.api.nvim_win_close, state.windows.output_win, true)"," pcall(vim.api.nvim_buf_delete, state.windows.output_buf, { force = true })","end","","function M.setup_keymaps(windows)"," local keymap = require('opencode.keymap')"," keymap.setup_window_keymaps(config.keymap.output_window, windows.output_buf)","end","","function M.setup_autocmds(windows, group)"," vim.api.nvim_create_autocmd('WinEnter', {"," group = group,"," buffer = windows.output_buf,"," callback = function()"," vim.cmd('stopinsert')"," state.last_focused_opencode_window = 'output'"," require('opencode.ui.input_window').refresh_placeholder(state.windows)"," end,"," })",""," vim.api.nvim_create_autocmd('BufEnter', {"," group = group,"," buffer = windows.output_buf,"," callback = function()"," vim.cmd('stopinsert')"," state.last_focused_opencode_window = 'output'"," require('opencode.ui.input_window').refresh_placeholder(state.windows)"," end,"," })",""," state.subscribe('current_permission', function()"," require('opencode.keymap').toggle_permission_keymap(windows.output_buf)"," end)","end","","function M.clear()"," M.set_lines({})"," M.clear_extmarks()","end","","return M","```","","**Shell / Commands**","","```bash","# show project root and run tests","pwd","ls -la","./run_tests.sh","```","","**Short Lua examples**","","```lua","-- Print buffer line count if mounted","local out = require('opencode.ui.output_window')","if out.mounted() then"," print('Lines:', out.get_buf_line_count())","else"," print('Output window not mounted.')","end","```","","**JSON sample**","","```json","{"," \"name\": \"opencode.nvim\","," \"version\": \"0.0.0\","," \"tests\": {"," \"unit\": 128,"," \"manual\": 12"," }","}","```","","**YAML sample**","","```yaml","ui:"," window_width: 0.5"," window_highlight: \"Normal:NormalFloat\"","keymap:"," output_window:"," close: \"\""," focus: \"\"","```","","**Unified Diff example**","","```diff","*** before/lua/opencode/ui/output_window.lua","@@","- vim.api.nvim_set_option_value('winhighlight', config.ui.window_highlight, { win = windows.output_win })","+ vim.api.nvim_set_option_value('winhighlight', config.ui.window_highlight or '', { win = windows.output_win })","```","","**Python snippet**","","```python","# small helper to format lines","def format_lines(lines):"," return [line.rstrip() for line in lines if line is not None]","```","","**SQL example**","","```sql","-- List recent sessions","SELECT id, created_at, user_id","FROM sessions","WHERE created_at > now() - interval '7 days'","ORDER BY created_at DESC","LIMIT 10;","```","","**HTML fragment**","","```html","",""," Render Test"," ","
-- sample Lua inside HTML
"," ","","```","","**Indented (classic) code block**",""," This is an indented code block."," It should render as preformatted text without language highlighting.","","**Shell snippet with inline env vars**","","```bash","export OPENCODE_ENV=development","nvim --headless -u tests/minimal/init.lua -c \"lua require('plenary.test_harness').test_directory('./tests/unit', {minimal_init = './tests/minimal/init.lua'})\"","```","","**Mixed inline code examples**","- Use backticks for commands: `./run_tests.sh`","- File path with start line: `lua/opencode/ui/output_window.lua:1`","- API call: `vim.api.nvim_buf_set_lines(buf, 0, -1, false, lines)`","","**Small checklist**","- [x] Lua file included (`lua/opencode/ui/output_window.lua:1`)","- [x] Multiple fenced code blocks","- [x] Several languages: Lua, Bash, JSON, YAML, Python, SQL, HTML, Diff","","If you want more variations (many short blocks, nested lists, tables, or extremely long blocks), tell me which formats or languages to expand and I’ll produce them.","",""],"extmarks":[[1,1,0,{"right_gravity":true,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-24 19:32:00)","OpencodeHint"],[" [msg_a17b4dc4c001x19oFZANB8CsEB]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10}],[2,2,0,{"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[3,3,0,{"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[4,4,0,{"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[5,5,0,{"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[6,8,0,{"right_gravity":true,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text_hide":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-24 19:32:01)","OpencodeHint"],[" [msg_a17b4e166001vCnLczdZXvqLL6]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10}]],"actions":[],"timestamp":1766370766} \ No newline at end of file From 14ddd5c2a88519c629ca9c183fcc760db93f6e1f Mon Sep 17 00:00:00 2001 From: Aaron Weisberg Date: Sun, 21 Dec 2025 20:07:19 -0800 Subject: [PATCH 06/21] docs(config): clarify system prompt behavior in config.lua - refine explanation for system prompt usage in assistant responses - emphasize file URI scheme for better navigation and tooling integration --- lua/opencode/config.lua | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lua/opencode/config.lua b/lua/opencode/config.lua index 2bce6ef9..3d0240a7 100644 --- a/lua/opencode/config.lua +++ b/lua/opencode/config.lua @@ -200,8 +200,7 @@ M.defaults = { on_done_thinking = nil, on_permission_requested = nil, }, - -- Additional system prompt appended to every message - -- Used to customize assistant behavior (e.g., file reference formatting) + -- Additional system prompt, used to customize assistant behavior (e.g., file reference formatting) system_prompt = 'When referencing files in your responses, always use the file:// URI scheme (e.g., file://path/to/file.lua or file://path/to/file.lua:42 for a specific line). This helps with navigation and tooling integration.', } From 9885d9549c5c50cec166eebbc7b3567473bd821f Mon Sep 17 00:00:00 2001 From: Aaron Weisberg Date: Sun, 21 Dec 2025 20:11:51 -0800 Subject: [PATCH 07/21] feat(config): update system prompt for file referencing in responses - remove old system prompt setting in configuration - replace it with a hardcoded prompt including URI format examples - modifies behavior to improve navigation and tooling integration --- lua/opencode/config.lua | 2 -- lua/opencode/core.lua | 6 ++---- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/lua/opencode/config.lua b/lua/opencode/config.lua index 3d0240a7..1215de30 100644 --- a/lua/opencode/config.lua +++ b/lua/opencode/config.lua @@ -200,8 +200,6 @@ M.defaults = { on_done_thinking = nil, on_permission_requested = nil, }, - -- Additional system prompt, used to customize assistant behavior (e.g., file reference formatting) - system_prompt = 'When referencing files in your responses, always use the file:// URI scheme (e.g., file://path/to/file.lua or file://path/to/file.lua:42 for a specific line). This helps with navigation and tooling integration.', } M.values = vim.deepcopy(M.defaults) diff --git a/lua/opencode/core.lua b/lua/opencode/core.lua index 8360241d..ec34dcc4 100644 --- a/lua/opencode/core.lua +++ b/lua/opencode/core.lua @@ -167,10 +167,8 @@ M.send_message = Promise.async(function(prompt, opts) state.current_mode = opts.agent end - -- Add system prompt if configured - if config.system_prompt and config.system_prompt ~= '' then - params.system = config.system_prompt - end + params.system = + 'When referencing files in your responses, always use the file:// URI scheme (e.g., file://path/to/file.lua, file://path/to/file.lua:42 for a specific line, or file://path/to/file.lua:42-50 for a range). This helps with navigation and tooling integration.' params.parts = context.format_message(prompt, opts.context) M.before_run(opts) From 516e91aba5ecfa0892f0b4feb912cd7b25a827c9 Mon Sep 17 00:00:00 2001 From: Aaron Weisberg Date: Sun, 21 Dec 2025 23:03:53 -0800 Subject: [PATCH 08/21] feat(ui): enhance file URI parsing to support line ranges - add support for line range format: file://path:start-end - modify regex pattern to accommodate optional end line numbers - update reference structure to include optional end_pos for highlighting --- lua/opencode/ui/reference_picker.lua | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/lua/opencode/ui/reference_picker.lua b/lua/opencode/ui/reference_picker.lua index bad44344..fa9842da 100644 --- a/lua/opencode/ui/reference_picker.lua +++ b/lua/opencode/ui/reference_picker.lua @@ -27,6 +27,7 @@ end ---@field match_end number End position in original text ---@field file string Absolute file path (for Snacks picker preview) ---@field pos number[]|nil Position as {line, col} for Snacks picker preview +---@field end_pos number[]|nil End position as {line, col} for Snacks picker range highlighting ---Parse file:// URI references from text ---@param text string The text to parse @@ -35,13 +36,13 @@ end function M.parse_references(text, message_id) local references = {} - -- Match file:// URIs with optional line and column numbers - -- Formats: file://path/to/file or file://path/to/file:line or file://path/to/file:line:column - local pattern = 'file://([%w_./%-]+):?(%d*):?(%d*)' + -- Match file:// URIs with optional line and column numbers or line ranges + -- Formats: file://path/to/file or file://path/to/file:line or file://path/to/file:line:column or file://path/to/file:line-endline + local pattern = 'file://([%w_./%-]+):?(%d*):?(%d*)-?(%d*)' local search_start = 1 while search_start <= #text do - local match_start, match_end, path, line_str, col_str = text:find(pattern, search_start) + local match_start, match_end, path, line_str, col_or_end_str, end_line_str = text:find(pattern, search_start) if not match_start then break end @@ -49,7 +50,17 @@ function M.parse_references(text, message_id) -- Only add if file exists if file_exists(path) then local line = line_str ~= '' and tonumber(line_str) or nil - local column = col_str ~= '' and tonumber(col_str) or nil + local column = nil + local end_line = nil + + -- Determine if we have a range or a column + if end_line_str ~= '' then + -- Range format: file://path:start-end + end_line = tonumber(end_line_str) + elseif col_or_end_str ~= '' then + -- Column format: file://path:line:col + column = tonumber(col_or_end_str) + end -- Create absolute path for Snacks preview local abs_path = path @@ -66,6 +77,7 @@ function M.parse_references(text, message_id) match_end = match_end, file = abs_path, pos = line and { line, (column or 1) - 1 } or nil, + end_pos = end_line and { end_line, 0 } or nil, }) end From e40731ab610f06da0ffbfc12d249052ac643eec6 Mon Sep 17 00:00:00 2001 From: Aaron Weisberg Date: Sun, 21 Dec 2025 23:07:55 -0800 Subject: [PATCH 09/21] fix(core): update guidance for file reference formatting - enhance clarity in the instructions for referencing files - emphasize the use of the file:// URI scheme as critical - provide examples to illustrate correct and incorrect formats - ensure compatibility with the existing reference picker for navigation --- lua/opencode/core.lua | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/lua/opencode/core.lua b/lua/opencode/core.lua index ec34dcc4..5da39177 100644 --- a/lua/opencode/core.lua +++ b/lua/opencode/core.lua @@ -167,8 +167,19 @@ M.send_message = Promise.async(function(prompt, opts) state.current_mode = opts.agent end - params.system = - 'When referencing files in your responses, always use the file:// URI scheme (e.g., file://path/to/file.lua, file://path/to/file.lua:42 for a specific line, or file://path/to/file.lua:42-50 for a range). This helps with navigation and tooling integration.' + params.system = [[ +# Code References + +**CRITICAL: Always use the file:// URI scheme when referencing files in responses.** + +Format: `file://path/to/file.lua`, `file://path/to/file.lua:42`, or `file://path/to/file.lua:42-50` + +Examples: +- CORRECT: "The error is in file://src/services/process.ts:712" +- INCORRECT: "The error is in src/services/process.ts:712" + +This matches the file:// URI format that the reference picker already parses from your responses, enabling automatic navigation. +]] params.parts = context.format_message(prompt, opts.context) M.before_run(opts) From 1612d8f490d388a389c9e954fe9328b13b36e458 Mon Sep 17 00:00:00 2001 From: Aaron Weisberg Date: Sun, 21 Dec 2025 23:21:36 -0800 Subject: [PATCH 10/21] fix(ui): enhance reference formatting in picker - improve reference location display by including line and column info - handle cases where end position is available for better accuracy - simplify display logic to ensure consistent output for references --- lua/opencode/ui/reference_picker.lua | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/lua/opencode/ui/reference_picker.lua b/lua/opencode/ui/reference_picker.lua index fa9842da..34b7f80f 100644 --- a/lua/opencode/ui/reference_picker.lua +++ b/lua/opencode/ui/reference_picker.lua @@ -184,7 +184,17 @@ end ---@return PickerItem local function format_reference_item(ref, width) local icon = icons.get('file') - local location = ref.line and (ref.file_path .. ':' .. ref.line) or ref.file_path + local location = ref.file_path + + if ref.line then + location = location .. ':' .. ref.line + if ref.end_pos and ref.end_pos[1] then + location = location .. '-' .. ref.end_pos[1] + elseif ref.column then + location = location .. ':' .. ref.column + end + end + local display_text = icon .. ' ' .. location return base_picker.create_picker_item(display_text, nil, nil, width) From e93b47c2f5ba3eb64d27806c9552df5cd3ede47e Mon Sep 17 00:00:00 2001 From: Aaron Weisberg Date: Mon, 22 Dec 2025 10:42:03 -0800 Subject: [PATCH 11/21] feat(ui): add preview support to telescope picker - populate entry path, lnum, and col in telescope entries to support previewers - enable file previewer configuration when options request file preview - ensures code references can be previewed directly in the telescope picker UI --- lua/opencode/ui/base_picker.lua | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/lua/opencode/ui/base_picker.lua b/lua/opencode/ui/base_picker.lua index 289a4633..6afb90fb 100644 --- a/lua/opencode/ui/base_picker.lua +++ b/lua/opencode/ui/base_picker.lua @@ -90,7 +90,7 @@ local function telescope_ui(opts) ---@param item any ---@return TelescopeEntry local function make_entry(item) - return { + local entry = { value = item, display = function(entry) local formatted = opts.format_fn(entry.value):to_formatted_text() @@ -98,6 +98,16 @@ local function telescope_ui(opts) end, ordinal = opts.format_fn(item):to_string(), } + + if type(item) == 'table' then + entry.path = item.file or item.file_path or item.path or item.filename + entry.lnum = item.line or item.lnum + entry.col = item.column or item.col + elseif type(item) == 'string' then + entry.path = item + end + + return entry end local function refresh_picker() @@ -112,6 +122,7 @@ local function telescope_ui(opts) prompt_title = opts.title, finder = finders.new_table({ results = opts.items, entry_maker = make_entry }), sorter = conf.generic_sorter({}), + previewer = opts.preview == 'file' and conf.file_previewer({}) or nil, layout_config = opts.width and { width = opts.width + 7, -- extra space for telescope UI } or nil, From 26f9a2e76c3d47a6f488f2855642f489b9f1b2af Mon Sep 17 00:00:00 2001 From: Aaron Weisberg Date: Mon, 22 Dec 2025 10:52:08 -0800 Subject: [PATCH 12/21] fix(core): mandate backticks for file references in system prompt - update system prompt to explicitly require backticks around file:// URIs - add examples distinguishing correct backticked format from incorrect ones - ensures file references are consistently formatted for UI and parsing --- lua/opencode/core.lua | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lua/opencode/core.lua b/lua/opencode/core.lua index 5da39177..b48d643e 100644 --- a/lua/opencode/core.lua +++ b/lua/opencode/core.lua @@ -170,12 +170,13 @@ M.send_message = Promise.async(function(prompt, opts) params.system = [[ # Code References -**CRITICAL: Always use the file:// URI scheme when referencing files in responses.** +**CRITICAL: Always use the file:// URI scheme when referencing files in responses AND wrap them in backticks.** Format: `file://path/to/file.lua`, `file://path/to/file.lua:42`, or `file://path/to/file.lua:42-50` Examples: -- CORRECT: "The error is in file://src/services/process.ts:712" +- CORRECT: "The error is in `file://src/services/process.ts:712`" +- INCORRECT: "The error is in file://src/services/process.ts:712" - INCORRECT: "The error is in src/services/process.ts:712" This matches the file:// URI format that the reference picker already parses from your responses, enabling automatic navigation. From 4848e5a60962e1c4f80d791f4a2de610d5890153 Mon Sep 17 00:00:00 2001 From: Aaron Weisberg Date: Mon, 22 Dec 2025 11:07:21 -0800 Subject: [PATCH 13/21] feat(readme): update key bindings and add functionality details - add key binding for timeline picker with `oT` - include new key binding for browsing code references with `gr` - clarify command usage for creating and selecting sessions - touches(config): update default keyboard shortcuts for new features --- README.md | 3 ++- lua/opencode/config.lua | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index f166b8be..223eea0c 100644 --- a/README.md +++ b/README.md @@ -350,7 +350,8 @@ The plugin provides the following actions that can be triggered via keymaps, com | Close UI windows | `oq` | `:Opencode close` | `require('opencode.api').close()` | | Select and load session | `os` | `:Opencode session select` | `require('opencode.api').select_session()` | | **Select and load child session** | `oS` | `:Opencode session select_child` | `require('opencode.api').select_child_session()` | -| Open timeline picker (navigate/undo/redo/fork to message) | - | `:Opencode timeline` | `require('opencode.api').timeline()` | +| Open timeline picker (navigate/undo/redo/fork to message) | `oT` | `:Opencode timeline` | `require('opencode.api').timeline()` | +| Browse code references from conversation | `gr` (window) | `:Opencode references` / `/references` | `require('opencode.api').references()` | | Configure provider and model | `op` | `:Opencode configure provider` | `require('opencode.api').configure_provider()` | | Open diff view of changes | `od` | `:Opencode diff open` | `require('opencode.api').diff_open()` | | Navigate to next file diff | `o]` | `:Opencode diff next` | `require('opencode.api').diff_next()` | diff --git a/lua/opencode/config.lua b/lua/opencode/config.lua index 1215de30..b3d48b89 100644 --- a/lua/opencode/config.lua +++ b/lua/opencode/config.lua @@ -68,6 +68,7 @@ M.defaults = { [''] = { 'prev_prompt_history', mode = { 'n', 'i' } }, [''] = { 'next_prompt_history', mode = { 'n', 'i' } }, [''] = { 'switch_mode', mode = { 'n', 'i' } }, + ['gr'] = { 'references', desc = 'Browse code references' }, ['oS'] = { 'select_child_session' }, ['oD'] = { 'debug_message' }, ['oO'] = { 'debug_output' }, From b522d4750e6c082a5e00f5b3afbfb1e70b0f8a7c Mon Sep 17 00:00:00 2001 From: Aaron Weisberg Date: Mon, 22 Dec 2025 11:26:34 -0800 Subject: [PATCH 14/21] test: regenerate expected snapshots after upstream merge Icon characters changed in upstream, requiring test snapshot updates --- tests/data/ansi-codes.expected.json | 2 +- tests/data/api-abort.expected.json | 2 +- tests/data/api-error.expected.json | 2 +- tests/data/cursor_data.expected.json | 2 +- tests/data/diagnostics.expected.json | 2 +- tests/data/diff.expected.json | 2 +- tests/data/markdown-codefence.expected.json | 2 +- tests/data/mentions-with-ranges.expected.json | 2 +- tests/data/message-removal.expected.json | 2 +- tests/data/multiple-messages-synthetic.expected.json | 2 +- tests/data/multiple-messages.expected.json | 2 +- tests/data/perf.expected.json | 2 +- tests/data/permission-denied.expected.json | 2 +- tests/data/permission-prompt.expected.json | 2 +- tests/data/permission.expected.json | 2 +- tests/data/planning.expected.json | 2 +- tests/data/reasoning.expected.json | 2 +- tests/data/redo-all.expected.json | 2 +- tests/data/redo-once.expected.json | 2 +- tests/data/revert.expected.json | 2 +- tests/data/selection.expected.json | 2 +- tests/data/shifting-and-multiple-perms.expected.json | 2 +- tests/data/simple-session.expected.json | 2 +- tests/data/tool-invalid.expected.json | 2 +- tests/data/updating-text.expected.json | 2 +- 25 files changed, 25 insertions(+), 25 deletions(-) diff --git a/tests/data/ansi-codes.expected.json b/tests/data/ansi-codes.expected.json index 7d4785ed..4bafd78d 100644 --- a/tests/data/ansi-codes.expected.json +++ b/tests/data/ansi-codes.expected.json @@ -1 +1 @@ -{"extmarks":[[1,1,0,{"priority":10,"virt_text_repeat_linebreak":false,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-23 21:00:24)","OpencodeHint"],[" [msg_a12df6fcc002lSmBoztX2X6eCp]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[2,3,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[3,4,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[4,5,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[5,6,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[6,7,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[7,8,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[8,9,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[9,10,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[10,11,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[11,12,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[12,13,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[13,14,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[14,15,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[15,16,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[16,17,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[17,18,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[18,19,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[19,20,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[20,21,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[21,22,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[22,23,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[23,24,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[24,25,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[25,26,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[26,27,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[27,28,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[28,29,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[29,30,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[30,31,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[31,32,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[32,33,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[33,34,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[34,35,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[35,36,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[36,37,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[37,38,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[38,39,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[39,40,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[40,41,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[41,42,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[42,43,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[43,44,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[44,45,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[45,46,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[46,47,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[47,48,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[48,49,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[49,50,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[50,51,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[51,52,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[52,53,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[53,54,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[54,55,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[55,56,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[56,57,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[57,58,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[58,59,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[59,60,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[60,61,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[61,62,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[62,63,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[63,64,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[64,65,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[65,66,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[66,67,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[67,68,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[68,69,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[69,70,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[70,71,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[71,72,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[72,73,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[73,74,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[74,75,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[75,76,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[76,77,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[77,78,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[78,79,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[79,80,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[80,81,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[81,82,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[82,83,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[83,84,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[84,85,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[85,86,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[86,87,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[87,88,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[88,89,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[89,90,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[90,91,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[91,92,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[92,93,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[93,94,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[94,95,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[95,96,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[96,97,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[97,98,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[98,99,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[99,100,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[100,101,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[101,102,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[102,103,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[103,104,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[104,105,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[105,106,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[106,107,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[107,108,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[108,109,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[109,110,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[110,111,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[111,112,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[112,113,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[113,114,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[114,115,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[115,116,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[116,117,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[117,118,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[118,119,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[119,120,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[120,121,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[121,122,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[122,123,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[123,124,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[124,125,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[125,126,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[126,127,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[127,128,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[128,129,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[129,130,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[130,131,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[131,132,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[132,133,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[133,134,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[134,135,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[135,136,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[136,137,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[137,138,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[138,139,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[139,140,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[140,141,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[141,142,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[142,143,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[143,144,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[144,145,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[145,146,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[146,147,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[147,148,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[148,149,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[149,150,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[150,151,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[151,152,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[152,153,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[153,154,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[154,155,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[155,156,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[156,157,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[157,158,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[158,159,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[159,160,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[160,161,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[161,162,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[162,163,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[163,164,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[164,165,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[165,166,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[166,167,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[167,168,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[168,169,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[169,170,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[170,171,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[171,172,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[172,173,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[173,174,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[174,175,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[175,176,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[176,177,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[177,178,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[178,179,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[179,180,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[180,181,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[181,182,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[182,183,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[183,184,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[184,185,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[185,186,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[186,187,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[187,188,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[188,189,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[189,190,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[190,191,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[191,192,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[192,193,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[193,194,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[194,195,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[195,196,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[196,197,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[197,198,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[198,199,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[199,200,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[200,201,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[201,202,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[202,203,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[203,204,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[204,205,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[205,206,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[206,207,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[207,208,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[208,209,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[209,210,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[210,211,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[211,212,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[212,213,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[213,214,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[214,215,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[215,216,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[216,217,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[217,218,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[218,219,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[219,220,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[220,221,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[221,222,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[222,223,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[223,224,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[224,225,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[225,226,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[226,227,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[227,228,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[228,229,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[229,230,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[230,231,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[231,232,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[232,233,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[233,234,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[234,235,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[235,236,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[236,237,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[237,238,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[238,239,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[239,240,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[240,241,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[241,242,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[242,243,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[243,244,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[244,245,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[245,246,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[246,247,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[247,248,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[248,249,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[249,250,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[250,251,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[251,252,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[252,253,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[253,254,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[254,255,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[255,256,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[256,257,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[257,258,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[258,259,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[259,260,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[260,261,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[261,262,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[262,263,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[263,264,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[264,265,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[265,266,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[266,267,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[267,268,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[268,269,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[269,270,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[270,271,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[271,272,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[272,273,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[273,274,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[274,275,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[275,276,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[276,277,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[277,278,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[278,279,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[279,280,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[280,281,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[281,282,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[282,283,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[283,284,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[284,285,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[285,286,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[286,287,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[287,288,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[288,289,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[289,290,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[290,291,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[291,292,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[292,293,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[293,294,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[294,295,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[295,296,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[296,297,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[297,298,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[298,299,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[299,300,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[300,301,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[301,302,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[302,303,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[303,304,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[304,305,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[305,306,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[306,307,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[307,308,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[308,309,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[309,310,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[310,311,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[311,312,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[312,313,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[313,314,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[314,315,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[315,316,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[316,317,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[317,318,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[318,319,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[319,320,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[320,321,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[321,322,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[322,323,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[323,324,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[324,325,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[325,326,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[326,327,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[327,328,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[328,329,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[329,330,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[330,331,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[331,332,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[332,333,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[333,334,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[334,335,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[335,336,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[336,337,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[337,338,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[338,339,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[339,340,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[340,341,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[341,342,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[342,343,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[343,344,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[344,345,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[345,346,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[346,347,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[347,348,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[348,349,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[349,350,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[350,351,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[351,352,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[352,353,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[353,354,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[354,355,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[355,356,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[356,357,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[357,358,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[358,359,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[359,360,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[360,361,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[361,362,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[362,363,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[363,364,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[364,365,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[365,366,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[366,367,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[367,368,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[368,369,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[369,370,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[370,371,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[371,372,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[372,373,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[373,374,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[374,375,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[375,376,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[376,377,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[377,378,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[378,379,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[379,380,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[380,381,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[381,382,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[382,383,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[383,384,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[384,385,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[385,386,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[386,387,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[387,388,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[388,389,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[389,390,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[390,391,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[391,392,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[392,393,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[393,394,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[394,395,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[395,396,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[396,397,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[397,398,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[398,399,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[399,400,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[400,401,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[401,402,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[402,403,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[403,404,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[404,405,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[405,406,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[406,407,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}]],"lines":["----","","","** run** `Run all tests to verify refactoring`","","`````bash","> cd /Users/cam/Dev/neovim-dev/opencode.nvim && ./run_tests.sh","","Running tests for opencode.nvim","------------------------------------------------","Starting...Scheduling: ./tests/minimal/plugin_spec.lua","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/minimal/plugin_spec.lua\t","Success\t||\topencode.nvim plugin loads the plugin without errors\t","Success\t||\topencode.nvim plugin can be set up with custom config\t","\t","Success: \t2\t","Failed : \t0\t","========================================\t","✓ Minimal tests passed","------------------------------------------------","Starting...Scheduling: ./tests/unit/timer_spec.lua","Scheduling: ./tests/unit/server_job_spec.lua","Scheduling: ./tests/unit/config_spec.lua","Scheduling: ./tests/unit/api_spec.lua","Scheduling: ./tests/unit/event_manager_spec.lua","Scheduling: ./tests/unit/init_spec.lua","Scheduling: ./tests/unit/state_spec.lua","Scheduling: ./tests/unit/id_spec.lua","Scheduling: ./tests/unit/api_client_spec.lua","Scheduling: ./tests/unit/context_spec.lua","Scheduling: ./tests/unit/session_spec.lua","Scheduling: ./tests/unit/config_file_spec.lua","Scheduling: ./tests/unit/renderer_spec.lua","Scheduling: ./tests/unit/opencode_server_spec.lua","Scheduling: ./tests/unit/core_spec.lua","Scheduling: ./tests/unit/render_state_spec.lua","Scheduling: ./tests/unit/snapshot_spec.lua","Scheduling: ./tests/unit/keymap_spec.lua","Scheduling: ./tests/unit/util_spec.lua","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/server_job_spec.lua\t","Success\t||\tserver_job exposes expected public functions\t","Success\t||\tserver_job call_api resolves with decoded json and toggles is_job_running\t","Success\t||\tserver_job call_api rejects on non 2xx\t","Success\t||\tserver_job stream_api forwards chunks\t","Success\t||\tserver_job ensure_server spawns a new opencode server only once\t","\t","Success: \t5\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/util_spec.lua\t","Success\t||\tutil.parse_dot_args parses flat booleans\t","Success\t||\tutil.parse_dot_args parses nested dot notation\t","Success\t||\tutil.parse_dot_args parses mixed nesting and booleans\t","Success\t||\tutil.parse_dot_args parses numbers\t","Success\t||\tutil.parse_dot_args handles empty string\t","\t","Success: \t5\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/api_client_spec.lua\t","Success\t||\tapi_client should create a new client instance\t","Success\t||\tapi_client should remove trailing slash from base_url\t","Success\t||\tapi_client should create client using create factory function\t","Success\t||\tapi_client should have all expected API methods\t","Success\t||\tapi_client should construct URLs correctly with query parameters\t","\t","Success: \t5\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/session_spec.lua\t","Success\t||\topencode.session get_last_workspace_session returns the most recent session for current workspace\t","Success\t||\topencode.session get_last_workspace_session returns nil when no sessions match the workspace\t","Success\t||\topencode.session get_last_workspace_session handles JSON parsing errors\t","Success\t||\topencode.session get_last_workspace_session handles empty session list\t","Success\t||\topencode.session get_by_name returns the session with matching ID\t","Success\t||\topencode.session get_by_name returns nil when no session matches the ID\t","Success\t||\topencode.session read_json_dir returns nil for non-existent directory\t","Success\t||\topencode.session read_json_dir returns nil when directory exists but has no JSON files\t","Success\t||\topencode.session read_json_dir returns decoded JSON content from directory\t","Success\t||\topencode.session read_json_dir skips invalid JSON files\t","Success\t||\topencode.session get_messages returns nil when session is nil\t","Success\t||\topencode.session get_messages returns nil when messages directory does not exist\t","Success\t||\topencode.session get_messages returns messages with their parts\t","\t","Success: \t13\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/config_file_spec.lua\t","Success\t||\tconfig_file.setup lazily loads config when accessed\t","Success\t||\tconfig_file.setup get_opencode_agents returns primary + defaults\t","Success\t||\tconfig_file.setup get_opencode_project returns project\t","\t","Success: \t3\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/api_spec.lua\t","Success\t||\topencode.api commands table contains the expected commands with proper structure\t","Success\t||\topencode.api setup registers all commands\t","Success\t||\topencode.api setup sets up command functions that call the correct core functions\t","Success\t||\topencode.api Lua API provides callable functions that match commands\t","\t","Success: \t4\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/id_spec.lua\t","Success\t||\tID module should generate ascending session IDs\t","Success\t||\tID module should generate descending message IDs\t","Success\t||\tID module should validate given IDs correctly\t","Success\t||\tID module should throw error for invalid given IDs\t","Success\t||\tID module should validate schemas correctly\t","Success\t||\tID module should return available prefixes\t","Success\t||\tID module should generate IDs with correct length structure\t","\t","Success: \t7\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/render_state_spec.lua\t","Success\t||\tRenderState new and reset creates a new instance\t","Success\t||\tRenderState new and reset resets to empty state\t","Success\t||\tRenderState set_message sets a new message\t","Success\t||\tRenderState set_message updates line index for message\t","Success\t||\tRenderState set_message updates existing message\t","Success\t||\tRenderState set_part sets a new part\t","Success\t||\tRenderState set_part updates line index for part\t","Success\t||\tRenderState set_part initializes actions array\t","Success\t||\tRenderState get_part_at_line returns part at line\t","Success\t||\tRenderState get_part_at_line returns nil for line without part\t","Success\t||\tRenderState get_message_at_line returns message at line\t","Success\t||\tRenderState get_message_at_line returns nil for line without message\t","Success\t||\tRenderState get_part_by_call_id finds part by call ID\t","Success\t||\tRenderState get_part_by_call_id returns nil when call ID not found\t","Success\t||\tRenderState actions adds actions to part\t","Success\t||\tRenderState actions adds actions with offset\t","Success\t||\tRenderState actions clears actions for part\t","Success\t||\tRenderState actions gets actions at line\t","Success\t||\tRenderState actions gets all actions from all parts\t","Success\t||\tRenderState update_part_lines updates part line positions\t","Success\t||\tRenderState update_part_lines shifts subsequent content when expanding\t","Success\t||\tRenderState update_part_lines shifts subsequent content when shrinking\t","Success\t||\tRenderState update_part_lines returns false for non-existent part\t","Success\t||\tRenderState remove_part removes part and shifts subsequent content\t","Success\t||\tRenderState remove_part clears line index for removed part\t","Success\t||\tRenderState remove_part returns false for non-existent part\t","Success\t||\tRenderState remove_message removes message and shifts subsequent content\t","Success\t||\tRenderState remove_message clears line index for removed message\t","Success\t||\tRenderState remove_message returns false for non-existent message\t","Success\t||\tRenderState remove_message removes unrendered message without shifting\t","Success\t||\tRenderState shift_all does nothing when delta is 0\t","Success\t||\tRenderState shift_all shifts content at or after from_line\t","Success\t||\tRenderState shift_all shifts actions with parts\t","Success\t||\tRenderState shift_all does not rebuild index when nothing shifted\t","Success\t||\tRenderState shift_all invalidates index when content shifted\t","Success\t||\tRenderState shift_all exits early when content found before from_line\t","Success\t||\tRenderState update_part_data updates part reference\t","Success\t||\tRenderState update_part_data does nothing for non-existent part\t","Success\t||\tRenderState get_unrendered_message_ids returns empty list when no unrendered messages\t","Success\t||\tRenderState get_unrendered_message_ids returns list of unrendered message IDs\t","Success\t||\tRenderState get_unrendered_message_ids returns sorted list of message IDs\t","\t","Success: \t41\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/init_spec.lua\t","Success\t||\topencode has setup function in the public API\t","Success\t||\topencode main module can be required without errors\t","\t","Success: \t2\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/snapshot_spec.lua\t","Success\t||\tsnapshot.restore runs read-tree and checkout-index and notifies on success\t","Success\t||\tsnapshot.restore notifies error if no active session\t","Success\t||\tsnapshot.restore notifies error if read-tree fails\t","Success\t||\tsnapshot.restore notifies error if checkout-index fails\t","\t","Success: \t4\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/event_manager_spec.lua\t","Success\t||\tEventManager should create a new instance\t","Success\t||\tEventManager should subscribe and emit events\t","Success\t||\tEventManager should handle multiple subscribers\t","Success\t||\tEventManager should unsubscribe correctly\t","Success\t||\tEventManager should track subscriber count\t","Success\t||\tEventManager should list event names\t","Success\t||\tEventManager should handle starting and stopping\t","Success\t||\tEventManager should not start multiple times\t","\t","Success: \t8\t","Failed : \t0\t","========================================\t","Error detected while processing command line:","opencode command not found - please install and configure opencode before using this plugin","Unsupported opencode CLI version: opencode 0.4.1. Requires >= 0.4.2","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/core_spec.lua\t","Success\t||\topencode.core open creates windows if they don't exist\t","Success\t||\topencode.core open handles new session properly\t","Success\t||\topencode.core open focuses the appropriate window\t","Success\t||\topencode.core select_session filters sessions by description and parentID\t","Success\t||\topencode.core send_message sends a message via api_client\t","Success\t||\topencode.core send_message creates new session when none active\t","Success\t||\topencode.core opencode_ok (version checks) returns false when opencode executable is missing\t","Success\t||\topencode.core opencode_ok (version checks) returns false when version is below required\t","Success\t||\topencode.core opencode_ok (version checks) returns true when version equals required\t","Success\t||\topencode.core opencode_ok (version checks) returns true when version is above required\t","\t","Success: \t10\t","Failed : \t0\t","========================================\t","File not added to context. Could not read.","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/context_spec.lua\t","Success\t||\textract_from_opencode_message extracts prompt, selected_text, and current_file from tags in parts\t","Success\t||\textract_from_opencode_message returns nils if message or parts missing\t","Success\t||\textract_from_message_legacy extracts legacy tags from text\t","Success\t||\textract_legacy_tag extracts content between tags\t","Success\t||\textract_legacy_tag returns nil if tag not found\t","Success\t||\tformat_message returns a parts array with prompt as first part\t","Success\t||\tformat_message includes mentioned_files and subagents\t","Success\t||\tdelta_context removes current_file if unchanged\t","Success\t||\tdelta_context removes mentioned_subagents if unchanged\t","Success\t||\tadd_file/add_selection/add_subagent adds a file if filereadable\t","Success\t||\tadd_file/add_selection/add_subagent does not add file if not filereadable\t","Success\t||\tadd_file/add_selection/add_subagent adds a selection\t","Success\t||\tadd_file/add_selection/add_subagent adds a subagent\t","\t","Success: \t13\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/opencode_server_spec.lua\t","Success\t||\topencode.opencode_server creates a new server object\t","Success\t||\topencode.opencode_server spawn promise resolves when stdout emits server URL\t","Success\t||\topencode.opencode_server shutdown resolves shutdown_promise and clears fields\t","Success\t||\topencode.opencode_server calls on_error when stderr is triggered\t","Success\t||\topencode.opencode_server calls on_exit and clears fields when process exits\t","\t","Success: \t5\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/config_spec.lua\t","Success\t||\topencode.config uses default values when no options are provided\t","Success\t||\topencode.config merges user options with defaults\t","\t","Success: \t2\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/keymap_spec.lua\t","Success\t||\topencode.keymap setup sets up keymap with new format configured keys\t","Success\t||\topencode.keymap setup sets up keymap with old format configured keys (normalized)\t","Success\t||\topencode.keymap setup sets up callbacks that execute the correct commands (new format)\t","Success\t||\topencode.keymap setup sets up callbacks that execute the correct commands (old format normalized)\t","Success\t||\topencode.keymap normalize_keymap normalizes old format keymap to new format correctly\t","Success\t||\topencode.keymap normalize_keymap shows error message for unknown API functions\t","Success\t||\topencode.keymap normalize_keymap uses custom description from config_entry\t","Success\t||\topencode.keymap normalize_keymap falls back to API description when no custom desc provided\t","Success\t||\topencode.keymap setup_window_keymaps handles unknown API functions with error message\t","Success\t||\topencode.keymap setup_window_keymaps uses custom description for window keymaps\t","Success\t||\topencode.keymap setup_permisson_keymap sets up permission keymaps when there is a current permission\t","Success\t||\topencode.keymap setup_permisson_keymap should delete existing permission keymaps if no current permission exists after being set\t","Success\t||\topencode.keymap setup_permisson_keymap does not set permission keymaps when there is no current permission\t","\t","Success: \t13\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/state_spec.lua\t","Success\t||\topencode.state (observable) notifies listeners on key change\t","Success\t||\topencode.state (observable) notifies wildcard listeners on any key change\t","Success\t||\topencode.state (observable) can unregister listeners\t","Success\t||\topencode.state (observable) does not notify if value is unchanged\t","\t","Success: \t4\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/timer_spec.lua\t","Success\t||\tTimer Timer.new creates a new timer with required options\t","Success\t||\tTimer Timer.new sets repeat_timer to false when explicitly disabled\t","Success\t||\tTimer Timer.new stores optional parameters\t","Success\t||\tTimer Timer:start starts a repeating timer\t","Success\t||\tTimer Timer:start starts a one-shot timer\t","Success\t||\tTimer Timer:start passes arguments to on_tick function\t","Success\t||\tTimer Timer:start stops timer when on_tick returns false\t","Success\t||\tTimer Timer:start stops timer when on_tick throws an error\t","Success\t||\tTimer Timer:start stops previous timer before starting new one\t","Success\t||\tTimer Timer:start throws error when timer creation fails\t","Success\t||\tTimer Timer:stop stops a running timer\t","Success\t||\tTimer Timer:stop calls on_stop callback when provided\t","Success\t||\tTimer Timer:stop does nothing when timer is not running\t","Success\t||\tTimer Timer:stop handles errors in on_stop callback gracefully\t","Success\t||\tTimer Timer:is_running returns false when timer is not started\t","Success\t||\tTimer Timer:is_running returns true when timer is running\t","Success\t||\tTimer Timer:is_running returns false after timer is stopped\t","Success\t||\tTimer Timer:is_running returns false after one-shot timer completes\t","Success\t||\tTimer Integration tests can restart a stopped timer\t","Success\t||\tTimer Integration tests handles rapid start/stop cycles\t","\t","Success: \t20\t","Failed : \t0\t","========================================\t","Two pending permissions? existing: per_9efb5b2f3001aqJAFBMiGjFjVZ new: per_9efb5bc2a001j9Bd6bFjLB7hrc","Two pending permissions? existing: per_9efb5bc2a001j9Bd6bFjLB7hrc new: per_9efb5d6d1001uwVXQ9dhlBlgfO","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/renderer_spec.lua\t","Success\t||\trenderer replays api-error correctly (event-by-event)\t","Success\t||\trenderer replays api-error correctly (session)\t","Success\t||\trenderer replays diff correctly (event-by-event)\t","Success\t||\trenderer replays diff correctly (session)\t","Success\t||\trenderer replays mentions-with-ranges correctly (event-by-event)\t","Success\t||\trenderer replays mentions-with-ranges correctly (session)\t","Success\t||\trenderer replays message-removal correctly (event-by-event)\t","Success\t||\trenderer replays permission-denied correctly (event-by-event)\t","Success\t||\trenderer replays permission-denied correctly (session)\t","Success\t||\trenderer replays permission-prompt correctly (event-by-event)\t","Success\t||\trenderer replays permission correctly (event-by-event)\t","Success\t||\trenderer replays permission correctly (session)\t","Success\t||\trenderer replays planning correctly (event-by-event)\t","Success\t||\trenderer replays planning correctly (session)\t","Success\t||\trenderer replays redo-all correctly (event-by-event)\t","Success\t||\trenderer replays redo-all correctly (session)\t","Success\t||\trenderer replays redo-once correctly (event-by-event)\t","Success\t||\trenderer replays redo-once correctly (session)\t","Success\t||\trenderer replays revert correctly (event-by-event)\t","Success\t||\trenderer replays revert correctly (session)\t","Success\t||\trenderer replays selection correctly (event-by-event)\t","Success\t||\trenderer replays selection correctly (session)\t","Success\t||\trenderer replays shifting-and-multiple-perms correctly (event-by-event)\t","Success\t||\trenderer replays simple-session correctly (event-by-event)\t","Success\t||\trenderer replays simple-session correctly (session)\t","Success\t||\trenderer replays tool-invalid correctly (event-by-event)\t","Success\t||\trenderer replays tool-invalid correctly (session)\t","Success\t||\trenderer replays updating-text correctly (event-by-event)\t","Success\t||\trenderer replays updating-text correctly (session)\t","Success\t||\trenderer unrendered messages is_message_unrendered returns true for unrendered message\t","Success\t||\trenderer unrendered messages is_message_unrendered returns false for rendered message\t","Success\t||\trenderer unrendered messages is_message_unrendered returns false for nil\t","Fail\t||\trenderer unrendered messages _remove_message_from_buffer skips unrendered message\t"," ...ev/neovim-dev/opencode.nvim/tests/unit/renderer_spec.lua:207: Expected objects to not be the same."," Passed in:"," (nil)"," Did not expect:"," type nil"," "," stack traceback:"," \t...ev/neovim-dev/opencode.nvim/tests/unit/renderer_spec.lua:207: in function <...ev/neovim-dev/opencode.nvim/tests/unit/renderer_spec.lua:201>"," \t","Success\t||\trenderer unrendered messages _replace_message_in_buffer returns false for unrendered message\t","Fail\t||\trenderer unrendered messages _rerender_part skips if parent message is unrendered\t"," ...ev/neovim-dev/opencode.nvim/tests/unit/renderer_spec.lua:232: Expected objects to be equal."," Passed in:"," (number) 9"," Expected:"," (number) 15"," "," stack traceback:"," \t...ev/neovim-dev/opencode.nvim/tests/unit/renderer_spec.lua:232: in function <...ev/neovim-dev/opencode.nvim/tests/unit/renderer_spec.lua:222>"," \t","\t","Success: \t33\t","Failed : \t2\t","========================================\t","Tests Failed. Exit: 1\t","✗ Unit tests failed","------------------------------------------------","","======== TEST FAILURES SUMMARY ========","Found 2 failing test(s):","","FAILED TEST: \trenderer unrendered messages _remove_message_from_buffer skips unrendered message\t","FAILED TEST: \trenderer unrendered messages _rerender_part skips if parent message is unrendered\t","","`````","",""],"timestamp":1762903195,"actions":[]} \ No newline at end of file +{"lines":["----","","","** run** `Run all tests to verify refactoring`","","`````bash","> cd /Users/cam/Dev/neovim-dev/opencode.nvim && ./run_tests.sh","","Running tests for opencode.nvim","------------------------------------------------","Starting...Scheduling: ./tests/minimal/plugin_spec.lua","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/minimal/plugin_spec.lua\t","Success\t||\topencode.nvim plugin loads the plugin without errors\t","Success\t||\topencode.nvim plugin can be set up with custom config\t","\t","Success: \t2\t","Failed : \t0\t","========================================\t","✓ Minimal tests passed","------------------------------------------------","Starting...Scheduling: ./tests/unit/timer_spec.lua","Scheduling: ./tests/unit/server_job_spec.lua","Scheduling: ./tests/unit/config_spec.lua","Scheduling: ./tests/unit/api_spec.lua","Scheduling: ./tests/unit/event_manager_spec.lua","Scheduling: ./tests/unit/init_spec.lua","Scheduling: ./tests/unit/state_spec.lua","Scheduling: ./tests/unit/id_spec.lua","Scheduling: ./tests/unit/api_client_spec.lua","Scheduling: ./tests/unit/context_spec.lua","Scheduling: ./tests/unit/session_spec.lua","Scheduling: ./tests/unit/config_file_spec.lua","Scheduling: ./tests/unit/renderer_spec.lua","Scheduling: ./tests/unit/opencode_server_spec.lua","Scheduling: ./tests/unit/core_spec.lua","Scheduling: ./tests/unit/render_state_spec.lua","Scheduling: ./tests/unit/snapshot_spec.lua","Scheduling: ./tests/unit/keymap_spec.lua","Scheduling: ./tests/unit/util_spec.lua","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/server_job_spec.lua\t","Success\t||\tserver_job exposes expected public functions\t","Success\t||\tserver_job call_api resolves with decoded json and toggles is_job_running\t","Success\t||\tserver_job call_api rejects on non 2xx\t","Success\t||\tserver_job stream_api forwards chunks\t","Success\t||\tserver_job ensure_server spawns a new opencode server only once\t","\t","Success: \t5\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/util_spec.lua\t","Success\t||\tutil.parse_dot_args parses flat booleans\t","Success\t||\tutil.parse_dot_args parses nested dot notation\t","Success\t||\tutil.parse_dot_args parses mixed nesting and booleans\t","Success\t||\tutil.parse_dot_args parses numbers\t","Success\t||\tutil.parse_dot_args handles empty string\t","\t","Success: \t5\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/api_client_spec.lua\t","Success\t||\tapi_client should create a new client instance\t","Success\t||\tapi_client should remove trailing slash from base_url\t","Success\t||\tapi_client should create client using create factory function\t","Success\t||\tapi_client should have all expected API methods\t","Success\t||\tapi_client should construct URLs correctly with query parameters\t","\t","Success: \t5\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/session_spec.lua\t","Success\t||\topencode.session get_last_workspace_session returns the most recent session for current workspace\t","Success\t||\topencode.session get_last_workspace_session returns nil when no sessions match the workspace\t","Success\t||\topencode.session get_last_workspace_session handles JSON parsing errors\t","Success\t||\topencode.session get_last_workspace_session handles empty session list\t","Success\t||\topencode.session get_by_name returns the session with matching ID\t","Success\t||\topencode.session get_by_name returns nil when no session matches the ID\t","Success\t||\topencode.session read_json_dir returns nil for non-existent directory\t","Success\t||\topencode.session read_json_dir returns nil when directory exists but has no JSON files\t","Success\t||\topencode.session read_json_dir returns decoded JSON content from directory\t","Success\t||\topencode.session read_json_dir skips invalid JSON files\t","Success\t||\topencode.session get_messages returns nil when session is nil\t","Success\t||\topencode.session get_messages returns nil when messages directory does not exist\t","Success\t||\topencode.session get_messages returns messages with their parts\t","\t","Success: \t13\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/config_file_spec.lua\t","Success\t||\tconfig_file.setup lazily loads config when accessed\t","Success\t||\tconfig_file.setup get_opencode_agents returns primary + defaults\t","Success\t||\tconfig_file.setup get_opencode_project returns project\t","\t","Success: \t3\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/api_spec.lua\t","Success\t||\topencode.api commands table contains the expected commands with proper structure\t","Success\t||\topencode.api setup registers all commands\t","Success\t||\topencode.api setup sets up command functions that call the correct core functions\t","Success\t||\topencode.api Lua API provides callable functions that match commands\t","\t","Success: \t4\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/id_spec.lua\t","Success\t||\tID module should generate ascending session IDs\t","Success\t||\tID module should generate descending message IDs\t","Success\t||\tID module should validate given IDs correctly\t","Success\t||\tID module should throw error for invalid given IDs\t","Success\t||\tID module should validate schemas correctly\t","Success\t||\tID module should return available prefixes\t","Success\t||\tID module should generate IDs with correct length structure\t","\t","Success: \t7\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/render_state_spec.lua\t","Success\t||\tRenderState new and reset creates a new instance\t","Success\t||\tRenderState new and reset resets to empty state\t","Success\t||\tRenderState set_message sets a new message\t","Success\t||\tRenderState set_message updates line index for message\t","Success\t||\tRenderState set_message updates existing message\t","Success\t||\tRenderState set_part sets a new part\t","Success\t||\tRenderState set_part updates line index for part\t","Success\t||\tRenderState set_part initializes actions array\t","Success\t||\tRenderState get_part_at_line returns part at line\t","Success\t||\tRenderState get_part_at_line returns nil for line without part\t","Success\t||\tRenderState get_message_at_line returns message at line\t","Success\t||\tRenderState get_message_at_line returns nil for line without message\t","Success\t||\tRenderState get_part_by_call_id finds part by call ID\t","Success\t||\tRenderState get_part_by_call_id returns nil when call ID not found\t","Success\t||\tRenderState actions adds actions to part\t","Success\t||\tRenderState actions adds actions with offset\t","Success\t||\tRenderState actions clears actions for part\t","Success\t||\tRenderState actions gets actions at line\t","Success\t||\tRenderState actions gets all actions from all parts\t","Success\t||\tRenderState update_part_lines updates part line positions\t","Success\t||\tRenderState update_part_lines shifts subsequent content when expanding\t","Success\t||\tRenderState update_part_lines shifts subsequent content when shrinking\t","Success\t||\tRenderState update_part_lines returns false for non-existent part\t","Success\t||\tRenderState remove_part removes part and shifts subsequent content\t","Success\t||\tRenderState remove_part clears line index for removed part\t","Success\t||\tRenderState remove_part returns false for non-existent part\t","Success\t||\tRenderState remove_message removes message and shifts subsequent content\t","Success\t||\tRenderState remove_message clears line index for removed message\t","Success\t||\tRenderState remove_message returns false for non-existent message\t","Success\t||\tRenderState remove_message removes unrendered message without shifting\t","Success\t||\tRenderState shift_all does nothing when delta is 0\t","Success\t||\tRenderState shift_all shifts content at or after from_line\t","Success\t||\tRenderState shift_all shifts actions with parts\t","Success\t||\tRenderState shift_all does not rebuild index when nothing shifted\t","Success\t||\tRenderState shift_all invalidates index when content shifted\t","Success\t||\tRenderState shift_all exits early when content found before from_line\t","Success\t||\tRenderState update_part_data updates part reference\t","Success\t||\tRenderState update_part_data does nothing for non-existent part\t","Success\t||\tRenderState get_unrendered_message_ids returns empty list when no unrendered messages\t","Success\t||\tRenderState get_unrendered_message_ids returns list of unrendered message IDs\t","Success\t||\tRenderState get_unrendered_message_ids returns sorted list of message IDs\t","\t","Success: \t41\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/init_spec.lua\t","Success\t||\topencode has setup function in the public API\t","Success\t||\topencode main module can be required without errors\t","\t","Success: \t2\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/snapshot_spec.lua\t","Success\t||\tsnapshot.restore runs read-tree and checkout-index and notifies on success\t","Success\t||\tsnapshot.restore notifies error if no active session\t","Success\t||\tsnapshot.restore notifies error if read-tree fails\t","Success\t||\tsnapshot.restore notifies error if checkout-index fails\t","\t","Success: \t4\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/event_manager_spec.lua\t","Success\t||\tEventManager should create a new instance\t","Success\t||\tEventManager should subscribe and emit events\t","Success\t||\tEventManager should handle multiple subscribers\t","Success\t||\tEventManager should unsubscribe correctly\t","Success\t||\tEventManager should track subscriber count\t","Success\t||\tEventManager should list event names\t","Success\t||\tEventManager should handle starting and stopping\t","Success\t||\tEventManager should not start multiple times\t","\t","Success: \t8\t","Failed : \t0\t","========================================\t","Error detected while processing command line:","opencode command not found - please install and configure opencode before using this plugin","Unsupported opencode CLI version: opencode 0.4.1. Requires >= 0.4.2","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/core_spec.lua\t","Success\t||\topencode.core open creates windows if they don't exist\t","Success\t||\topencode.core open handles new session properly\t","Success\t||\topencode.core open focuses the appropriate window\t","Success\t||\topencode.core select_session filters sessions by description and parentID\t","Success\t||\topencode.core send_message sends a message via api_client\t","Success\t||\topencode.core send_message creates new session when none active\t","Success\t||\topencode.core opencode_ok (version checks) returns false when opencode executable is missing\t","Success\t||\topencode.core opencode_ok (version checks) returns false when version is below required\t","Success\t||\topencode.core opencode_ok (version checks) returns true when version equals required\t","Success\t||\topencode.core opencode_ok (version checks) returns true when version is above required\t","\t","Success: \t10\t","Failed : \t0\t","========================================\t","File not added to context. Could not read.","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/context_spec.lua\t","Success\t||\textract_from_opencode_message extracts prompt, selected_text, and current_file from tags in parts\t","Success\t||\textract_from_opencode_message returns nils if message or parts missing\t","Success\t||\textract_from_message_legacy extracts legacy tags from text\t","Success\t||\textract_legacy_tag extracts content between tags\t","Success\t||\textract_legacy_tag returns nil if tag not found\t","Success\t||\tformat_message returns a parts array with prompt as first part\t","Success\t||\tformat_message includes mentioned_files and subagents\t","Success\t||\tdelta_context removes current_file if unchanged\t","Success\t||\tdelta_context removes mentioned_subagents if unchanged\t","Success\t||\tadd_file/add_selection/add_subagent adds a file if filereadable\t","Success\t||\tadd_file/add_selection/add_subagent does not add file if not filereadable\t","Success\t||\tadd_file/add_selection/add_subagent adds a selection\t","Success\t||\tadd_file/add_selection/add_subagent adds a subagent\t","\t","Success: \t13\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/opencode_server_spec.lua\t","Success\t||\topencode.opencode_server creates a new server object\t","Success\t||\topencode.opencode_server spawn promise resolves when stdout emits server URL\t","Success\t||\topencode.opencode_server shutdown resolves shutdown_promise and clears fields\t","Success\t||\topencode.opencode_server calls on_error when stderr is triggered\t","Success\t||\topencode.opencode_server calls on_exit and clears fields when process exits\t","\t","Success: \t5\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/config_spec.lua\t","Success\t||\topencode.config uses default values when no options are provided\t","Success\t||\topencode.config merges user options with defaults\t","\t","Success: \t2\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/keymap_spec.lua\t","Success\t||\topencode.keymap setup sets up keymap with new format configured keys\t","Success\t||\topencode.keymap setup sets up keymap with old format configured keys (normalized)\t","Success\t||\topencode.keymap setup sets up callbacks that execute the correct commands (new format)\t","Success\t||\topencode.keymap setup sets up callbacks that execute the correct commands (old format normalized)\t","Success\t||\topencode.keymap normalize_keymap normalizes old format keymap to new format correctly\t","Success\t||\topencode.keymap normalize_keymap shows error message for unknown API functions\t","Success\t||\topencode.keymap normalize_keymap uses custom description from config_entry\t","Success\t||\topencode.keymap normalize_keymap falls back to API description when no custom desc provided\t","Success\t||\topencode.keymap setup_window_keymaps handles unknown API functions with error message\t","Success\t||\topencode.keymap setup_window_keymaps uses custom description for window keymaps\t","Success\t||\topencode.keymap setup_permisson_keymap sets up permission keymaps when there is a current permission\t","Success\t||\topencode.keymap setup_permisson_keymap should delete existing permission keymaps if no current permission exists after being set\t","Success\t||\topencode.keymap setup_permisson_keymap does not set permission keymaps when there is no current permission\t","\t","Success: \t13\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/state_spec.lua\t","Success\t||\topencode.state (observable) notifies listeners on key change\t","Success\t||\topencode.state (observable) notifies wildcard listeners on any key change\t","Success\t||\topencode.state (observable) can unregister listeners\t","Success\t||\topencode.state (observable) does not notify if value is unchanged\t","\t","Success: \t4\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/timer_spec.lua\t","Success\t||\tTimer Timer.new creates a new timer with required options\t","Success\t||\tTimer Timer.new sets repeat_timer to false when explicitly disabled\t","Success\t||\tTimer Timer.new stores optional parameters\t","Success\t||\tTimer Timer:start starts a repeating timer\t","Success\t||\tTimer Timer:start starts a one-shot timer\t","Success\t||\tTimer Timer:start passes arguments to on_tick function\t","Success\t||\tTimer Timer:start stops timer when on_tick returns false\t","Success\t||\tTimer Timer:start stops timer when on_tick throws an error\t","Success\t||\tTimer Timer:start stops previous timer before starting new one\t","Success\t||\tTimer Timer:start throws error when timer creation fails\t","Success\t||\tTimer Timer:stop stops a running timer\t","Success\t||\tTimer Timer:stop calls on_stop callback when provided\t","Success\t||\tTimer Timer:stop does nothing when timer is not running\t","Success\t||\tTimer Timer:stop handles errors in on_stop callback gracefully\t","Success\t||\tTimer Timer:is_running returns false when timer is not started\t","Success\t||\tTimer Timer:is_running returns true when timer is running\t","Success\t||\tTimer Timer:is_running returns false after timer is stopped\t","Success\t||\tTimer Timer:is_running returns false after one-shot timer completes\t","Success\t||\tTimer Integration tests can restart a stopped timer\t","Success\t||\tTimer Integration tests handles rapid start/stop cycles\t","\t","Success: \t20\t","Failed : \t0\t","========================================\t","Two pending permissions? existing: per_9efb5b2f3001aqJAFBMiGjFjVZ new: per_9efb5bc2a001j9Bd6bFjLB7hrc","Two pending permissions? existing: per_9efb5bc2a001j9Bd6bFjLB7hrc new: per_9efb5d6d1001uwVXQ9dhlBlgfO","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/renderer_spec.lua\t","Success\t||\trenderer replays api-error correctly (event-by-event)\t","Success\t||\trenderer replays api-error correctly (session)\t","Success\t||\trenderer replays diff correctly (event-by-event)\t","Success\t||\trenderer replays diff correctly (session)\t","Success\t||\trenderer replays mentions-with-ranges correctly (event-by-event)\t","Success\t||\trenderer replays mentions-with-ranges correctly (session)\t","Success\t||\trenderer replays message-removal correctly (event-by-event)\t","Success\t||\trenderer replays permission-denied correctly (event-by-event)\t","Success\t||\trenderer replays permission-denied correctly (session)\t","Success\t||\trenderer replays permission-prompt correctly (event-by-event)\t","Success\t||\trenderer replays permission correctly (event-by-event)\t","Success\t||\trenderer replays permission correctly (session)\t","Success\t||\trenderer replays planning correctly (event-by-event)\t","Success\t||\trenderer replays planning correctly (session)\t","Success\t||\trenderer replays redo-all correctly (event-by-event)\t","Success\t||\trenderer replays redo-all correctly (session)\t","Success\t||\trenderer replays redo-once correctly (event-by-event)\t","Success\t||\trenderer replays redo-once correctly (session)\t","Success\t||\trenderer replays revert correctly (event-by-event)\t","Success\t||\trenderer replays revert correctly (session)\t","Success\t||\trenderer replays selection correctly (event-by-event)\t","Success\t||\trenderer replays selection correctly (session)\t","Success\t||\trenderer replays shifting-and-multiple-perms correctly (event-by-event)\t","Success\t||\trenderer replays simple-session correctly (event-by-event)\t","Success\t||\trenderer replays simple-session correctly (session)\t","Success\t||\trenderer replays tool-invalid correctly (event-by-event)\t","Success\t||\trenderer replays tool-invalid correctly (session)\t","Success\t||\trenderer replays updating-text correctly (event-by-event)\t","Success\t||\trenderer replays updating-text correctly (session)\t","Success\t||\trenderer unrendered messages is_message_unrendered returns true for unrendered message\t","Success\t||\trenderer unrendered messages is_message_unrendered returns false for rendered message\t","Success\t||\trenderer unrendered messages is_message_unrendered returns false for nil\t","Fail\t||\trenderer unrendered messages _remove_message_from_buffer skips unrendered message\t"," ...ev/neovim-dev/opencode.nvim/tests/unit/renderer_spec.lua:207: Expected objects to not be the same."," Passed in:"," (nil)"," Did not expect:"," type nil"," "," stack traceback:"," \t...ev/neovim-dev/opencode.nvim/tests/unit/renderer_spec.lua:207: in function <...ev/neovim-dev/opencode.nvim/tests/unit/renderer_spec.lua:201>"," \t","Success\t||\trenderer unrendered messages _replace_message_in_buffer returns false for unrendered message\t","Fail\t||\trenderer unrendered messages _rerender_part skips if parent message is unrendered\t"," ...ev/neovim-dev/opencode.nvim/tests/unit/renderer_spec.lua:232: Expected objects to be equal."," Passed in:"," (number) 9"," Expected:"," (number) 15"," "," stack traceback:"," \t...ev/neovim-dev/opencode.nvim/tests/unit/renderer_spec.lua:232: in function <...ev/neovim-dev/opencode.nvim/tests/unit/renderer_spec.lua:222>"," \t","\t","Success: \t33\t","Failed : \t2\t","========================================\t","Tests Failed. Exit: 1\t","✗ Unit tests failed","------------------------------------------------","","======== TEST FAILURES SUMMARY ========","Found 2 failing test(s):","","FAILED TEST: \trenderer unrendered messages _remove_message_from_buffer skips unrendered message\t","FAILED TEST: \trenderer unrendered messages _rerender_part skips if parent message is unrendered\t","","`````","",""],"actions":[],"extmarks":[[1,1,0,{"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-23 21:00:24)","OpencodeHint"],[" [msg_a12df6fcc002lSmBoztX2X6eCp]","OpencodeHint"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":10,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"virt_text_win_col":-3}],[2,3,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[3,4,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[4,5,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[5,6,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[6,7,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[7,8,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[8,9,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[9,10,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[10,11,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[11,12,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[12,13,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[13,14,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[14,15,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[15,16,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[16,17,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[17,18,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[18,19,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[19,20,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[20,21,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[21,22,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[22,23,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[23,24,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[24,25,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[25,26,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[26,27,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[27,28,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[28,29,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[29,30,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[30,31,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[31,32,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[32,33,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[33,34,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[34,35,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[35,36,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[36,37,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[37,38,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[38,39,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[39,40,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[40,41,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[41,42,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[42,43,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[43,44,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[44,45,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[45,46,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[46,47,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[47,48,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[48,49,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[49,50,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[50,51,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[51,52,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[52,53,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[53,54,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[54,55,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[55,56,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[56,57,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[57,58,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[58,59,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[59,60,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[60,61,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[61,62,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[62,63,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[63,64,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[64,65,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[65,66,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[66,67,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[67,68,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[68,69,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[69,70,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[70,71,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[71,72,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[72,73,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[73,74,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[74,75,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[75,76,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[76,77,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[77,78,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[78,79,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[79,80,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[80,81,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[81,82,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[82,83,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[83,84,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[84,85,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[85,86,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[86,87,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[87,88,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[88,89,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[89,90,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[90,91,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[91,92,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[92,93,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[93,94,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[94,95,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[95,96,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[96,97,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[97,98,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[98,99,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[99,100,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[100,101,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[101,102,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[102,103,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[103,104,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[104,105,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[105,106,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[106,107,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[107,108,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[108,109,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[109,110,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[110,111,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[111,112,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[112,113,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[113,114,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[114,115,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[115,116,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[116,117,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[117,118,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[118,119,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[119,120,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[120,121,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[121,122,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[122,123,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[123,124,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[124,125,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[125,126,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[126,127,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[127,128,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[128,129,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[129,130,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[130,131,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[131,132,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[132,133,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[133,134,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[134,135,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[135,136,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[136,137,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[137,138,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[138,139,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[139,140,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[140,141,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[141,142,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[142,143,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[143,144,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[144,145,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[145,146,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[146,147,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[147,148,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[148,149,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[149,150,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[150,151,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[151,152,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[152,153,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[153,154,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[154,155,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[155,156,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[156,157,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[157,158,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[158,159,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[159,160,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[160,161,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[161,162,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[162,163,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[163,164,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[164,165,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[165,166,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[166,167,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[167,168,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[168,169,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[169,170,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[170,171,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[171,172,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[172,173,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[173,174,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[174,175,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[175,176,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[176,177,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[177,178,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[178,179,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[179,180,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[180,181,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[181,182,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[182,183,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[183,184,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[184,185,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[185,186,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[186,187,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[187,188,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[188,189,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[189,190,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[190,191,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[191,192,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[192,193,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[193,194,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[194,195,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[195,196,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[196,197,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[197,198,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[198,199,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[199,200,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[200,201,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[201,202,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[202,203,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[203,204,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[204,205,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[205,206,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[206,207,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[207,208,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[208,209,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[209,210,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[210,211,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[211,212,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[212,213,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[213,214,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[214,215,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[215,216,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[216,217,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[217,218,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[218,219,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[219,220,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[220,221,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[221,222,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[222,223,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[223,224,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[224,225,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[225,226,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[226,227,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[227,228,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[228,229,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[229,230,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[230,231,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[231,232,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[232,233,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[233,234,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[234,235,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[235,236,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[236,237,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[237,238,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[238,239,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[239,240,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[240,241,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[241,242,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[242,243,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[243,244,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[244,245,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[245,246,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[246,247,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[247,248,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[248,249,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[249,250,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[250,251,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[251,252,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[252,253,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[253,254,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[254,255,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[255,256,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[256,257,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[257,258,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[258,259,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[259,260,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[260,261,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[261,262,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[262,263,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[263,264,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[264,265,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[265,266,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[266,267,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[267,268,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[268,269,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[269,270,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[270,271,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[271,272,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[272,273,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[273,274,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[274,275,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[275,276,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[276,277,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[277,278,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[278,279,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[279,280,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[280,281,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[281,282,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[282,283,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[283,284,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[284,285,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[285,286,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[286,287,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[287,288,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[288,289,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[289,290,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[290,291,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[291,292,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[292,293,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[293,294,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[294,295,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[295,296,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[296,297,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[297,298,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[298,299,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[299,300,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[300,301,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[301,302,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[302,303,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[303,304,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[304,305,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[305,306,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[306,307,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[307,308,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[308,309,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[309,310,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[310,311,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[311,312,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[312,313,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[313,314,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[314,315,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[315,316,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[316,317,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[317,318,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[318,319,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[319,320,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[320,321,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[321,322,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[322,323,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[323,324,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[324,325,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[325,326,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[326,327,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[327,328,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[328,329,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[329,330,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[330,331,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[331,332,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[332,333,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[333,334,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[334,335,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[335,336,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[336,337,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[337,338,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[338,339,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[339,340,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[340,341,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[341,342,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[342,343,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[343,344,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[344,345,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[345,346,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[346,347,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[347,348,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[348,349,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[349,350,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[350,351,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[351,352,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[352,353,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[353,354,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[354,355,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[355,356,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[356,357,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[357,358,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[358,359,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[359,360,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[360,361,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[361,362,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[362,363,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[363,364,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[364,365,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[365,366,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[366,367,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[367,368,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[368,369,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[369,370,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[370,371,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[371,372,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[372,373,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[373,374,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[374,375,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[375,376,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[376,377,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[377,378,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[378,379,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[379,380,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[380,381,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[381,382,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[382,383,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[383,384,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[384,385,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[385,386,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[386,387,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[387,388,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[388,389,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[389,390,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[390,391,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[391,392,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[392,393,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[393,394,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[394,395,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[395,396,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[396,397,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[397,398,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[398,399,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[399,400,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[400,401,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[401,402,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[402,403,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[403,404,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[404,405,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[405,406,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[406,407,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}]],"timestamp":1766431561} \ No newline at end of file diff --git a/tests/data/api-abort.expected.json b/tests/data/api-abort.expected.json index ce4eb735..d0e7becd 100644 --- a/tests/data/api-abort.expected.json +++ b/tests/data/api-abort.expected.json @@ -1 +1 @@ -{"timestamp":1762903195,"extmarks":[[1,1,0,{"virt_text_hide":false,"virt_text_repeat_linebreak":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-27 22:44:29)","OpencodeHint"],[" [msg_a27d8299d001nchmBunYlZcPyL]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10,"ns_id":3,"right_gravity":true}],[2,2,0,{"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"ns_id":3,"right_gravity":true}],[3,3,0,{"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"ns_id":3,"right_gravity":true}],[4,4,0,{"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"ns_id":3,"right_gravity":true}],[5,5,0,{"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"ns_id":3,"right_gravity":true}],[6,8,0,{"virt_text_hide":false,"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" gpt-4.1","OpencodeHint"],[" (2025-10-27 22:44:29)","OpencodeHint"],[" [msg_a27d829f9002sfUFPslHq5P2b4]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10,"ns_id":3,"right_gravity":true}]],"lines":["----","","","can generate 10 numbers?","","[a-empty.txt](a-empty.txt)","","----","","","You asked if I can generate 10 numbers, and you referenced reading an empty file (`a-empty.txt`). However, I'm currently in \"plan mode,\" which means I cannot write or modify any files—I'm only allowed to read, observe,","","> [!ERROR] The operation was aborted.","",""],"actions":[]} \ No newline at end of file +{"actions":[],"extmarks":[[1,1,0,{"virt_text_pos":"win_col","virt_text_win_col":-3,"ns_id":3,"priority":10,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-27 22:44:29)","OpencodeHint"],[" [msg_a27d8299d001nchmBunYlZcPyL]","OpencodeHint"]]}],[2,2,0,{"virt_text_pos":"win_col","virt_text_win_col":-3,"ns_id":3,"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[3,3,0,{"virt_text_pos":"win_col","virt_text_win_col":-3,"ns_id":3,"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[4,4,0,{"virt_text_pos":"win_col","virt_text_win_col":-3,"ns_id":3,"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[5,5,0,{"virt_text_pos":"win_col","virt_text_win_col":-3,"ns_id":3,"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[6,8,0,{"virt_text_pos":"win_col","virt_text_win_col":-3,"ns_id":3,"priority":10,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" gpt-4.1","OpencodeHint"],[" (2025-10-27 22:44:29)","OpencodeHint"],[" [msg_a27d829f9002sfUFPslHq5P2b4]","OpencodeHint"]]}]],"lines":["----","","","can generate 10 numbers?","","[a-empty.txt](a-empty.txt)","","----","","","You asked if I can generate 10 numbers, and you referenced reading an empty file (`a-empty.txt`). However, I'm currently in \"plan mode,\" which means I cannot write or modify any files—I'm only allowed to read, observe,","","> [!ERROR] The operation was aborted.","",""],"timestamp":1766431561} \ No newline at end of file diff --git a/tests/data/api-error.expected.json b/tests/data/api-error.expected.json index 41c0ebe3..62f9b3a8 100644 --- a/tests/data/api-error.expected.json +++ b/tests/data/api-error.expected.json @@ -1 +1 @@ -{"actions":[],"timestamp":1762903196,"lines":["----","","","test 3","","[diff-test.txt](diff-test.txt)","","----","","","This is some sample text","","> [!ERROR] Simulated: tool/file read failed for earlier assistant message","","----","","","> [!ERROR] AI_APICallError: Your credit balance is too low to access the Anthropic API. Please go to Plans & Billing to upgrade or purchase credits.","",""],"extmarks":[[1,1,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-20 04:44:37)","OpencodeHint"],[" [msg_9ffef0129001CoCrBKemk7DqcU]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10,"ns_id":3}],[2,2,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"ns_id":3}],[3,3,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"ns_id":3}],[4,4,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"ns_id":3}],[5,5,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"ns_id":3}],[6,8,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" claude-sonnet-4-5-20250929","OpencodeHint"],[" (2025-10-20 04:44:37)","OpencodeHint"],[" [msg_9ffef0160001eArLyAssT]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10,"ns_id":3}],[7,15,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" claude-sonnet-4-5-20250929","OpencodeHint"],[" (2025-10-20 04:44:37)","OpencodeHint"],[" [msg_9ffef0170001s2OM00h2cDa94A]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10,"ns_id":3}]]} \ No newline at end of file +{"lines":["----","","","test 3","","[diff-test.txt](diff-test.txt)","","----","","","This is some sample text","","> [!ERROR] Simulated: tool/file read failed for earlier assistant message","","----","","","> [!ERROR] AI_APICallError: Your credit balance is too low to access the Anthropic API. Please go to Plans & Billing to upgrade or purchase credits.","",""],"extmarks":[[1,1,0,{"priority":10,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-20 04:44:37)","OpencodeHint"],[" [msg_9ffef0129001CoCrBKemk7DqcU]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[2,2,0,{"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[3,3,0,{"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[4,4,0,{"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[5,5,0,{"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[6,8,0,{"priority":10,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" claude-sonnet-4-5-20250929","OpencodeHint"],[" (2025-10-20 04:44:37)","OpencodeHint"],[" [msg_9ffef0160001eArLyAssT]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[7,15,0,{"priority":10,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" claude-sonnet-4-5-20250929","OpencodeHint"],[" (2025-10-20 04:44:37)","OpencodeHint"],[" [msg_9ffef0170001s2OM00h2cDa94A]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3}]],"timestamp":1766431562,"actions":[]} \ No newline at end of file diff --git a/tests/data/cursor_data.expected.json b/tests/data/cursor_data.expected.json index 462c1f54..58861a1b 100644 --- a/tests/data/cursor_data.expected.json +++ b/tests/data/cursor_data.expected.json @@ -1 +1 @@ -{"actions":[],"extmarks":[[1,1,0,{"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-30 17:42:54)","OpencodeHint"],[" [msg_a3637244a001FDRDfoBYVPEGpd]","OpencodeHint"]],"ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":false,"virt_text_pos":"win_col","priority":10}],[2,2,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","priority":4096}],[3,3,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","priority":4096}],[4,4,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","priority":4096}],[5,5,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","priority":4096}],[6,6,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","priority":4096}],[7,7,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","priority":4096}],[8,8,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","priority":4096}],[9,9,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","priority":4096}],[10,10,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","priority":4096}],[11,11,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","priority":4096}],[12,13,0,{"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-30 17:42:56)","OpencodeHint"],[" [msg_a36372b9a001M1lQEix4SK5QE5]","OpencodeHint"]],"ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":false,"virt_text_pos":"win_col","priority":10}]],"timestamp":1766370765,"lines":["----","","","what is this doing","","[lua/opencode/context.lua](lua/opencode/context.lua)","","Line 59:","`````lua","local is_enabled = vim.tbl_get(config, 'context', context_key, 'enabled')","`````","","----","","","**Explanation**","","- The line `local is_enabled = vim.tbl_get(config, 'context', context_key, 'enabled')` (in `lua/opencode/context.lua:58`) uses `vim.tbl_get` to safely read a nested field from a table.","- Concretely it attempts to read `config.context[context_key].enabled` but without throwing an error if `config.context` or `config.context[context_key]` is nil. If any intermediate key is missing it returns `nil`.","- In the surrounding function `M.is_context_enabled`, that value is the default config value for the given context key. The function then checks the state override:"," - If `state.current_context_config[context_key].enabled` is not `nil`, that state value (true/false) is returned."," - Otherwise the `is_enabled` value (from `config`) is returned.","- Example: if `config.context.selection.enabled == true` but `state.current_context_config.selection.enabled == false`, the function returns `false` (state overrides config). If the state value is `nil`, the config value is used.","- Why this matters: `vim.tbl_get` provides safe nested access; using it avoids runtime errors when some parts of the nested config are absent.","",""]} \ No newline at end of file +{"extmarks":[[1,1,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":false,"priority":10,"virt_text_win_col":-3,"ns_id":3,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-30 17:42:54)","OpencodeHint"],[" [msg_a3637244a001FDRDfoBYVPEGpd]","OpencodeHint"]],"virt_text_pos":"win_col"}],[2,2,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"priority":4096,"virt_text_win_col":-3,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col"}],[3,3,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"priority":4096,"virt_text_win_col":-3,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col"}],[4,4,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"priority":4096,"virt_text_win_col":-3,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col"}],[5,5,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"priority":4096,"virt_text_win_col":-3,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col"}],[6,6,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"priority":4096,"virt_text_win_col":-3,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col"}],[7,7,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"priority":4096,"virt_text_win_col":-3,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col"}],[8,8,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"priority":4096,"virt_text_win_col":-3,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col"}],[9,9,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"priority":4096,"virt_text_win_col":-3,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col"}],[10,10,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"priority":4096,"virt_text_win_col":-3,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col"}],[11,11,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"priority":4096,"virt_text_win_col":-3,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col"}],[12,13,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":false,"priority":10,"virt_text_win_col":-3,"ns_id":3,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-30 17:42:56)","OpencodeHint"],[" [msg_a36372b9a001M1lQEix4SK5QE5]","OpencodeHint"]],"virt_text_pos":"win_col"}]],"timestamp":1766431562,"lines":["----","","","what is this doing","","[lua/opencode/context.lua](lua/opencode/context.lua)","","Line 59:","`````lua","local is_enabled = vim.tbl_get(config, 'context', context_key, 'enabled')","`````","","----","","","**Explanation**","","- The line `local is_enabled = vim.tbl_get(config, 'context', context_key, 'enabled')` (in `lua/opencode/context.lua:58`) uses `vim.tbl_get` to safely read a nested field from a table.","- Concretely it attempts to read `config.context[context_key].enabled` but without throwing an error if `config.context` or `config.context[context_key]` is nil. If any intermediate key is missing it returns `nil`.","- In the surrounding function `M.is_context_enabled`, that value is the default config value for the given context key. The function then checks the state override:"," - If `state.current_context_config[context_key].enabled` is not `nil`, that state value (true/false) is returned."," - Otherwise the `is_enabled` value (from `config`) is returned.","- Example: if `config.context.selection.enabled == true` but `state.current_context_config.selection.enabled == false`, the function returns `false` (state overrides config). If the state value is `nil`, the config value is used.","- Why this matters: `vim.tbl_get` provides safe nested access; using it avoids runtime errors when some parts of the nested config are absent.","",""],"actions":[]} \ No newline at end of file diff --git a/tests/data/diagnostics.expected.json b/tests/data/diagnostics.expected.json index 4f50ad71..f984916d 100644 --- a/tests/data/diagnostics.expected.json +++ b/tests/data/diagnostics.expected.json @@ -1 +1 @@ -{"extmarks":[[1,1,0,{"priority":10,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-11-03 13:34:57)","OpencodeHint"],[" [msg_a49ed91d6001coTsjFq9x6FF5W]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[2,2,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[3,3,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[4,4,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[5,5,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[6,6,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[7,7,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[8,8,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[9,10,0,{"priority":10,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-4.1","OpencodeHint"],[" (2025-11-03 13:34:59)","OpencodeHint"],[" [msg_a49ed9828001mN6CDcWPnGnpHS]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[10,39,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[11,40,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[12,41,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[13,42,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[14,43,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[15,44,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[16,45,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[17,46,0,{"priority":5000,"ns_id":3,"end_col":0,"end_row":47,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"hl_group":"OpencodeDiffAdd","virt_text":[["+","OpencodeDiffAdd"]],"right_gravity":true,"virt_text_pos":"overlay"}],[18,46,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[19,47,0,{"priority":5000,"ns_id":3,"end_col":0,"end_row":48,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"hl_group":"OpencodeDiffAdd","virt_text":[["+","OpencodeDiffAdd"]],"right_gravity":true,"virt_text_pos":"overlay"}],[20,47,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[21,48,0,{"priority":5000,"ns_id":3,"end_col":0,"end_row":49,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"hl_group":"OpencodeDiffAdd","virt_text":[["+","OpencodeDiffAdd"]],"right_gravity":true,"virt_text_pos":"overlay"}],[22,48,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[23,49,0,{"priority":5000,"ns_id":3,"end_col":0,"end_row":50,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"hl_group":"OpencodeDiffAdd","virt_text":[["+","OpencodeDiffAdd"]],"right_gravity":true,"virt_text_pos":"overlay"}],[24,49,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[25,50,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[26,51,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[27,52,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[28,53,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[29,54,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[30,55,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[31,60,0,{"priority":10,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-4.1","OpencodeHint"],[" (2025-11-03 13:35:06)","OpencodeHint"],[" [msg_a49edb694001syExFxMUW1ik3n]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[32,78,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[33,79,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[34,80,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[35,81,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[36,82,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[37,83,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[38,84,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[39,85,0,{"priority":5000,"ns_id":3,"end_col":0,"end_row":86,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"hl_group":"OpencodeDiffDelete","virt_text":[["-","OpencodeDiffDelete"]],"right_gravity":true,"virt_text_pos":"overlay"}],[40,85,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[41,86,0,{"priority":5000,"ns_id":3,"end_col":0,"end_row":87,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"hl_group":"OpencodeDiffAdd","virt_text":[["+","OpencodeDiffAdd"]],"right_gravity":true,"virt_text_pos":"overlay"}],[42,86,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[43,87,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[44,88,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[45,89,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[46,90,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[47,91,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[48,92,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[49,97,0,{"priority":10,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-4.1","OpencodeHint"],[" (2025-11-03 13:35:10)","OpencodeHint"],[" [msg_a49edc4640017DZPFVUPHCm7Ji]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[50,105,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[51,106,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[52,107,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[53,108,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[54,109,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[55,110,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[56,111,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[57,112,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[58,113,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[59,114,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[60,115,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[61,116,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[62,117,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[63,118,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[64,119,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[65,120,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[66,121,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[67,122,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[68,123,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[69,124,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[70,125,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[71,126,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[72,127,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[73,128,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[74,129,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[75,130,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[76,131,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[77,132,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[78,133,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[79,134,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[80,135,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[81,136,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[82,137,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[83,138,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[84,139,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[85,140,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[86,141,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[87,142,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[88,143,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[89,144,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[90,145,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[91,146,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[92,147,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[93,148,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[94,149,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[95,150,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[96,151,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[97,152,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[98,153,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[99,154,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[100,155,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[101,156,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[102,157,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[103,158,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[104,159,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[105,160,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[106,161,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[107,162,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[108,163,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[109,164,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[110,165,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[111,166,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[112,167,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[113,168,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[114,169,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[115,170,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[116,171,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[117,172,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[118,173,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[119,174,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[120,175,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[121,176,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[122,177,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[123,178,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[124,179,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[125,180,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[126,181,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[127,182,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[128,183,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[129,184,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[130,185,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[131,186,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[132,187,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[133,188,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[134,189,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[135,190,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[136,191,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[137,192,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[138,193,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[139,194,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[140,195,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[141,196,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[142,197,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[143,198,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[144,199,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[145,200,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[146,201,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[147,202,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[148,203,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[149,204,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[150,205,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[151,206,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[152,207,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[153,208,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[154,209,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[155,210,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[156,211,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[157,212,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[158,213,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[159,214,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[160,215,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[161,216,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[162,217,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[163,218,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[164,219,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[165,220,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[166,221,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[167,222,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[168,223,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[169,224,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[170,225,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[171,226,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[172,227,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[173,228,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[174,229,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[175,230,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[176,231,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[177,232,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[178,233,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[179,234,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[180,235,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[181,236,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[182,237,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[183,238,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[184,239,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[185,240,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[186,241,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[187,242,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[188,243,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[189,244,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[190,245,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[191,246,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[192,247,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[193,248,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[194,249,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[195,250,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[196,251,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[197,252,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[198,253,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[199,254,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[200,255,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[201,256,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[202,257,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[203,258,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[204,259,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[205,260,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[206,261,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[207,262,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[208,263,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[209,264,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[210,265,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[211,266,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[212,267,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[213,268,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[214,269,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[215,270,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[216,271,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[217,272,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[218,273,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[219,274,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[220,275,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[221,276,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[222,277,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[223,278,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[224,279,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[225,280,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[226,281,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[227,282,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[228,283,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[229,284,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[230,285,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[231,286,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[232,287,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[233,288,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[234,289,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[235,290,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[236,291,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[237,292,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[238,293,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[239,294,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[240,295,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[241,296,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[242,297,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[243,298,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[244,299,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[245,300,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[246,301,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[247,302,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[248,303,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[249,304,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[250,305,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[251,306,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[252,307,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[253,308,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[254,309,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[255,310,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[256,311,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[257,312,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[258,313,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[259,314,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[260,315,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[261,316,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[262,317,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[263,318,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[264,319,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[265,320,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[266,321,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[267,322,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[268,323,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[269,324,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[270,325,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[271,326,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[272,327,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[273,328,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[274,329,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[275,330,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[276,331,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[277,332,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[278,333,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[279,334,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[280,335,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[281,336,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[282,337,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[283,338,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[284,339,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[285,340,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[286,341,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[287,342,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[288,343,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[289,344,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[290,345,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[291,346,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[292,347,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[293,348,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[294,349,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[295,350,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[296,351,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[297,352,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[298,353,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[299,354,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[300,355,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[301,356,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[302,357,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[303,358,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[304,359,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[305,360,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[306,361,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[307,362,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[308,363,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[309,364,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[310,365,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[311,366,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[312,367,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[313,368,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[314,369,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[315,370,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[316,371,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[317,372,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[318,373,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[319,374,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[320,375,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[321,376,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[322,377,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[323,378,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[324,379,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[325,380,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[326,381,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[327,382,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[328,383,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[329,384,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[330,385,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[331,386,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[332,387,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[333,388,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[334,389,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[335,390,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[336,391,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[337,392,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[338,393,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[339,394,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[340,395,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[341,396,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[342,397,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[343,398,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[344,399,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[345,400,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[346,401,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[347,402,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[348,403,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[349,404,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[350,405,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[351,406,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[352,407,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[353,408,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[354,409,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[355,410,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[356,411,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[357,412,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[358,413,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[359,414,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[360,415,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[361,416,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[362,417,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[363,418,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[364,419,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[365,420,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[366,421,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[367,422,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[368,423,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[369,424,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[370,425,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[371,426,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[372,427,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[373,428,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[374,429,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[375,430,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[376,431,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[377,432,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[378,433,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[379,434,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[380,435,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[381,436,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[382,437,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[383,438,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[384,439,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[385,440,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[386,441,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[387,442,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[388,443,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[389,444,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[390,445,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[391,446,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[392,447,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[393,448,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[394,449,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[395,450,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[396,451,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[397,452,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[398,453,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[399,454,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[400,455,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[401,456,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[402,457,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[403,458,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[404,459,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[405,460,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[406,461,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[407,462,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[408,463,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[409,464,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[410,465,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[411,466,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[412,467,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[413,468,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[414,469,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[415,470,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[416,471,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[417,472,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[418,473,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[419,474,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[420,475,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[421,476,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[422,477,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[423,478,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[424,479,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[425,480,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[426,481,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[427,482,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[428,483,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[429,484,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[430,485,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[431,486,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[432,487,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[433,488,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[434,489,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[435,490,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[436,491,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[437,492,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[438,493,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[439,494,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[440,495,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[441,496,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[442,497,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[443,498,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[444,499,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[445,500,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[446,501,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[447,502,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[448,503,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[449,504,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[450,505,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[451,506,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[452,507,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[453,508,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[454,509,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[455,510,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[456,511,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[457,512,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[458,513,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[459,514,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[460,515,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[461,516,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[462,517,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[463,518,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[464,519,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[465,520,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[466,521,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[467,522,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[468,523,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[469,524,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[470,525,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[471,526,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[472,527,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[473,528,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[474,529,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[475,530,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[476,531,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[477,532,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[478,533,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[479,534,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[480,535,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[481,536,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[482,537,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[483,538,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[484,539,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[485,540,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[486,541,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[487,542,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[488,543,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[489,544,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[490,545,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[491,546,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[492,547,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[493,548,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[494,549,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[495,550,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[496,551,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[497,552,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[498,553,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[499,554,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[500,555,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[501,556,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[502,557,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[503,558,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[504,559,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[505,560,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[506,561,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[507,562,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[508,563,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[509,564,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[510,565,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[511,566,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[512,567,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[513,568,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[514,569,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[515,570,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[516,571,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[517,572,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[518,573,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[519,574,0,{"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[520,577,0,{"priority":10,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-4.1","OpencodeHint"],[" (2025-11-03 13:35:15)","OpencodeHint"],[" [msg_a49edd87f001eOJDDoq5Vb5hra]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3}]],"timestamp":1766370766,"lines":["----","","","help me fix the file","","[lua/opencode/core.lua](lua/opencode/core.lua)","","**Diagnostics:**  (3)","","----","","","Let's address the three EmmyLua diagnostics at line 130 in `lua/opencode/core.lua`:","","### 1. `param-type-not-match`: expected `string` but found `string?`","- **Location:** `state.active_session.id` (line 130, col 20)","- **Cause:** `state.active_session` may be `nil`, so `state.active_session.id` could error or be `nil`. The function expects a `string`, not a nullable string.","- **Fix:** Add a nil check for `state.active_session` before accessing `.id`.","","### 2. `param-type-not-match`: expected `{ agent: string?, messageID: string?, model: {...}?, parts: Part[], system: string?, tools: table<...>? }` but found `{ model = table, agent = any, parts = OpencodeMessagePart[], ... }`","- **Location:** `params` argument to `:create_message` (line 130, col 45)","- **Cause:** The `model` field in `params` is `{ providerID = string?, modelID = string? }`, but the expected type is `{ modelID: string, providerID: string }?`. The order and possibly the optionality are mismatched.","- **Fix:** Ensure the `model` field matches the expected type exactly: `{ modelID: string, providerID: string }`.","","### 3. `need-check-nil`: `state.active_session may be nil`","- **Location:** Same as #1. This is a reminder to check for nil before accessing `state.active_session.id`.","","---","","## Step-by-step Fix Plan","","```markdown","- [ ] 1. Add a nil check for `state.active_session` before accessing `.id` in `M.send_message`.","- [ ] 2. Ensure the `model` field in `params` matches the expected type `{ modelID: string, providerID: string }`.","- [ ] 3. Test the changes to ensure the diagnostics are resolved and the function works as expected.","```","","Let's start with step 1: Add a nil check for `state.active_session` before accessing `.id`.","","** edit** `core.lua`","","`````lua"," "," params.parts = context.format_message(prompt, opts.context)"," M.before_run(opts)"," "," if not state.active_session or not state.active_session.id then"," vim.notify('No active session to send message to', vim.log.levels.ERROR)"," return"," end"," state.api_client"," :create_message(state.active_session.id, params)"," :and_then(function(response)"," if not response or not response.info or not response.parts then","","`````","","**󰻛 Created Snapshot** `8e790371`","","----","","","Step 1 is complete: nil check for `state.active_session` before accessing `.id` is added.","","Now, let's address step 2: Ensure the `model` field in `params` matches the expected type `{ modelID: string, providerID: string }`.","","Currently, the code is:","```lua","if opts.model then"," local provider, model = opts.model:match('^(.-)/(.+)$')"," params.model = { providerID = provider, modelID = model }"," state.current_model = opts.model","end","```","The expected type is `{ modelID: string, providerID: string }`, but EmmyLua expects the order to be `modelID` first, then `providerID`. Let's update the assignment to match the expected order.","","I'll fix this now.","","** edit** `core.lua`","","`````lua"," local params = {}"," "," if opts.model then"," local provider, model = opts.model:match('^(.-)/(.+)$')"," params.model = { providerID = provider, modelID = model }"," params.model = { modelID = model, providerID = provider }"," state.current_model = opts.model"," end"," "," if opts.agent then","","`````","","**󰻛 Created Snapshot** `f33f38a7`","","----","","","Step 2 is complete: the `model` field in `params` now matches the expected type `{ modelID = model, providerID = provider }`.","","Now, let's move to step 3: Test the changes to ensure the diagnostics are resolved and the function works as expected.","","I'll run the test suite using the provided script to verify everything is working.","","** run** `Run all tests to verify code changes`","","`````bash","> ./run_tests.sh","","Running tests for opencode.nvim","------------------------------------------------","Starting...Scheduling: ./tests/minimal/plugin_spec.lua","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/minimal/plugin_spec.lua\t","Success\t||\topencode.nvim plugin loads the plugin without errors\t","Success\t||\topencode.nvim plugin can be set up with custom config\t","\t","Success: \t2\t","Failed : \t0\t","========================================\t","✓ Minimal tests passed","------------------------------------------------","Starting...Scheduling: ./tests/unit/keymap_spec.lua","Scheduling: ./tests/unit/opencode_server_spec.lua","Scheduling: ./tests/unit/context_completion_spec.lua","Scheduling: ./tests/unit/config_file_spec.lua","Scheduling: ./tests/unit/init_spec.lua","Scheduling: ./tests/unit/state_spec.lua","Scheduling: ./tests/unit/render_state_spec.lua","Scheduling: ./tests/unit/server_job_spec.lua","Scheduling: ./tests/unit/config_spec.lua","Scheduling: ./tests/unit/context_bar_spec.lua","Scheduling: ./tests/unit/renderer_spec.lua","Scheduling: ./tests/unit/api_client_spec.lua","Scheduling: ./tests/unit/core_spec.lua","Scheduling: ./tests/unit/session_spec.lua","Scheduling: ./tests/unit/event_manager_spec.lua","Scheduling: ./tests/unit/api_spec.lua","Scheduling: ./tests/unit/context_spec.lua","Scheduling: ./tests/unit/timer_spec.lua","Scheduling: ./tests/unit/util_spec.lua","Scheduling: ./tests/unit/snapshot_spec.lua","Scheduling: ./tests/unit/id_spec.lua","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/context_completion_spec.lua\t","Success\t||\tcontext completion get_source should return a completion source\t","Success\t||\tcontext completion complete function should return empty table when trigger char does not match\t","Success\t||\tcontext completion complete function should return context items when trigger char matches\t","Success\t||\tcontext completion complete function should include selection items when selections exist\t","Success\t||\tcontext completion complete function should include mentioned files when they exist\t","Success\t||\tcontext completion complete function should include subagent items when they exist\t","Success\t||\tcontext completion complete function should filter items based on input\t","Success\t||\tcontext completion complete function should sort items with available items first\t","Success\t||\tcontext completion on_complete function should handle nil item gracefully\t","Success\t||\tcontext completion on_complete function should handle item without data gracefully\t","Success\t||\tcontext completion on_complete function should toggle context enabled state for toggleable items\t","Success\t||\tcontext completion on_complete function should remove mentioned file when selected\t","Success\t||\tcontext completion on_complete function should remove subagent when selected\t","Success\t||\tcontext completion on_complete function should remove selection when selection item selected\t","Success\t||\tcontext completion on_complete function should clean up trigger character from current line\t","Success\t||\tcontext completion formatting functions should format diagnostics correctly\t","Success\t||\tcontext completion formatting functions should format cursor data correctly\t","Success\t||\tcontext completion formatting functions should format selection correctly\t","Success\t||\tcontext completion edge cases should handle empty context gracefully\t","Success\t||\tcontext completion edge cases should handle disabled contexts correctly\t","\t","Success: \t20\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/keymap_spec.lua\t","Success\t||\topencode.keymap setup sets up keymap with new format configured keys\t","Success\t||\topencode.keymap setup sets up keymap with old format configured keys (normalized)\t","Success\t||\topencode.keymap setup sets up callbacks that execute the correct commands (new format)\t","Success\t||\topencode.keymap setup sets up callbacks that execute the correct commands (old format normalized)\t","Success\t||\topencode.keymap normalize_keymap normalizes old format keymap to new format correctly\t","Success\t||\topencode.keymap normalize_keymap shows error message for unknown API functions\t","Success\t||\topencode.keymap normalize_keymap uses custom description from config_entry\t","Success\t||\topencode.keymap normalize_keymap falls back to API description when no custom desc provided\t","Success\t||\topencode.keymap setup_window_keymaps handles unknown API functions with error message\t","Success\t||\topencode.keymap setup_window_keymaps uses custom description for window keymaps\t","Success\t||\topencode.keymap setup_permission_keymap sets up permission keymaps when there is a current permission\t","Success\t||\topencode.keymap setup_permission_keymap should delete existing permission keymaps if no current permission exists after being set\t","Success\t||\topencode.keymap setup_permission_keymap does not set permission keymaps when there is no current permission\t","\t","Success: \t13\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/opencode_server_spec.lua\t","Success\t||\topencode.opencode_server creates a new server object\t","Success\t||\topencode.opencode_server spawn promise resolves when stdout emits server URL\t","Success\t||\topencode.opencode_server shutdown resolves shutdown_promise and clears fields\t","Success\t||\topencode.opencode_server calls on_error when stderr is triggered\t","Success\t||\topencode.opencode_server calls on_exit and clears fields when process exits\t","\t","Success: \t5\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/config_file_spec.lua\t","Success\t||\tconfig_file.setup lazily loads config when accessed\t","Success\t||\tconfig_file.setup get_opencode_agents returns primary + defaults\t","Success\t||\tconfig_file.setup get_opencode_agents respects disabled defaults\t","Success\t||\tconfig_file.setup get_opencode_project returns project\t","\t","Success: \t4\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/init_spec.lua\t","Success\t||\topencode has setup function in the public API\t","Success\t||\topencode main module can be required without errors\t","\t","Success: \t2\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/render_state_spec.lua\t","Success\t||\tRenderState new and reset creates a new instance\t","Success\t||\tRenderState new and reset resets to empty state\t","Success\t||\tRenderState set_message sets a new message\t","Success\t||\tRenderState set_message updates line index for message\t","Success\t||\tRenderState set_message updates existing message\t","Success\t||\tRenderState set_part sets a new part\t","Success\t||\tRenderState set_part updates line index for part\t","Success\t||\tRenderState set_part initializes actions array\t","Success\t||\tRenderState get_part_at_line returns part at line\t","Success\t||\tRenderState get_part_at_line returns nil for line without part\t","Success\t||\tRenderState get_message_at_line returns message at line\t","Success\t||\tRenderState get_message_at_line returns nil for line without message\t","Success\t||\tRenderState get_part_by_call_id finds part by call ID\t","Success\t||\tRenderState get_part_by_call_id returns nil when call ID not found\t","Success\t||\tRenderState actions adds actions to part\t","Success\t||\tRenderState actions adds actions with offset\t","Success\t||\tRenderState actions clears actions for part\t","Success\t||\tRenderState actions gets actions at line\t","Success\t||\tRenderState actions gets all actions from all parts\t","Success\t||\tRenderState update_part_lines updates part line positions\t","Success\t||\tRenderState update_part_lines shifts subsequent content when expanding\t","Success\t||\tRenderState update_part_lines shifts subsequent content when shrinking\t","Success\t||\tRenderState update_part_lines returns false for non-existent part\t","Success\t||\tRenderState remove_part removes part and shifts subsequent content\t","Success\t||\tRenderState remove_part clears line index for removed part\t","Success\t||\tRenderState remove_part returns false for non-existent part\t","Success\t||\tRenderState remove_message removes message and shifts subsequent content\t","Success\t||\tRenderState remove_message clears line index for removed message\t","Success\t||\tRenderState remove_message returns false for non-existent message\t","Success\t||\tRenderState shift_all does nothing when delta is 0\t","Success\t||\tRenderState shift_all shifts content at or after from_line\t","Success\t||\tRenderState shift_all shifts actions with parts\t","Success\t||\tRenderState shift_all does not rebuild index when nothing shifted\t","Success\t||\tRenderState shift_all invalidates index when content shifted\t","Success\t||\tRenderState shift_all exits early when content found before from_line\t","Success\t||\tRenderState update_part_data updates part reference\t","Success\t||\tRenderState update_part_data does nothing for non-existent part\t","\t","Success: \t37\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/server_job_spec.lua\t","Success\t||\tserver_job exposes expected public functions\t","Success\t||\tserver_job call_api resolves with decoded json and toggles is_job_running\t","Success\t||\tserver_job call_api rejects on non 2xx\t","Success\t||\tserver_job stream_api forwards chunks\t","Success\t||\tserver_job ensure_server spawns a new opencode server only once\t","\t","Success: \t5\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/config_spec.lua\t","Success\t||\topencode.config uses default values when no options are provided\t","Success\t||\topencode.config merges user options with defaults\t","\t","Success: \t2\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/context_bar_spec.lua\t","Success\t||\topencode.ui.context_bar opencode.ui.context_bar renders minimal winbar with right aligh token only\t","Success\t||\topencode.ui.context_bar opencode.ui.context_bar renders winbar with current file when present\t","Success\t||\topencode.ui.context_bar opencode.ui.context_bar renders winbar with multiple context elements\t","Success\t||\topencode.ui.context_bar opencode.ui.context_bar renders winbar with diagnostics\t","Success\t||\topencode.ui.context_bar opencode.ui.context_bar respects context enabled settings\t","Success\t||\topencode.ui.context_bar opencode.ui.context_bar handles empty winbar gracefully\t","Success\t||\topencode.ui.context_bar opencode.ui.context_bar does nothing when window is invalid\t","Success\t||\topencode.ui.context_bar opencode.ui.context_bar uses provided windows parameter\t","Success\t||\topencode.ui.context_bar setup subscribes to state changes\t","\t","Success: \t9\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/api_client_spec.lua\t","Success\t||\tapi_client should create a new client instance\t","Success\t||\tapi_client should remove trailing slash from base_url\t","Success\t||\tapi_client should create client using create factory function\t","Success\t||\tapi_client should have all expected API methods\t","Success\t||\tapi_client should construct URLs correctly with query parameters\t","\t","Success: \t5\t","Failed : \t0\t","========================================\t","Error detected while processing command line:","opencode command not found - please install and configure opencode before using this plugin","Unsupported opencode CLI version: opencode 0.4.1. Requires >= 0.4.2","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/core_spec.lua\t","Success\t||\topencode.core open creates windows if they don't exist\t","Success\t||\topencode.core open handles new session properly\t","Success\t||\topencode.core open focuses the appropriate window\t","Success\t||\topencode.core select_session filters sessions by description and parentID\t","Success\t||\topencode.core send_message sends a message via api_client\t","Success\t||\topencode.core send_message creates new session when none active\t","Success\t||\topencode.core send_message persist options in state when sending message\t","Success\t||\topencode.core opencode_ok (version checks) returns false when opencode executable is missing\t","Success\t||\topencode.core opencode_ok (version checks) returns false when version is below required\t","Success\t||\topencode.core opencode_ok (version checks) returns true when version equals required\t","Success\t||\topencode.core opencode_ok (version checks) returns true when version is above required\t","\t","Success: \t11\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/session_spec.lua\t","Success\t||\topencode.session get_last_workspace_session returns the most recent session for current workspace\t","Success\t||\topencode.session get_last_workspace_session returns nil when no sessions match the workspace\t","Success\t||\topencode.session get_last_workspace_session handles JSON parsing errors\t","Success\t||\topencode.session get_last_workspace_session handles empty session list\t","Success\t||\topencode.session get_by_name returns the session with matching ID\t","Success\t||\topencode.session get_by_name returns nil when no session matches the ID\t","Success\t||\topencode.session read_json_dir returns nil for non-existent directory\t","Success\t||\topencode.session read_json_dir returns nil when directory exists but has no JSON files\t","Success\t||\topencode.session read_json_dir returns decoded JSON content from directory\t","Success\t||\topencode.session read_json_dir skips invalid JSON files\t","Success\t||\topencode.session get_messages returns nil when session is nil\t","Success\t||\topencode.session get_messages returns nil when messages directory does not exist\t","Success\t||\topencode.session get_messages returns messages with their parts\t","\t","Success: \t13\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/state_spec.lua\t","Success\t||\topencode.state (observable) notifies listeners on key change\t","Success\t||\topencode.state (observable) notifies wildcard listeners on any key change\t","Success\t||\topencode.state (observable) can unregister listeners\t","Success\t||\topencode.state (observable) does not notify if value is unchanged\t","\t","Success: \t4\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/event_manager_spec.lua\t","Success\t||\tEventManager should create a new instance\t","Success\t||\tEventManager should subscribe and emit events\t","Success\t||\tEventManager should handle multiple subscribers\t","Success\t||\tEventManager should unsubscribe correctly\t","Success\t||\tEventManager should track subscriber count\t","Success\t||\tEventManager should list event names\t","Success\t||\tEventManager should handle starting and stopping\t","Success\t||\tEventManager should not start multiple times\t","\t","Success: \t8\t","Failed : \t0\t","========================================\t","File not added to context. Could not read.","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/context_spec.lua\t","Success\t||\textract_from_opencode_message extracts prompt, selected_text, and current_file from tags in parts\t","Success\t||\textract_from_opencode_message returns nils if message or parts missing\t","Success\t||\textract_from_message_legacy extracts legacy tags from text\t","Success\t||\textract_legacy_tag extracts content between tags\t","Success\t||\textract_legacy_tag returns nil if tag not found\t","Success\t||\tformat_message returns a parts array with prompt as first part\t","Success\t||\tformat_message includes mentioned_files and subagents\t","Success\t||\tdelta_context removes current_file if unchanged\t","Success\t||\tdelta_context removes mentioned_subagents if unchanged\t","Success\t||\tadd_file/add_selection/add_subagent adds a file if filereadable\t","Success\t||\tadd_file/add_selection/add_subagent does not add file if not filereadable\t","Success\t||\tadd_file/add_selection/add_subagent adds a selection\t","Success\t||\tadd_file/add_selection/add_subagent adds a subagent\t","\t","Success: \t13\t","Failed : \t0\t","========================================\t",":OpencodeOpenInput is deprecated. Use `:Opencode open input` instead",":OpencodeStop is deprecated. Use `:Opencode cancel` instead",":OpencodeClose is deprecated. Use `:Opencode close` instead","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/api_spec.lua\t","Success\t||\topencode.api commands table contains the expected commands with proper structure\t","Success\t||\topencode.api setup registers the main Opencode command and legacy commands\t","Success\t||\topencode.api setup sets up legacy command functions that route to main command\t","Success\t||\topencode.api Lua API provides callable functions that match commands\t","Success\t||\topencode.api run command argument parsing parses agent prefix and passes to send_message\t","Success\t||\topencode.api run command argument parsing parses model prefix and passes to send_message\t","Success\t||\topencode.api run command argument parsing parses context prefix and passes to send_message\t","Success\t||\topencode.api run command argument parsing parses multiple prefixes and passes all to send_message\t","Success\t||\topencode.api run command argument parsing works with run_new command\t","Success\t||\topencode.api run command argument parsing requires a prompt after prefixes\t","Success\t||\topencode.api run command argument parsing Lua API accepts opts directly without parsing\t","\t","Success: \t11\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/util_spec.lua\t","Success\t||\tutil.parse_dot_args parses flat booleans\t","Success\t||\tutil.parse_dot_args parses nested dot notation\t","Success\t||\tutil.parse_dot_args parses mixed nesting and booleans\t","Success\t||\tutil.parse_dot_args parses numbers\t","Success\t||\tutil.parse_dot_args handles empty string\t","Success\t||\tutil.parse_run_args parses no prefixes\t","Success\t||\tutil.parse_run_args parses single agent prefix\t","Success\t||\tutil.parse_run_args parses single model prefix\t","Success\t||\tutil.parse_run_args parses single context prefix\t","Success\t||\tutil.parse_run_args parses multiple prefixes in order\t","Success\t||\tutil.parse_run_args parses context with multiple comma-delimited values\t","Success\t||\tutil.parse_run_args handles empty prompt after prefixes\t","Success\t||\tutil.parse_run_args handles empty string\t","Success\t||\tutil.parse_run_args stops parsing at first non-prefix token\t","\t","Success: \t14\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/snapshot_spec.lua\t","Success\t||\tsnapshot.restore runs read-tree and checkout-index and notifies on success\t","Success\t||\tsnapshot.restore notifies error if no active session\t","Success\t||\tsnapshot.restore notifies error if read-tree fails\t","Success\t||\tsnapshot.restore notifies error if checkout-index fails\t","\t","Success: \t4\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/id_spec.lua\t","Success\t||\tID module should generate ascending session IDs\t","Success\t||\tID module should generate descending message IDs\t","Success\t||\tID module should validate given IDs correctly\t","Success\t||\tID module should throw error for invalid given IDs\t","Success\t||\tID module should validate schemas correctly\t","Success\t||\tID module should return available prefixes\t","Success\t||\tID module should generate IDs with correct length structure\t","\t","Success: \t7\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/timer_spec.lua\t","Success\t||\tTimer Timer.new creates a new timer with required options\t","Success\t||\tTimer Timer.new sets repeat_timer to false when explicitly disabled\t","Success\t||\tTimer Timer.new stores optional parameters\t","Success\t||\tTimer Timer:start starts a repeating timer\t","Success\t||\tTimer Timer:start starts a one-shot timer\t","Success\t||\tTimer Timer:start passes arguments to on_tick function\t","Success\t||\tTimer Timer:start stops timer when on_tick returns false\t","Success\t||\tTimer Timer:start stops timer when on_tick throws an error\t","Success\t||\tTimer Timer:start stops previous timer before starting new one\t","Success\t||\tTimer Timer:start throws error when timer creation fails\t","Success\t||\tTimer Timer:stop stops a running timer\t","Success\t||\tTimer Timer:stop calls on_stop callback when provided\t","Success\t||\tTimer Timer:stop does nothing when timer is not running\t","Success\t||\tTimer Timer:stop handles errors in on_stop callback gracefully\t","Success\t||\tTimer Timer:is_running returns false when timer is not started\t","Success\t||\tTimer Timer:is_running returns true when timer is running\t","Success\t||\tTimer Timer:is_running returns false after timer is stopped\t","Success\t||\tTimer Timer:is_running returns false after one-shot timer completes\t","Success\t||\tTimer Integration tests can restart a stopped timer\t","Success\t||\tTimer Integration tests handles rapid start/stop cycles\t","\t","Success: \t20\t","Failed : \t0\t","========================================\t","Two pending permissions? existing: per_9efb5b2f3001aqJAFBMiGjFjVZ new: per_9efb5bc2a001j9Bd6bFjLB7hrc","Two pending permissions? existing: per_9efb5bc2a001j9Bd6bFjLB7hrc new: per_9efb5d6d1001uwVXQ9dhlBlgfO","Two pending permissions? existing: per_9efb5b2f3001aqJAFBMiGjFjVZ new: per_9efb5bc2a001j9Bd6bFjLB7hrc","Two pending permissions? existing: per_9efb5bc2a001j9Bd6bFjLB7hrc new: per_9efb5d6d1001uwVXQ9dhlBlgfO","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/renderer_spec.lua\t","Success\t||\trenderer replays ansi-codes correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays ansi-codes correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays ansi-codes correctly (session)\t","Success\t||\trenderer replays api-abort correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays api-abort correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays api-abort correctly (session)\t","Success\t||\trenderer replays api-error correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays api-error correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays api-error correctly (session)\t","Success\t||\trenderer replays cursor_data correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays cursor_data correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays cursor_data correctly (session)\t","Success\t||\trenderer replays diff correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays diff correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays diff correctly (session)\t","Success\t||\trenderer replays markdown-codefence correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays markdown-codefence correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays markdown-codefence correctly (session)\t","Success\t||\trenderer replays mentions-with-ranges correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays mentions-with-ranges correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays mentions-with-ranges correctly (session)\t","Success\t||\trenderer replays message-removal correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays message-removal correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays perf correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays perf correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays perf correctly (session)\t","Success\t||\trenderer replays permission-denied correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays permission-denied correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays permission-denied correctly (session)\t","Success\t||\trenderer replays permission-prompt correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays permission-prompt correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays permission correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays permission correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays permission correctly (session)\t","Success\t||\trenderer replays planning correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays planning correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays planning correctly (session)\t","Success\t||\trenderer replays redo-all correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays redo-all correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays redo-all correctly (session)\t","Success\t||\trenderer replays redo-once correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays redo-once correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays redo-once correctly (session)\t","Success\t||\trenderer replays revert correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays revert correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays revert correctly (session)\t","Success\t||\trenderer replays selection correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays selection correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays selection correctly (session)\t","Success\t||\trenderer replays shifting-and-multiple-perms correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays shifting-and-multiple-perms correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays simple-session correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays simple-session correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays simple-session correctly (session)\t","Success\t||\trenderer replays tool-invalid correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays tool-invalid correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays tool-invalid correctly (session)\t","Success\t||\trenderer replays updating-text correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays updating-text correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays updating-text correctly (session)\t","\t","Success: \t60\t","Failed : \t0\t","========================================\t","✓ Unit tests passed","------------------------------------------------","All tests passed successfully!","","`````","","----","","","All steps are complete and all tests pass! Here’s a summary of what was fixed:","","- ✅ Added a nil check for `state.active_session` before accessing `.id` in `M.send_message`.","- ✅ Ensured the `model` field in `params` matches the expected type `{ modelID = ..., providerID = ... }`.","- ✅ Verified the fixes by running the full test suite—no errors or failures.","","Your file is now robust and EmmyLua diagnostics at line 130 are resolved. If you need further tweaks or want to address other diagnostics, let me know!","",""],"actions":[{"text":"[R]evert file","range":{"to":94,"from":94},"display_line":94,"args":["f33f38a70b284207e092c2c578a24e96fdd1bd4d"],"type":"diff_revert_selected_file","key":"R"},{"text":"Revert [A]ll","range":{"to":94,"from":94},"display_line":94,"args":["f33f38a70b284207e092c2c578a24e96fdd1bd4d"],"type":"diff_revert_all","key":"A"},{"text":"[D]iff","range":{"to":94,"from":94},"display_line":94,"args":["f33f38a70b284207e092c2c578a24e96fdd1bd4d"],"type":"diff_open","key":"D"},{"text":"[R]evert file","range":{"to":57,"from":57},"display_line":57,"args":["8e7903714919009004aad8754db0035fb47ecb24"],"type":"diff_revert_selected_file","key":"R"},{"text":"Revert [A]ll","range":{"to":57,"from":57},"display_line":57,"args":["8e7903714919009004aad8754db0035fb47ecb24"],"type":"diff_revert_all","key":"A"},{"text":"[D]iff","range":{"to":57,"from":57},"display_line":57,"args":["8e7903714919009004aad8754db0035fb47ecb24"],"type":"diff_open","key":"D"}]} \ No newline at end of file +{"lines":["----","","","help me fix the file","","[lua/opencode/core.lua](lua/opencode/core.lua)","","**Diagnostics:** (3)","","----","","","Let's address the three EmmyLua diagnostics at line 130 in `lua/opencode/core.lua`:","","### 1. `param-type-not-match`: expected `string` but found `string?`","- **Location:** `state.active_session.id` (line 130, col 20)","- **Cause:** `state.active_session` may be `nil`, so `state.active_session.id` could error or be `nil`. The function expects a `string`, not a nullable string.","- **Fix:** Add a nil check for `state.active_session` before accessing `.id`.","","### 2. `param-type-not-match`: expected `{ agent: string?, messageID: string?, model: {...}?, parts: Part[], system: string?, tools: table<...>? }` but found `{ model = table, agent = any, parts = OpencodeMessagePart[], ... }`","- **Location:** `params` argument to `:create_message` (line 130, col 45)","- **Cause:** The `model` field in `params` is `{ providerID = string?, modelID = string? }`, but the expected type is `{ modelID: string, providerID: string }?`. The order and possibly the optionality are mismatched.","- **Fix:** Ensure the `model` field matches the expected type exactly: `{ modelID: string, providerID: string }`.","","### 3. `need-check-nil`: `state.active_session may be nil`","- **Location:** Same as #1. This is a reminder to check for nil before accessing `state.active_session.id`.","","---","","## Step-by-step Fix Plan","","```markdown","- [ ] 1. Add a nil check for `state.active_session` before accessing `.id` in `M.send_message`.","- [ ] 2. Ensure the `model` field in `params` matches the expected type `{ modelID: string, providerID: string }`.","- [ ] 3. Test the changes to ensure the diagnostics are resolved and the function works as expected.","```","","Let's start with step 1: Add a nil check for `state.active_session` before accessing `.id`.","","** edit** `core.lua`","","`````lua"," "," params.parts = context.format_message(prompt, opts.context)"," M.before_run(opts)"," "," if not state.active_session or not state.active_session.id then"," vim.notify('No active session to send message to', vim.log.levels.ERROR)"," return"," end"," state.api_client"," :create_message(state.active_session.id, params)"," :and_then(function(response)"," if not response or not response.info or not response.parts then","","`````","","**󰻛 Created Snapshot** `8e790371`","","----","","","Step 1 is complete: nil check for `state.active_session` before accessing `.id` is added.","","Now, let's address step 2: Ensure the `model` field in `params` matches the expected type `{ modelID: string, providerID: string }`.","","Currently, the code is:","```lua","if opts.model then"," local provider, model = opts.model:match('^(.-)/(.+)$')"," params.model = { providerID = provider, modelID = model }"," state.current_model = opts.model","end","```","The expected type is `{ modelID: string, providerID: string }`, but EmmyLua expects the order to be `modelID` first, then `providerID`. Let's update the assignment to match the expected order.","","I'll fix this now.","","** edit** `core.lua`","","`````lua"," local params = {}"," "," if opts.model then"," local provider, model = opts.model:match('^(.-)/(.+)$')"," params.model = { providerID = provider, modelID = model }"," params.model = { modelID = model, providerID = provider }"," state.current_model = opts.model"," end"," "," if opts.agent then","","`````","","**󰻛 Created Snapshot** `f33f38a7`","","----","","","Step 2 is complete: the `model` field in `params` now matches the expected type `{ modelID = model, providerID = provider }`.","","Now, let's move to step 3: Test the changes to ensure the diagnostics are resolved and the function works as expected.","","I'll run the test suite using the provided script to verify everything is working.","","** run** `Run all tests to verify code changes`","","`````bash","> ./run_tests.sh","","Running tests for opencode.nvim","------------------------------------------------","Starting...Scheduling: ./tests/minimal/plugin_spec.lua","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/minimal/plugin_spec.lua\t","Success\t||\topencode.nvim plugin loads the plugin without errors\t","Success\t||\topencode.nvim plugin can be set up with custom config\t","\t","Success: \t2\t","Failed : \t0\t","========================================\t","✓ Minimal tests passed","------------------------------------------------","Starting...Scheduling: ./tests/unit/keymap_spec.lua","Scheduling: ./tests/unit/opencode_server_spec.lua","Scheduling: ./tests/unit/context_completion_spec.lua","Scheduling: ./tests/unit/config_file_spec.lua","Scheduling: ./tests/unit/init_spec.lua","Scheduling: ./tests/unit/state_spec.lua","Scheduling: ./tests/unit/render_state_spec.lua","Scheduling: ./tests/unit/server_job_spec.lua","Scheduling: ./tests/unit/config_spec.lua","Scheduling: ./tests/unit/context_bar_spec.lua","Scheduling: ./tests/unit/renderer_spec.lua","Scheduling: ./tests/unit/api_client_spec.lua","Scheduling: ./tests/unit/core_spec.lua","Scheduling: ./tests/unit/session_spec.lua","Scheduling: ./tests/unit/event_manager_spec.lua","Scheduling: ./tests/unit/api_spec.lua","Scheduling: ./tests/unit/context_spec.lua","Scheduling: ./tests/unit/timer_spec.lua","Scheduling: ./tests/unit/util_spec.lua","Scheduling: ./tests/unit/snapshot_spec.lua","Scheduling: ./tests/unit/id_spec.lua","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/context_completion_spec.lua\t","Success\t||\tcontext completion get_source should return a completion source\t","Success\t||\tcontext completion complete function should return empty table when trigger char does not match\t","Success\t||\tcontext completion complete function should return context items when trigger char matches\t","Success\t||\tcontext completion complete function should include selection items when selections exist\t","Success\t||\tcontext completion complete function should include mentioned files when they exist\t","Success\t||\tcontext completion complete function should include subagent items when they exist\t","Success\t||\tcontext completion complete function should filter items based on input\t","Success\t||\tcontext completion complete function should sort items with available items first\t","Success\t||\tcontext completion on_complete function should handle nil item gracefully\t","Success\t||\tcontext completion on_complete function should handle item without data gracefully\t","Success\t||\tcontext completion on_complete function should toggle context enabled state for toggleable items\t","Success\t||\tcontext completion on_complete function should remove mentioned file when selected\t","Success\t||\tcontext completion on_complete function should remove subagent when selected\t","Success\t||\tcontext completion on_complete function should remove selection when selection item selected\t","Success\t||\tcontext completion on_complete function should clean up trigger character from current line\t","Success\t||\tcontext completion formatting functions should format diagnostics correctly\t","Success\t||\tcontext completion formatting functions should format cursor data correctly\t","Success\t||\tcontext completion formatting functions should format selection correctly\t","Success\t||\tcontext completion edge cases should handle empty context gracefully\t","Success\t||\tcontext completion edge cases should handle disabled contexts correctly\t","\t","Success: \t20\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/keymap_spec.lua\t","Success\t||\topencode.keymap setup sets up keymap with new format configured keys\t","Success\t||\topencode.keymap setup sets up keymap with old format configured keys (normalized)\t","Success\t||\topencode.keymap setup sets up callbacks that execute the correct commands (new format)\t","Success\t||\topencode.keymap setup sets up callbacks that execute the correct commands (old format normalized)\t","Success\t||\topencode.keymap normalize_keymap normalizes old format keymap to new format correctly\t","Success\t||\topencode.keymap normalize_keymap shows error message for unknown API functions\t","Success\t||\topencode.keymap normalize_keymap uses custom description from config_entry\t","Success\t||\topencode.keymap normalize_keymap falls back to API description when no custom desc provided\t","Success\t||\topencode.keymap setup_window_keymaps handles unknown API functions with error message\t","Success\t||\topencode.keymap setup_window_keymaps uses custom description for window keymaps\t","Success\t||\topencode.keymap setup_permission_keymap sets up permission keymaps when there is a current permission\t","Success\t||\topencode.keymap setup_permission_keymap should delete existing permission keymaps if no current permission exists after being set\t","Success\t||\topencode.keymap setup_permission_keymap does not set permission keymaps when there is no current permission\t","\t","Success: \t13\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/opencode_server_spec.lua\t","Success\t||\topencode.opencode_server creates a new server object\t","Success\t||\topencode.opencode_server spawn promise resolves when stdout emits server URL\t","Success\t||\topencode.opencode_server shutdown resolves shutdown_promise and clears fields\t","Success\t||\topencode.opencode_server calls on_error when stderr is triggered\t","Success\t||\topencode.opencode_server calls on_exit and clears fields when process exits\t","\t","Success: \t5\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/config_file_spec.lua\t","Success\t||\tconfig_file.setup lazily loads config when accessed\t","Success\t||\tconfig_file.setup get_opencode_agents returns primary + defaults\t","Success\t||\tconfig_file.setup get_opencode_agents respects disabled defaults\t","Success\t||\tconfig_file.setup get_opencode_project returns project\t","\t","Success: \t4\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/init_spec.lua\t","Success\t||\topencode has setup function in the public API\t","Success\t||\topencode main module can be required without errors\t","\t","Success: \t2\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/render_state_spec.lua\t","Success\t||\tRenderState new and reset creates a new instance\t","Success\t||\tRenderState new and reset resets to empty state\t","Success\t||\tRenderState set_message sets a new message\t","Success\t||\tRenderState set_message updates line index for message\t","Success\t||\tRenderState set_message updates existing message\t","Success\t||\tRenderState set_part sets a new part\t","Success\t||\tRenderState set_part updates line index for part\t","Success\t||\tRenderState set_part initializes actions array\t","Success\t||\tRenderState get_part_at_line returns part at line\t","Success\t||\tRenderState get_part_at_line returns nil for line without part\t","Success\t||\tRenderState get_message_at_line returns message at line\t","Success\t||\tRenderState get_message_at_line returns nil for line without message\t","Success\t||\tRenderState get_part_by_call_id finds part by call ID\t","Success\t||\tRenderState get_part_by_call_id returns nil when call ID not found\t","Success\t||\tRenderState actions adds actions to part\t","Success\t||\tRenderState actions adds actions with offset\t","Success\t||\tRenderState actions clears actions for part\t","Success\t||\tRenderState actions gets actions at line\t","Success\t||\tRenderState actions gets all actions from all parts\t","Success\t||\tRenderState update_part_lines updates part line positions\t","Success\t||\tRenderState update_part_lines shifts subsequent content when expanding\t","Success\t||\tRenderState update_part_lines shifts subsequent content when shrinking\t","Success\t||\tRenderState update_part_lines returns false for non-existent part\t","Success\t||\tRenderState remove_part removes part and shifts subsequent content\t","Success\t||\tRenderState remove_part clears line index for removed part\t","Success\t||\tRenderState remove_part returns false for non-existent part\t","Success\t||\tRenderState remove_message removes message and shifts subsequent content\t","Success\t||\tRenderState remove_message clears line index for removed message\t","Success\t||\tRenderState remove_message returns false for non-existent message\t","Success\t||\tRenderState shift_all does nothing when delta is 0\t","Success\t||\tRenderState shift_all shifts content at or after from_line\t","Success\t||\tRenderState shift_all shifts actions with parts\t","Success\t||\tRenderState shift_all does not rebuild index when nothing shifted\t","Success\t||\tRenderState shift_all invalidates index when content shifted\t","Success\t||\tRenderState shift_all exits early when content found before from_line\t","Success\t||\tRenderState update_part_data updates part reference\t","Success\t||\tRenderState update_part_data does nothing for non-existent part\t","\t","Success: \t37\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/server_job_spec.lua\t","Success\t||\tserver_job exposes expected public functions\t","Success\t||\tserver_job call_api resolves with decoded json and toggles is_job_running\t","Success\t||\tserver_job call_api rejects on non 2xx\t","Success\t||\tserver_job stream_api forwards chunks\t","Success\t||\tserver_job ensure_server spawns a new opencode server only once\t","\t","Success: \t5\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/config_spec.lua\t","Success\t||\topencode.config uses default values when no options are provided\t","Success\t||\topencode.config merges user options with defaults\t","\t","Success: \t2\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/context_bar_spec.lua\t","Success\t||\topencode.ui.context_bar opencode.ui.context_bar renders minimal winbar with right aligh token only\t","Success\t||\topencode.ui.context_bar opencode.ui.context_bar renders winbar with current file when present\t","Success\t||\topencode.ui.context_bar opencode.ui.context_bar renders winbar with multiple context elements\t","Success\t||\topencode.ui.context_bar opencode.ui.context_bar renders winbar with diagnostics\t","Success\t||\topencode.ui.context_bar opencode.ui.context_bar respects context enabled settings\t","Success\t||\topencode.ui.context_bar opencode.ui.context_bar handles empty winbar gracefully\t","Success\t||\topencode.ui.context_bar opencode.ui.context_bar does nothing when window is invalid\t","Success\t||\topencode.ui.context_bar opencode.ui.context_bar uses provided windows parameter\t","Success\t||\topencode.ui.context_bar setup subscribes to state changes\t","\t","Success: \t9\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/api_client_spec.lua\t","Success\t||\tapi_client should create a new client instance\t","Success\t||\tapi_client should remove trailing slash from base_url\t","Success\t||\tapi_client should create client using create factory function\t","Success\t||\tapi_client should have all expected API methods\t","Success\t||\tapi_client should construct URLs correctly with query parameters\t","\t","Success: \t5\t","Failed : \t0\t","========================================\t","Error detected while processing command line:","opencode command not found - please install and configure opencode before using this plugin","Unsupported opencode CLI version: opencode 0.4.1. Requires >= 0.4.2","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/core_spec.lua\t","Success\t||\topencode.core open creates windows if they don't exist\t","Success\t||\topencode.core open handles new session properly\t","Success\t||\topencode.core open focuses the appropriate window\t","Success\t||\topencode.core select_session filters sessions by description and parentID\t","Success\t||\topencode.core send_message sends a message via api_client\t","Success\t||\topencode.core send_message creates new session when none active\t","Success\t||\topencode.core send_message persist options in state when sending message\t","Success\t||\topencode.core opencode_ok (version checks) returns false when opencode executable is missing\t","Success\t||\topencode.core opencode_ok (version checks) returns false when version is below required\t","Success\t||\topencode.core opencode_ok (version checks) returns true when version equals required\t","Success\t||\topencode.core opencode_ok (version checks) returns true when version is above required\t","\t","Success: \t11\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/session_spec.lua\t","Success\t||\topencode.session get_last_workspace_session returns the most recent session for current workspace\t","Success\t||\topencode.session get_last_workspace_session returns nil when no sessions match the workspace\t","Success\t||\topencode.session get_last_workspace_session handles JSON parsing errors\t","Success\t||\topencode.session get_last_workspace_session handles empty session list\t","Success\t||\topencode.session get_by_name returns the session with matching ID\t","Success\t||\topencode.session get_by_name returns nil when no session matches the ID\t","Success\t||\topencode.session read_json_dir returns nil for non-existent directory\t","Success\t||\topencode.session read_json_dir returns nil when directory exists but has no JSON files\t","Success\t||\topencode.session read_json_dir returns decoded JSON content from directory\t","Success\t||\topencode.session read_json_dir skips invalid JSON files\t","Success\t||\topencode.session get_messages returns nil when session is nil\t","Success\t||\topencode.session get_messages returns nil when messages directory does not exist\t","Success\t||\topencode.session get_messages returns messages with their parts\t","\t","Success: \t13\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/state_spec.lua\t","Success\t||\topencode.state (observable) notifies listeners on key change\t","Success\t||\topencode.state (observable) notifies wildcard listeners on any key change\t","Success\t||\topencode.state (observable) can unregister listeners\t","Success\t||\topencode.state (observable) does not notify if value is unchanged\t","\t","Success: \t4\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/event_manager_spec.lua\t","Success\t||\tEventManager should create a new instance\t","Success\t||\tEventManager should subscribe and emit events\t","Success\t||\tEventManager should handle multiple subscribers\t","Success\t||\tEventManager should unsubscribe correctly\t","Success\t||\tEventManager should track subscriber count\t","Success\t||\tEventManager should list event names\t","Success\t||\tEventManager should handle starting and stopping\t","Success\t||\tEventManager should not start multiple times\t","\t","Success: \t8\t","Failed : \t0\t","========================================\t","File not added to context. Could not read.","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/context_spec.lua\t","Success\t||\textract_from_opencode_message extracts prompt, selected_text, and current_file from tags in parts\t","Success\t||\textract_from_opencode_message returns nils if message or parts missing\t","Success\t||\textract_from_message_legacy extracts legacy tags from text\t","Success\t||\textract_legacy_tag extracts content between tags\t","Success\t||\textract_legacy_tag returns nil if tag not found\t","Success\t||\tformat_message returns a parts array with prompt as first part\t","Success\t||\tformat_message includes mentioned_files and subagents\t","Success\t||\tdelta_context removes current_file if unchanged\t","Success\t||\tdelta_context removes mentioned_subagents if unchanged\t","Success\t||\tadd_file/add_selection/add_subagent adds a file if filereadable\t","Success\t||\tadd_file/add_selection/add_subagent does not add file if not filereadable\t","Success\t||\tadd_file/add_selection/add_subagent adds a selection\t","Success\t||\tadd_file/add_selection/add_subagent adds a subagent\t","\t","Success: \t13\t","Failed : \t0\t","========================================\t",":OpencodeOpenInput is deprecated. Use `:Opencode open input` instead",":OpencodeStop is deprecated. Use `:Opencode cancel` instead",":OpencodeClose is deprecated. Use `:Opencode close` instead","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/api_spec.lua\t","Success\t||\topencode.api commands table contains the expected commands with proper structure\t","Success\t||\topencode.api setup registers the main Opencode command and legacy commands\t","Success\t||\topencode.api setup sets up legacy command functions that route to main command\t","Success\t||\topencode.api Lua API provides callable functions that match commands\t","Success\t||\topencode.api run command argument parsing parses agent prefix and passes to send_message\t","Success\t||\topencode.api run command argument parsing parses model prefix and passes to send_message\t","Success\t||\topencode.api run command argument parsing parses context prefix and passes to send_message\t","Success\t||\topencode.api run command argument parsing parses multiple prefixes and passes all to send_message\t","Success\t||\topencode.api run command argument parsing works with run_new command\t","Success\t||\topencode.api run command argument parsing requires a prompt after prefixes\t","Success\t||\topencode.api run command argument parsing Lua API accepts opts directly without parsing\t","\t","Success: \t11\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/util_spec.lua\t","Success\t||\tutil.parse_dot_args parses flat booleans\t","Success\t||\tutil.parse_dot_args parses nested dot notation\t","Success\t||\tutil.parse_dot_args parses mixed nesting and booleans\t","Success\t||\tutil.parse_dot_args parses numbers\t","Success\t||\tutil.parse_dot_args handles empty string\t","Success\t||\tutil.parse_run_args parses no prefixes\t","Success\t||\tutil.parse_run_args parses single agent prefix\t","Success\t||\tutil.parse_run_args parses single model prefix\t","Success\t||\tutil.parse_run_args parses single context prefix\t","Success\t||\tutil.parse_run_args parses multiple prefixes in order\t","Success\t||\tutil.parse_run_args parses context with multiple comma-delimited values\t","Success\t||\tutil.parse_run_args handles empty prompt after prefixes\t","Success\t||\tutil.parse_run_args handles empty string\t","Success\t||\tutil.parse_run_args stops parsing at first non-prefix token\t","\t","Success: \t14\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/snapshot_spec.lua\t","Success\t||\tsnapshot.restore runs read-tree and checkout-index and notifies on success\t","Success\t||\tsnapshot.restore notifies error if no active session\t","Success\t||\tsnapshot.restore notifies error if read-tree fails\t","Success\t||\tsnapshot.restore notifies error if checkout-index fails\t","\t","Success: \t4\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/id_spec.lua\t","Success\t||\tID module should generate ascending session IDs\t","Success\t||\tID module should generate descending message IDs\t","Success\t||\tID module should validate given IDs correctly\t","Success\t||\tID module should throw error for invalid given IDs\t","Success\t||\tID module should validate schemas correctly\t","Success\t||\tID module should return available prefixes\t","Success\t||\tID module should generate IDs with correct length structure\t","\t","Success: \t7\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/timer_spec.lua\t","Success\t||\tTimer Timer.new creates a new timer with required options\t","Success\t||\tTimer Timer.new sets repeat_timer to false when explicitly disabled\t","Success\t||\tTimer Timer.new stores optional parameters\t","Success\t||\tTimer Timer:start starts a repeating timer\t","Success\t||\tTimer Timer:start starts a one-shot timer\t","Success\t||\tTimer Timer:start passes arguments to on_tick function\t","Success\t||\tTimer Timer:start stops timer when on_tick returns false\t","Success\t||\tTimer Timer:start stops timer when on_tick throws an error\t","Success\t||\tTimer Timer:start stops previous timer before starting new one\t","Success\t||\tTimer Timer:start throws error when timer creation fails\t","Success\t||\tTimer Timer:stop stops a running timer\t","Success\t||\tTimer Timer:stop calls on_stop callback when provided\t","Success\t||\tTimer Timer:stop does nothing when timer is not running\t","Success\t||\tTimer Timer:stop handles errors in on_stop callback gracefully\t","Success\t||\tTimer Timer:is_running returns false when timer is not started\t","Success\t||\tTimer Timer:is_running returns true when timer is running\t","Success\t||\tTimer Timer:is_running returns false after timer is stopped\t","Success\t||\tTimer Timer:is_running returns false after one-shot timer completes\t","Success\t||\tTimer Integration tests can restart a stopped timer\t","Success\t||\tTimer Integration tests handles rapid start/stop cycles\t","\t","Success: \t20\t","Failed : \t0\t","========================================\t","Two pending permissions? existing: per_9efb5b2f3001aqJAFBMiGjFjVZ new: per_9efb5bc2a001j9Bd6bFjLB7hrc","Two pending permissions? existing: per_9efb5bc2a001j9Bd6bFjLB7hrc new: per_9efb5d6d1001uwVXQ9dhlBlgfO","Two pending permissions? existing: per_9efb5b2f3001aqJAFBMiGjFjVZ new: per_9efb5bc2a001j9Bd6bFjLB7hrc","Two pending permissions? existing: per_9efb5bc2a001j9Bd6bFjLB7hrc new: per_9efb5d6d1001uwVXQ9dhlBlgfO","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/renderer_spec.lua\t","Success\t||\trenderer replays ansi-codes correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays ansi-codes correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays ansi-codes correctly (session)\t","Success\t||\trenderer replays api-abort correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays api-abort correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays api-abort correctly (session)\t","Success\t||\trenderer replays api-error correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays api-error correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays api-error correctly (session)\t","Success\t||\trenderer replays cursor_data correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays cursor_data correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays cursor_data correctly (session)\t","Success\t||\trenderer replays diff correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays diff correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays diff correctly (session)\t","Success\t||\trenderer replays markdown-codefence correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays markdown-codefence correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays markdown-codefence correctly (session)\t","Success\t||\trenderer replays mentions-with-ranges correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays mentions-with-ranges correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays mentions-with-ranges correctly (session)\t","Success\t||\trenderer replays message-removal correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays message-removal correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays perf correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays perf correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays perf correctly (session)\t","Success\t||\trenderer replays permission-denied correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays permission-denied correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays permission-denied correctly (session)\t","Success\t||\trenderer replays permission-prompt correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays permission-prompt correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays permission correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays permission correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays permission correctly (session)\t","Success\t||\trenderer replays planning correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays planning correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays planning correctly (session)\t","Success\t||\trenderer replays redo-all correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays redo-all correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays redo-all correctly (session)\t","Success\t||\trenderer replays redo-once correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays redo-once correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays redo-once correctly (session)\t","Success\t||\trenderer replays revert correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays revert correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays revert correctly (session)\t","Success\t||\trenderer replays selection correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays selection correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays selection correctly (session)\t","Success\t||\trenderer replays shifting-and-multiple-perms correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays shifting-and-multiple-perms correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays simple-session correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays simple-session correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays simple-session correctly (session)\t","Success\t||\trenderer replays tool-invalid correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays tool-invalid correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays tool-invalid correctly (session)\t","Success\t||\trenderer replays updating-text correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays updating-text correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays updating-text correctly (session)\t","\t","Success: \t60\t","Failed : \t0\t","========================================\t","✓ Unit tests passed","------------------------------------------------","All tests passed successfully!","","`````","","----","","","All steps are complete and all tests pass! Here’s a summary of what was fixed:","","- ✅ Added a nil check for `state.active_session` before accessing `.id` in `M.send_message`.","- ✅ Ensured the `model` field in `params` matches the expected type `{ modelID = ..., providerID = ... }`.","- ✅ Verified the fixes by running the full test suite—no errors or failures.","","Your file is now robust and EmmyLua diagnostics at line 130 are resolved. If you need further tweaks or want to address other diagnostics, let me know!","",""],"timestamp":1766431562,"actions":[{"key":"R","range":{"to":94,"from":94},"type":"diff_revert_selected_file","args":["f33f38a70b284207e092c2c578a24e96fdd1bd4d"],"text":"[R]evert file","display_line":94},{"key":"A","range":{"to":94,"from":94},"type":"diff_revert_all","args":["f33f38a70b284207e092c2c578a24e96fdd1bd4d"],"text":"Revert [A]ll","display_line":94},{"key":"D","range":{"to":94,"from":94},"type":"diff_open","args":["f33f38a70b284207e092c2c578a24e96fdd1bd4d"],"text":"[D]iff","display_line":94},{"key":"R","range":{"to":57,"from":57},"type":"diff_revert_selected_file","args":["8e7903714919009004aad8754db0035fb47ecb24"],"text":"[R]evert file","display_line":57},{"key":"A","range":{"to":57,"from":57},"type":"diff_revert_all","args":["8e7903714919009004aad8754db0035fb47ecb24"],"text":"Revert [A]ll","display_line":57},{"key":"D","range":{"to":57,"from":57},"type":"diff_open","args":["8e7903714919009004aad8754db0035fb47ecb24"],"text":"[D]iff","display_line":57}],"extmarks":[[1,1,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-11-03 13:34:57)","OpencodeHint"],[" [msg_a49ed91d6001coTsjFq9x6FF5W]","OpencodeHint"]],"virt_text_win_col":-3,"virt_text_pos":"win_col","priority":10}],[2,2,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_win_col":-3,"virt_text_pos":"win_col","priority":4096}],[3,3,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_win_col":-3,"virt_text_pos":"win_col","priority":4096}],[4,4,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_win_col":-3,"virt_text_pos":"win_col","priority":4096}],[5,5,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_win_col":-3,"virt_text_pos":"win_col","priority":4096}],[6,6,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_win_col":-3,"virt_text_pos":"win_col","priority":4096}],[7,7,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_win_col":-3,"virt_text_pos":"win_col","priority":4096}],[8,8,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_win_col":-3,"virt_text_pos":"win_col","priority":4096}],[9,10,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-4.1","OpencodeHint"],[" (2025-11-03 13:34:59)","OpencodeHint"],[" [msg_a49ed9828001mN6CDcWPnGnpHS]","OpencodeHint"]],"virt_text_win_col":-3,"virt_text_pos":"win_col","priority":10}],[10,39,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[11,40,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[12,41,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[13,42,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[14,43,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[15,44,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[16,45,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[17,46,0,{"end_right_gravity":false,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"hl_group":"OpencodeDiffAdd","right_gravity":true,"virt_text_pos":"overlay","priority":5000,"virt_text":[["+","OpencodeDiffAdd"]],"end_col":0,"end_row":47,"hl_eol":true}],[18,46,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[19,47,0,{"end_right_gravity":false,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"hl_group":"OpencodeDiffAdd","right_gravity":true,"virt_text_pos":"overlay","priority":5000,"virt_text":[["+","OpencodeDiffAdd"]],"end_col":0,"end_row":48,"hl_eol":true}],[20,47,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[21,48,0,{"end_right_gravity":false,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"hl_group":"OpencodeDiffAdd","right_gravity":true,"virt_text_pos":"overlay","priority":5000,"virt_text":[["+","OpencodeDiffAdd"]],"end_col":0,"end_row":49,"hl_eol":true}],[22,48,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[23,49,0,{"end_right_gravity":false,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"hl_group":"OpencodeDiffAdd","right_gravity":true,"virt_text_pos":"overlay","priority":5000,"virt_text":[["+","OpencodeDiffAdd"]],"end_col":0,"end_row":50,"hl_eol":true}],[24,49,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[25,50,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[26,51,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[27,52,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[28,53,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[29,54,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[30,55,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[31,60,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-4.1","OpencodeHint"],[" (2025-11-03 13:35:06)","OpencodeHint"],[" [msg_a49edb694001syExFxMUW1ik3n]","OpencodeHint"]],"virt_text_win_col":-3,"virt_text_pos":"win_col","priority":10}],[32,78,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[33,79,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[34,80,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[35,81,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[36,82,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[37,83,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[38,84,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[39,85,0,{"end_right_gravity":false,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"hl_group":"OpencodeDiffDelete","right_gravity":true,"virt_text_pos":"overlay","priority":5000,"virt_text":[["-","OpencodeDiffDelete"]],"end_col":0,"end_row":86,"hl_eol":true}],[40,85,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[41,86,0,{"end_right_gravity":false,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"hl_group":"OpencodeDiffAdd","right_gravity":true,"virt_text_pos":"overlay","priority":5000,"virt_text":[["+","OpencodeDiffAdd"]],"end_col":0,"end_row":87,"hl_eol":true}],[42,86,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[43,87,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[44,88,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[45,89,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[46,90,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[47,91,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[48,92,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[49,97,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-4.1","OpencodeHint"],[" (2025-11-03 13:35:10)","OpencodeHint"],[" [msg_a49edc4640017DZPFVUPHCm7Ji]","OpencodeHint"]],"virt_text_win_col":-3,"virt_text_pos":"win_col","priority":10}],[50,105,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[51,106,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[52,107,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[53,108,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[54,109,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[55,110,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[56,111,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[57,112,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[58,113,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[59,114,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[60,115,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[61,116,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[62,117,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[63,118,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[64,119,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[65,120,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[66,121,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[67,122,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[68,123,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[69,124,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[70,125,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[71,126,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[72,127,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[73,128,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[74,129,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[75,130,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[76,131,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[77,132,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[78,133,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[79,134,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[80,135,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[81,136,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[82,137,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[83,138,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[84,139,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[85,140,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[86,141,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[87,142,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[88,143,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[89,144,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[90,145,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[91,146,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[92,147,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[93,148,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[94,149,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[95,150,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[96,151,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[97,152,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[98,153,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[99,154,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[100,155,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[101,156,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[102,157,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[103,158,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[104,159,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[105,160,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[106,161,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[107,162,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[108,163,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[109,164,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[110,165,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[111,166,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[112,167,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[113,168,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[114,169,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[115,170,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[116,171,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[117,172,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[118,173,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[119,174,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[120,175,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[121,176,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[122,177,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[123,178,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[124,179,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[125,180,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[126,181,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[127,182,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[128,183,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[129,184,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[130,185,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[131,186,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[132,187,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[133,188,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[134,189,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[135,190,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[136,191,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[137,192,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[138,193,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[139,194,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[140,195,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[141,196,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[142,197,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[143,198,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[144,199,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[145,200,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[146,201,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[147,202,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[148,203,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[149,204,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[150,205,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[151,206,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[152,207,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[153,208,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[154,209,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[155,210,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[156,211,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[157,212,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[158,213,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[159,214,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[160,215,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[161,216,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[162,217,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[163,218,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[164,219,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[165,220,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[166,221,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[167,222,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[168,223,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[169,224,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[170,225,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[171,226,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[172,227,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[173,228,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[174,229,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[175,230,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[176,231,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[177,232,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[178,233,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[179,234,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[180,235,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[181,236,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[182,237,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[183,238,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[184,239,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[185,240,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[186,241,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[187,242,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[188,243,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[189,244,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[190,245,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[191,246,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[192,247,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[193,248,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[194,249,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[195,250,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[196,251,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[197,252,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[198,253,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[199,254,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[200,255,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[201,256,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[202,257,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[203,258,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[204,259,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[205,260,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[206,261,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[207,262,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[208,263,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[209,264,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[210,265,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[211,266,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[212,267,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[213,268,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[214,269,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[215,270,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[216,271,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[217,272,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[218,273,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[219,274,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[220,275,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[221,276,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[222,277,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[223,278,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[224,279,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[225,280,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[226,281,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[227,282,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[228,283,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[229,284,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[230,285,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[231,286,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[232,287,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[233,288,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[234,289,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[235,290,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[236,291,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[237,292,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[238,293,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[239,294,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[240,295,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[241,296,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[242,297,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[243,298,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[244,299,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[245,300,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[246,301,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[247,302,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[248,303,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[249,304,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[250,305,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[251,306,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[252,307,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[253,308,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[254,309,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[255,310,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[256,311,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[257,312,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[258,313,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[259,314,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[260,315,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[261,316,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[262,317,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[263,318,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[264,319,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[265,320,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[266,321,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[267,322,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[268,323,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[269,324,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[270,325,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[271,326,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[272,327,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[273,328,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[274,329,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[275,330,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[276,331,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[277,332,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[278,333,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[279,334,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[280,335,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[281,336,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[282,337,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[283,338,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[284,339,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[285,340,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[286,341,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[287,342,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[288,343,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[289,344,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[290,345,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[291,346,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[292,347,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[293,348,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[294,349,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[295,350,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[296,351,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[297,352,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[298,353,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[299,354,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[300,355,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[301,356,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[302,357,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[303,358,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[304,359,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[305,360,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[306,361,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[307,362,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[308,363,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[309,364,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[310,365,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[311,366,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[312,367,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[313,368,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[314,369,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[315,370,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[316,371,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[317,372,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[318,373,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[319,374,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[320,375,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[321,376,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[322,377,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[323,378,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[324,379,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[325,380,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[326,381,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[327,382,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[328,383,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[329,384,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[330,385,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[331,386,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[332,387,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[333,388,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[334,389,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[335,390,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[336,391,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[337,392,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[338,393,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[339,394,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[340,395,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[341,396,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[342,397,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[343,398,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[344,399,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[345,400,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[346,401,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[347,402,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[348,403,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[349,404,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[350,405,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[351,406,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[352,407,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[353,408,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[354,409,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[355,410,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[356,411,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[357,412,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[358,413,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[359,414,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[360,415,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[361,416,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[362,417,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[363,418,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[364,419,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[365,420,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[366,421,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[367,422,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[368,423,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[369,424,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[370,425,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[371,426,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[372,427,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[373,428,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[374,429,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[375,430,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[376,431,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[377,432,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[378,433,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[379,434,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[380,435,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[381,436,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[382,437,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[383,438,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[384,439,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[385,440,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[386,441,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[387,442,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[388,443,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[389,444,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[390,445,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[391,446,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[392,447,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[393,448,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[394,449,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[395,450,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[396,451,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[397,452,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[398,453,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[399,454,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[400,455,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[401,456,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[402,457,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[403,458,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[404,459,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[405,460,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[406,461,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[407,462,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[408,463,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[409,464,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[410,465,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[411,466,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[412,467,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[413,468,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[414,469,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[415,470,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[416,471,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[417,472,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[418,473,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[419,474,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[420,475,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[421,476,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[422,477,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[423,478,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[424,479,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[425,480,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[426,481,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[427,482,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[428,483,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[429,484,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[430,485,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[431,486,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[432,487,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[433,488,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[434,489,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[435,490,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[436,491,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[437,492,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[438,493,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[439,494,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[440,495,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[441,496,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[442,497,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[443,498,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[444,499,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[445,500,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[446,501,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[447,502,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[448,503,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[449,504,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[450,505,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[451,506,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[452,507,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[453,508,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[454,509,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[455,510,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[456,511,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[457,512,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[458,513,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[459,514,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[460,515,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[461,516,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[462,517,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[463,518,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[464,519,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[465,520,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[466,521,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[467,522,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[468,523,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[469,524,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[470,525,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[471,526,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[472,527,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[473,528,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[474,529,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[475,530,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[476,531,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[477,532,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[478,533,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[479,534,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[480,535,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[481,536,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[482,537,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[483,538,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[484,539,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[485,540,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[486,541,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[487,542,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[488,543,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[489,544,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[490,545,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[491,546,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[492,547,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[493,548,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[494,549,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[495,550,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[496,551,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[497,552,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[498,553,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[499,554,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[500,555,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[501,556,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[502,557,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[503,558,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[504,559,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[505,560,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[506,561,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[507,562,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[508,563,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[509,564,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[510,565,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[511,566,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[512,567,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[513,568,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[514,569,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[515,570,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[516,571,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[517,572,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[518,573,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[519,574,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[520,577,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-4.1","OpencodeHint"],[" (2025-11-03 13:35:15)","OpencodeHint"],[" [msg_a49edd87f001eOJDDoq5Vb5hra]","OpencodeHint"]],"virt_text_win_col":-3,"virt_text_pos":"win_col","priority":10}]]} \ No newline at end of file diff --git a/tests/data/diff.expected.json b/tests/data/diff.expected.json index d297d2fa..0505e8c0 100644 --- a/tests/data/diff.expected.json +++ b/tests/data/diff.expected.json @@ -1 +1 @@ -{"timestamp":1763498558,"actions":[{"text":"[R]evert file","display_line":18,"type":"diff_revert_selected_file","args":["1f593f7ed419c95d3995f8ef4b98d4e571c3a492"],"key":"R","range":{"to":18,"from":18}},{"text":"Revert [A]ll","display_line":18,"type":"diff_revert_all","args":["1f593f7ed419c95d3995f8ef4b98d4e571c3a492"],"key":"A","range":{"to":18,"from":18}},{"text":"[D]iff","display_line":18,"type":"diff_open","args":["1f593f7ed419c95d3995f8ef4b98d4e571c3a492"],"key":"D","range":{"to":18,"from":18}}],"lines":["----","","","can you add \"great\" before \"string\" in @diff-test.txt?","","[diff-test.txt](diff-test.txt)","","----","","","** edit** `diff-test.txt`","","`````txt"," this is a string"," this is a great string","","`````","","**󰻛 Created Snapshot** `1f593f7e`","","----","","",""],"extmarks":[[1,1,0,{"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-12 06:42:56)","OpencodeHint"],[" [msg_9d7287269001C5gRusYfX7A1w1]","OpencodeHint"]],"right_gravity":true,"virt_text_win_col":-3,"priority":10,"ns_id":3,"virt_text_pos":"win_col","virt_text_repeat_linebreak":false,"virt_text_hide":false}],[2,2,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_win_col":-3,"priority":4096,"ns_id":3,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text_hide":false}],[3,3,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_win_col":-3,"priority":4096,"ns_id":3,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text_hide":false}],[4,3,39,{"priority":1000,"right_gravity":true,"end_right_gravity":false,"end_col":53,"end_row":3,"hl_eol":false,"hl_group":"OpencodeMention","ns_id":3}],[5,4,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_win_col":-3,"priority":4096,"ns_id":3,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text_hide":false}],[6,5,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_win_col":-3,"priority":4096,"ns_id":3,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text_hide":false}],[7,8,0,{"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 06:42:56)","OpencodeHint"],[" [msg_9d7287287001HVwpPaH7WkRVdN]","OpencodeHint"]],"right_gravity":true,"virt_text_win_col":-3,"priority":10,"ns_id":3,"virt_text_pos":"win_col","virt_text_repeat_linebreak":false,"virt_text_hide":false}],[8,10,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"ns_id":3,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text_hide":false}],[9,11,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"ns_id":3,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text_hide":false}],[10,12,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"ns_id":3,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text_hide":false}],[11,13,0,{"virt_text":[["-","OpencodeDiffDelete"]],"virt_text_repeat_linebreak":false,"priority":5000,"ns_id":3,"end_right_gravity":false,"right_gravity":true,"virt_text_pos":"overlay","end_col":0,"end_row":14,"hl_eol":true,"hl_group":"OpencodeDiffDelete","virt_text_hide":false}],[12,13,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"ns_id":3,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text_hide":false}],[13,14,0,{"virt_text":[["+","OpencodeDiffAdd"]],"virt_text_repeat_linebreak":false,"priority":5000,"ns_id":3,"end_right_gravity":false,"right_gravity":true,"virt_text_pos":"overlay","end_col":0,"end_row":15,"hl_eol":true,"hl_group":"OpencodeDiffAdd","virt_text_hide":false}],[14,14,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"ns_id":3,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text_hide":false}],[15,15,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"ns_id":3,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text_hide":false}],[16,16,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_win_col":-1,"priority":4096,"ns_id":3,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text_hide":false}],[17,21,0,{"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 06:43:03)","OpencodeHint"],[" [msg_9d7288f2f001hW6NqqhtBc72UU]","OpencodeHint"]],"right_gravity":true,"virt_text_win_col":-3,"priority":10,"ns_id":3,"virt_text_pos":"win_col","virt_text_repeat_linebreak":false,"virt_text_hide":false}]]} \ No newline at end of file +{"actions":[{"key":"R","args":["1f593f7ed419c95d3995f8ef4b98d4e571c3a492"],"type":"diff_revert_selected_file","range":{"from":18,"to":18},"text":"[R]evert file","display_line":18},{"key":"A","args":["1f593f7ed419c95d3995f8ef4b98d4e571c3a492"],"type":"diff_revert_all","range":{"from":18,"to":18},"text":"Revert [A]ll","display_line":18},{"key":"D","args":["1f593f7ed419c95d3995f8ef4b98d4e571c3a492"],"type":"diff_open","range":{"from":18,"to":18},"text":"[D]iff","display_line":18}],"extmarks":[[1,1,0,{"ns_id":3,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-12 06:42:56)","OpencodeHint"],[" [msg_9d7287269001C5gRusYfX7A1w1]","OpencodeHint"]],"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"virt_text_pos":"win_col","priority":10}],[2,2,0,{"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"virt_text_pos":"win_col","priority":4096}],[3,3,0,{"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"virt_text_pos":"win_col","priority":4096}],[4,3,39,{"ns_id":3,"end_right_gravity":false,"hl_eol":false,"right_gravity":true,"priority":1000,"hl_group":"OpencodeMention","end_col":53,"end_row":3}],[5,4,0,{"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"virt_text_pos":"win_col","priority":4096}],[6,5,0,{"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"virt_text_pos":"win_col","priority":4096}],[7,8,0,{"ns_id":3,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 06:42:56)","OpencodeHint"],[" [msg_9d7287287001HVwpPaH7WkRVdN]","OpencodeHint"]],"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"virt_text_pos":"win_col","priority":10}],[8,10,0,{"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[9,11,0,{"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[10,12,0,{"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[11,13,0,{"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text":[["-","OpencodeDiffDelete"]],"virt_text_pos":"overlay","right_gravity":true,"priority":5000,"hl_group":"OpencodeDiffDelete","end_col":0,"end_row":14}],[12,13,0,{"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[13,14,0,{"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text":[["+","OpencodeDiffAdd"]],"virt_text_pos":"overlay","right_gravity":true,"priority":5000,"hl_group":"OpencodeDiffAdd","end_col":0,"end_row":15}],[14,14,0,{"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[15,15,0,{"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[16,16,0,{"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[17,21,0,{"ns_id":3,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 06:43:03)","OpencodeHint"],[" [msg_9d7288f2f001hW6NqqhtBc72UU]","OpencodeHint"]],"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"virt_text_pos":"win_col","priority":10}]],"timestamp":1766431562,"lines":["----","","","can you add \"great\" before \"string\" in @diff-test.txt?","","[diff-test.txt](diff-test.txt)","","----","","","** edit** `diff-test.txt`","","`````txt"," this is a string"," this is a great string","","`````","","**󰻛 Created Snapshot** `1f593f7e`","","----","","",""]} \ No newline at end of file diff --git a/tests/data/markdown-codefence.expected.json b/tests/data/markdown-codefence.expected.json index 33f50974..7bf72cb1 100644 --- a/tests/data/markdown-codefence.expected.json +++ b/tests/data/markdown-codefence.expected.json @@ -1 +1 @@ -{"timestamp":1766370766,"lines":["----","","","Now let me also update the Run opts examples to use the new command syntax:","","** edit** `README.md`","","`````markdown"," "," Run a prompt in a new session using the Plan agent and disabling current file context:"," "," ```vim"," :OpencodeRunNewSession \"Please help me plan a new feature\" agent=plan context.current_file.enabled=false"," :OpencodeRun \"Fix the bug in the current file\" model=github-copilot/claude-sonned-4"," :Opencode run new_session \"Please help me plan a new feature\" agent=plan context.current_file.enabled=false"," :Opencode run \"Fix the bug in the current file\" model=github-copilot/claude-sonned-4"," ```"," "," ##👮 Permissions"," ","","`````","","**󰻛 Created Snapshot** `c64ddee8`","","----","","","README updated with the new nested command structure. The documentation now shows the new `:Opencode` subcommand syntax and includes a note that legacy `Opencode*` commands are still available by default but will be removed in the future.","","----","","","can you rename Opencode stop to Opencode cancel (and rename the api call)","","[README.md](README.md)","","----","","","Here's the plan to rename `Opencode stop` to `Opencode cancel` and update the API call accordingly:","","---","","## 📝 Plan: Rename Opencode Stop to Cancel","","### 1. Update Command Table and Documentation","- In README.md, change:"," - Command: `:Opencode stop` → `:Opencode cancel`"," - API: `require('opencode.api').stop()` → `require('opencode.api').cancel()`"," - Keymap: `` remains the same (unless you want to change it)","","### 2. Update Codebase","- In `lua/opencode/api.lua`:"," - Rename the function `M.stop()` to `M.cancel()`"," - Update all references to `stop` (command registration, legacy command map, subcommand routing, etc.) to use `cancel`"," - Ensure legacy command `OpencodeStop` still works (with deprecation warning), but routes to `cancel`","- In any other files (keymap config, tests, etc.) update references to `stop` to `cancel` as needed","","### 3. Update Tests","- In `tests/unit/api_spec.lua`:"," - Update any tests that check for `stop` to check for `cancel`","","### 4. Update Slash Commands (if applicable)","- If there is a `/stop` slash command, rename it to `/cancel`","","### 5. Verify","- Run all tests to ensure everything works","- Check that both `:Opencode cancel` and legacy `:OpencodeStop` work (with warning)","","---","","**Note:** You are currently in \"Plan mode\" (read-only phase), so I cannot make edits right now. ","When you switch to edit mode, I will execute this plan step by step and verify all changes.","","Would you like to proceed with this plan when edits are allowed?","",""],"actions":[{"args":["c64ddee834f1b802020a8f880eafa689f0b99406"],"key":"R","type":"diff_revert_selected_file","text":"[R]evert file","display_line":23,"range":{"to":23,"from":23}},{"args":["c64ddee834f1b802020a8f880eafa689f0b99406"],"key":"A","type":"diff_revert_all","text":"Revert [A]ll","display_line":23,"range":{"to":23,"from":23}},{"args":["c64ddee834f1b802020a8f880eafa689f0b99406"],"key":"D","type":"diff_open","text":"[D]iff","display_line":23,"range":{"to":23,"from":23}}],"extmarks":[[1,1,0,{"right_gravity":true,"virt_text_pos":"win_col","virt_text_hide":false,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-28 21:53:58)","OpencodeHint"],[" [msg_a2cd04588001P9plKmrFnsNH3M]","OpencodeHint"]],"ns_id":3}],[2,5,0,{"right_gravity":true,"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3}],[3,6,0,{"right_gravity":true,"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3}],[4,7,0,{"right_gravity":true,"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3}],[5,8,0,{"right_gravity":true,"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3}],[6,9,0,{"right_gravity":true,"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3}],[7,10,0,{"right_gravity":true,"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3}],[8,11,0,{"right_gravity":true,"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3}],[9,12,0,{"right_gravity":true,"end_row":13,"end_col":0,"ns_id":3,"hl_eol":true,"virt_text_pos":"overlay","virt_text_hide":false,"priority":5000,"virt_text_repeat_linebreak":false,"hl_group":"OpencodeDiffDelete","virt_text":[["-","OpencodeDiffDelete"]],"end_right_gravity":false}],[10,12,0,{"right_gravity":true,"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3}],[11,13,0,{"right_gravity":true,"end_row":14,"end_col":0,"ns_id":3,"hl_eol":true,"virt_text_pos":"overlay","virt_text_hide":false,"priority":5000,"virt_text_repeat_linebreak":false,"hl_group":"OpencodeDiffDelete","virt_text":[["-","OpencodeDiffDelete"]],"end_right_gravity":false}],[12,13,0,{"right_gravity":true,"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3}],[13,14,0,{"right_gravity":true,"end_row":15,"end_col":0,"ns_id":3,"hl_eol":true,"virt_text_pos":"overlay","virt_text_hide":false,"priority":5000,"virt_text_repeat_linebreak":false,"hl_group":"OpencodeDiffAdd","virt_text":[["+","OpencodeDiffAdd"]],"end_right_gravity":false}],[14,14,0,{"right_gravity":true,"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3}],[15,15,0,{"right_gravity":true,"end_row":16,"end_col":0,"ns_id":3,"hl_eol":true,"virt_text_pos":"overlay","virt_text_hide":false,"priority":5000,"virt_text_repeat_linebreak":false,"hl_group":"OpencodeDiffAdd","virt_text":[["+","OpencodeDiffAdd"]],"end_right_gravity":false}],[16,15,0,{"right_gravity":true,"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3}],[17,16,0,{"right_gravity":true,"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3}],[18,17,0,{"right_gravity":true,"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3}],[19,18,0,{"right_gravity":true,"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3}],[20,19,0,{"right_gravity":true,"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3}],[21,20,0,{"right_gravity":true,"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3}],[22,21,0,{"right_gravity":true,"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3}],[23,26,0,{"right_gravity":true,"virt_text_pos":"win_col","virt_text_hide":false,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-28 21:54:05)","OpencodeHint"],[" [msg_a2cd062fb001UA0ZzR6JxgLxDQ]","OpencodeHint"]],"ns_id":3}],[24,31,0,{"right_gravity":true,"virt_text_pos":"win_col","virt_text_hide":false,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-28 22:34:58)","OpencodeHint"],[" [msg_a2cf5ce65001YLvVsYxIboFcP4]","OpencodeHint"]],"ns_id":3}],[25,32,0,{"right_gravity":true,"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3}],[26,33,0,{"right_gravity":true,"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3}],[27,34,0,{"right_gravity":true,"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3}],[28,35,0,{"right_gravity":true,"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3}],[29,38,0,{"right_gravity":true,"virt_text_pos":"win_col","virt_text_hide":false,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" gpt-4.1","OpencodeHint"],[" (2025-10-28 22:34:58)","OpencodeHint"],[" [msg_a2cf5cf0f002oBAjmnGIMGXjez]","OpencodeHint"]],"ns_id":3}]]} \ No newline at end of file +{"lines":["----","","","Now let me also update the Run opts examples to use the new command syntax:","","** edit** `README.md`","","`````markdown"," "," Run a prompt in a new session using the Plan agent and disabling current file context:"," "," ```vim"," :OpencodeRunNewSession \"Please help me plan a new feature\" agent=plan context.current_file.enabled=false"," :OpencodeRun \"Fix the bug in the current file\" model=github-copilot/claude-sonned-4"," :Opencode run new_session \"Please help me plan a new feature\" agent=plan context.current_file.enabled=false"," :Opencode run \"Fix the bug in the current file\" model=github-copilot/claude-sonned-4"," ```"," "," ##👮 Permissions"," ","","`````","","**󰻛 Created Snapshot** `c64ddee8`","","----","","","README updated with the new nested command structure. The documentation now shows the new `:Opencode` subcommand syntax and includes a note that legacy `Opencode*` commands are still available by default but will be removed in the future.","","----","","","can you rename Opencode stop to Opencode cancel (and rename the api call)","","[README.md](README.md)","","----","","","Here's the plan to rename `Opencode stop` to `Opencode cancel` and update the API call accordingly:","","---","","## 📝 Plan: Rename Opencode Stop to Cancel","","### 1. Update Command Table and Documentation","- In README.md, change:"," - Command: `:Opencode stop` → `:Opencode cancel`"," - API: `require('opencode.api').stop()` → `require('opencode.api').cancel()`"," - Keymap: `` remains the same (unless you want to change it)","","### 2. Update Codebase","- In `lua/opencode/api.lua`:"," - Rename the function `M.stop()` to `M.cancel()`"," - Update all references to `stop` (command registration, legacy command map, subcommand routing, etc.) to use `cancel`"," - Ensure legacy command `OpencodeStop` still works (with deprecation warning), but routes to `cancel`","- In any other files (keymap config, tests, etc.) update references to `stop` to `cancel` as needed","","### 3. Update Tests","- In `tests/unit/api_spec.lua`:"," - Update any tests that check for `stop` to check for `cancel`","","### 4. Update Slash Commands (if applicable)","- If there is a `/stop` slash command, rename it to `/cancel`","","### 5. Verify","- Run all tests to ensure everything works","- Check that both `:Opencode cancel` and legacy `:OpencodeStop` work (with warning)","","---","","**Note:** You are currently in \"Plan mode\" (read-only phase), so I cannot make edits right now. ","When you switch to edit mode, I will execute this plan step by step and verify all changes.","","Would you like to proceed with this plan when edits are allowed?","",""],"timestamp":1766431563,"actions":[{"text":"[R]evert file","key":"R","display_line":23,"type":"diff_revert_selected_file","range":{"from":23,"to":23},"args":["c64ddee834f1b802020a8f880eafa689f0b99406"]},{"text":"Revert [A]ll","key":"A","display_line":23,"type":"diff_revert_all","range":{"from":23,"to":23},"args":["c64ddee834f1b802020a8f880eafa689f0b99406"]},{"text":"[D]iff","key":"D","display_line":23,"type":"diff_open","range":{"from":23,"to":23},"args":["c64ddee834f1b802020a8f880eafa689f0b99406"]}],"extmarks":[[1,1,0,{"priority":10,"ns_id":3,"right_gravity":true,"virt_text_repeat_linebreak":false,"virt_text_hide":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-28 21:53:58)","OpencodeHint"],[" [msg_a2cd04588001P9plKmrFnsNH3M]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[2,5,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[3,6,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[4,7,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[5,8,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[6,9,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[7,10,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[8,11,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[9,12,0,{"end_col":0,"ns_id":3,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"end_row":13,"priority":5000,"hl_group":"OpencodeDiffDelete","virt_text":[["-","OpencodeDiffDelete"]],"virt_text_pos":"overlay","right_gravity":true}],[10,12,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[11,13,0,{"end_col":0,"ns_id":3,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"end_row":14,"priority":5000,"hl_group":"OpencodeDiffDelete","virt_text":[["-","OpencodeDiffDelete"]],"virt_text_pos":"overlay","right_gravity":true}],[12,13,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[13,14,0,{"end_col":0,"ns_id":3,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"end_row":15,"priority":5000,"hl_group":"OpencodeDiffAdd","virt_text":[["+","OpencodeDiffAdd"]],"virt_text_pos":"overlay","right_gravity":true}],[14,14,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[15,15,0,{"end_col":0,"ns_id":3,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"end_row":16,"priority":5000,"hl_group":"OpencodeDiffAdd","virt_text":[["+","OpencodeDiffAdd"]],"virt_text_pos":"overlay","right_gravity":true}],[16,15,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[17,16,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[18,17,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[19,18,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[20,19,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[21,20,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[22,21,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[23,26,0,{"priority":10,"ns_id":3,"right_gravity":true,"virt_text_repeat_linebreak":false,"virt_text_hide":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-28 21:54:05)","OpencodeHint"],[" [msg_a2cd062fb001UA0ZzR6JxgLxDQ]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[24,31,0,{"priority":10,"ns_id":3,"right_gravity":true,"virt_text_repeat_linebreak":false,"virt_text_hide":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-28 22:34:58)","OpencodeHint"],[" [msg_a2cf5ce65001YLvVsYxIboFcP4]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[25,32,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[26,33,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[27,34,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[28,35,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[29,38,0,{"priority":10,"ns_id":3,"right_gravity":true,"virt_text_repeat_linebreak":false,"virt_text_hide":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" gpt-4.1","OpencodeHint"],[" (2025-10-28 22:34:58)","OpencodeHint"],[" [msg_a2cf5cf0f002oBAjmnGIMGXjez]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3}]]} \ No newline at end of file diff --git a/tests/data/mentions-with-ranges.expected.json b/tests/data/mentions-with-ranges.expected.json index 58949c53..9a9e4d67 100644 --- a/tests/data/mentions-with-ranges.expected.json +++ b/tests/data/mentions-with-ranges.expected.json @@ -1 +1 @@ -{"timestamp":1762903197,"actions":[],"extmarks":[[1,1,0,{"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-12 23:38:21)","OpencodeHint"],[" [msg_9daca16bf0017x95VD45mw3k8Q]","OpencodeHint"]],"right_gravity":true,"virt_text_win_col":-3,"priority":10,"virt_text_pos":"win_col","ns_id":3,"virt_text_hide":false,"virt_text_repeat_linebreak":false}],[2,2,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_win_col":-3,"priority":4096,"virt_text_pos":"win_col","ns_id":3,"virt_text_hide":false,"virt_text_repeat_linebreak":true}],[3,3,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_win_col":-3,"priority":4096,"virt_text_pos":"win_col","ns_id":3,"virt_text_hide":false,"virt_text_repeat_linebreak":true}],[4,3,5,{"end_col":44,"right_gravity":true,"end_row":3,"hl_eol":false,"end_right_gravity":false,"ns_id":3,"hl_group":"OpencodeMention","priority":1000}],[5,4,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_win_col":-3,"priority":4096,"virt_text_pos":"win_col","ns_id":3,"virt_text_hide":false,"virt_text_repeat_linebreak":true}],[6,5,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_win_col":-3,"priority":4096,"virt_text_pos":"win_col","ns_id":3,"virt_text_hide":false,"virt_text_repeat_linebreak":true}],[7,5,23,{"end_col":48,"right_gravity":true,"end_row":5,"hl_eol":false,"end_right_gravity":false,"ns_id":3,"hl_group":"OpencodeMention","priority":1000}],[8,6,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_win_col":-3,"priority":4096,"virt_text_pos":"win_col","ns_id":3,"virt_text_hide":false,"virt_text_repeat_linebreak":true}],[9,7,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_win_col":-3,"priority":4096,"virt_text_pos":"win_col","ns_id":3,"virt_text_hide":false,"virt_text_repeat_linebreak":true}],[10,8,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_win_col":-3,"priority":4096,"virt_text_pos":"win_col","ns_id":3,"virt_text_hide":false,"virt_text_repeat_linebreak":true}],[11,9,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_win_col":-3,"priority":4096,"virt_text_pos":"win_col","ns_id":3,"virt_text_hide":false,"virt_text_repeat_linebreak":true}],[12,10,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_win_col":-3,"priority":4096,"virt_text_pos":"win_col","ns_id":3,"virt_text_hide":false,"virt_text_repeat_linebreak":true}],[13,11,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_win_col":-3,"priority":4096,"virt_text_pos":"win_col","ns_id":3,"virt_text_hide":false,"virt_text_repeat_linebreak":true}],[14,12,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_win_col":-3,"priority":4096,"virt_text_pos":"win_col","ns_id":3,"virt_text_hide":false,"virt_text_repeat_linebreak":true}],[15,13,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_win_col":-3,"priority":4096,"virt_text_pos":"win_col","ns_id":3,"virt_text_hide":false,"virt_text_repeat_linebreak":true}],[16,14,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_win_col":-3,"priority":4096,"virt_text_pos":"win_col","ns_id":3,"virt_text_hide":false,"virt_text_repeat_linebreak":true}],[17,15,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_win_col":-3,"priority":4096,"virt_text_pos":"win_col","ns_id":3,"virt_text_hide":false,"virt_text_repeat_linebreak":true}],[18,16,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_win_col":-3,"priority":4096,"virt_text_pos":"win_col","ns_id":3,"virt_text_hide":false,"virt_text_repeat_linebreak":true}],[19,17,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_win_col":-3,"priority":4096,"virt_text_pos":"win_col","ns_id":3,"virt_text_hide":false,"virt_text_repeat_linebreak":true}],[20,18,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_win_col":-3,"priority":4096,"virt_text_pos":"win_col","ns_id":3,"virt_text_hide":false,"virt_text_repeat_linebreak":true}],[21,19,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_win_col":-3,"priority":4096,"virt_text_pos":"win_col","ns_id":3,"virt_text_hide":false,"virt_text_repeat_linebreak":true}],[22,20,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_win_col":-3,"priority":4096,"virt_text_pos":"win_col","ns_id":3,"virt_text_hide":false,"virt_text_repeat_linebreak":true}],[23,21,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_win_col":-3,"priority":4096,"virt_text_pos":"win_col","ns_id":3,"virt_text_hide":false,"virt_text_repeat_linebreak":true}]],"lines":["----","","","when @lua/opencode/ui/streaming_renderer.lua renders a diff, only the first character, the + has the extmark. the rest of the line doesn't seem to have the highlight?","","here's an example from @tests/data/planning.json","","** edit** `diff-test.txt`","","```txt","-this is a string","+this is a great string","","```","","the - and the + are highlighted in the right color but none of the text is. any ideas?","","[lua/opencode/ui/streaming_renderer.lua](lua/opencode/ui/streaming_renderer.lua)","","[tests/data/planning.json](tests/data/planning.json)","","[lua/opencode/ui/session_formatter.lua](lua/opencode/ui/session_formatter.lua)","",""]} \ No newline at end of file +{"lines":["----","","","when @lua/opencode/ui/streaming_renderer.lua renders a diff, only the first character, the + has the extmark. the rest of the line doesn't seem to have the highlight?","","here's an example from @tests/data/planning.json","","** edit** `diff-test.txt`","","```txt","-this is a string","+this is a great string","","```","","the - and the + are highlighted in the right color but none of the text is. any ideas?","","[lua/opencode/ui/streaming_renderer.lua](lua/opencode/ui/streaming_renderer.lua)","","[tests/data/planning.json](tests/data/planning.json)","","[lua/opencode/ui/session_formatter.lua](lua/opencode/ui/session_formatter.lua)","",""],"extmarks":[[1,1,0,{"virt_text_repeat_linebreak":false,"right_gravity":true,"priority":10,"virt_text_pos":"win_col","ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-12 23:38:21)","OpencodeHint"],[" [msg_9daca16bf0017x95VD45mw3k8Q]","OpencodeHint"]]}],[2,2,0,{"virt_text_repeat_linebreak":true,"right_gravity":true,"priority":4096,"virt_text_pos":"win_col","ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[3,3,0,{"virt_text_repeat_linebreak":true,"right_gravity":true,"priority":4096,"virt_text_pos":"win_col","ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[4,3,5,{"hl_eol":false,"right_gravity":true,"end_col":44,"end_row":3,"ns_id":3,"end_right_gravity":false,"hl_group":"OpencodeMention","priority":1000}],[5,4,0,{"virt_text_repeat_linebreak":true,"right_gravity":true,"priority":4096,"virt_text_pos":"win_col","ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[6,5,0,{"virt_text_repeat_linebreak":true,"right_gravity":true,"priority":4096,"virt_text_pos":"win_col","ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[7,5,23,{"hl_eol":false,"right_gravity":true,"end_col":48,"end_row":5,"ns_id":3,"end_right_gravity":false,"hl_group":"OpencodeMention","priority":1000}],[8,6,0,{"virt_text_repeat_linebreak":true,"right_gravity":true,"priority":4096,"virt_text_pos":"win_col","ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[9,7,0,{"virt_text_repeat_linebreak":true,"right_gravity":true,"priority":4096,"virt_text_pos":"win_col","ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[10,8,0,{"virt_text_repeat_linebreak":true,"right_gravity":true,"priority":4096,"virt_text_pos":"win_col","ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[11,9,0,{"virt_text_repeat_linebreak":true,"right_gravity":true,"priority":4096,"virt_text_pos":"win_col","ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[12,10,0,{"virt_text_repeat_linebreak":true,"right_gravity":true,"priority":4096,"virt_text_pos":"win_col","ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[13,11,0,{"virt_text_repeat_linebreak":true,"right_gravity":true,"priority":4096,"virt_text_pos":"win_col","ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[14,12,0,{"virt_text_repeat_linebreak":true,"right_gravity":true,"priority":4096,"virt_text_pos":"win_col","ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[15,13,0,{"virt_text_repeat_linebreak":true,"right_gravity":true,"priority":4096,"virt_text_pos":"win_col","ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[16,14,0,{"virt_text_repeat_linebreak":true,"right_gravity":true,"priority":4096,"virt_text_pos":"win_col","ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[17,15,0,{"virt_text_repeat_linebreak":true,"right_gravity":true,"priority":4096,"virt_text_pos":"win_col","ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[18,16,0,{"virt_text_repeat_linebreak":true,"right_gravity":true,"priority":4096,"virt_text_pos":"win_col","ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[19,17,0,{"virt_text_repeat_linebreak":true,"right_gravity":true,"priority":4096,"virt_text_pos":"win_col","ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[20,18,0,{"virt_text_repeat_linebreak":true,"right_gravity":true,"priority":4096,"virt_text_pos":"win_col","ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[21,19,0,{"virt_text_repeat_linebreak":true,"right_gravity":true,"priority":4096,"virt_text_pos":"win_col","ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[22,20,0,{"virt_text_repeat_linebreak":true,"right_gravity":true,"priority":4096,"virt_text_pos":"win_col","ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[23,21,0,{"virt_text_repeat_linebreak":true,"right_gravity":true,"priority":4096,"virt_text_pos":"win_col","ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]]}]],"timestamp":1766431563,"actions":[]} \ No newline at end of file diff --git a/tests/data/message-removal.expected.json b/tests/data/message-removal.expected.json index 9fa27893..39d34660 100644 --- a/tests/data/message-removal.expected.json +++ b/tests/data/message-removal.expected.json @@ -1 +1 @@ -{"lines":["----","","","Message 1, Part 1","","Message 1, Part 2","","Message 1, Part 4","","Message 1, Part 5","","----","","","Message 2, Part 2","","Message 2, Part 3","","Message 2, Part 4","","----","","","Message 4, Part 1","","Message 4, Part 5","",""],"timestamp":1762903197,"extmarks":[[1,1,0,{"ns_id":3,"right_gravity":true,"virt_text_hide":false,"priority":10,"virt_text_repeat_linebreak":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-09 08:53:21)","OpencodeHint"],[" [msg_001]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[2,2,0,{"ns_id":3,"right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[3,3,0,{"ns_id":3,"right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[4,4,0,{"ns_id":3,"right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[5,5,0,{"ns_id":3,"right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[6,6,0,{"ns_id":3,"right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[7,7,0,{"ns_id":3,"right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[8,8,0,{"ns_id":3,"right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[9,9,0,{"ns_id":3,"right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[10,12,0,{"ns_id":3,"right_gravity":true,"virt_text_hide":false,"priority":10,"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],["","OpencodeHint"],[" (2025-10-09 08:53:22)","OpencodeHint"],[" [msg_002]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[11,21,0,{"ns_id":3,"right_gravity":true,"virt_text_hide":false,"priority":10,"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],["","OpencodeHint"],[" (2025-10-09 08:53:24)","OpencodeHint"],[" [msg_004]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3}]],"actions":[]} \ No newline at end of file +{"timestamp":1766431563,"extmarks":[[1,1,0,{"right_gravity":true,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-09 08:53:21)","OpencodeHint"],[" [msg_001]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false}],[2,2,0,{"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true}],[3,3,0,{"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true}],[4,4,0,{"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true}],[5,5,0,{"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true}],[6,6,0,{"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true}],[7,7,0,{"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true}],[8,8,0,{"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true}],[9,9,0,{"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true}],[10,12,0,{"right_gravity":true,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],["","OpencodeHint"],[" (2025-10-09 08:53:22)","OpencodeHint"],[" [msg_002]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false}],[11,21,0,{"right_gravity":true,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],["","OpencodeHint"],[" (2025-10-09 08:53:24)","OpencodeHint"],[" [msg_004]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false}]],"actions":[],"lines":["----","","","Message 1, Part 1","","Message 1, Part 2","","Message 1, Part 4","","Message 1, Part 5","","----","","","Message 2, Part 2","","Message 2, Part 3","","Message 2, Part 4","","----","","","Message 4, Part 1","","Message 4, Part 5","",""]} \ No newline at end of file diff --git a/tests/data/multiple-messages-synthetic.expected.json b/tests/data/multiple-messages-synthetic.expected.json index c47b7970..8e6e3e0a 100644 --- a/tests/data/multiple-messages-synthetic.expected.json +++ b/tests/data/multiple-messages-synthetic.expected.json @@ -1 +1 @@ -{"lines":["----","","","Message 1","","----","","","Response 2 - Part 1","","Response 2 - Part 2","","Response 2 - Part 3","","Response 2 - Part 4 (late arrival)","","----","","","Message 3","","----","","","Response 4 - Part 1","","Response 4 - Part 2","","Response 4 - Part 3","","Response 4 - Part 4 (late arrival)","","----","","","Message 5","","----","","","Response 6 - Part 1","","Response 6 - Part 2","","Response 6 - Part 3","",""],"timestamp":1762903198,"actions":[],"extmarks":[[1,1,0,{"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2001-09-09 01:46:41)","OpencodeHint"],[" [msg_001]","OpencodeHint"]],"ns_id":3,"virt_text_repeat_linebreak":false,"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-3,"virt_text_pos":"win_col","priority":10}],[2,2,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3,"virt_text_repeat_linebreak":true,"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-3,"virt_text_pos":"win_col","priority":4096}],[3,3,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3,"virt_text_repeat_linebreak":true,"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-3,"virt_text_pos":"win_col","priority":4096}],[4,6,0,{"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],["","OpencodeHint"],[" (2001-09-09 01:46:42)","OpencodeHint"],[" [msg_002]","OpencodeHint"]],"ns_id":3,"virt_text_repeat_linebreak":false,"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-3,"virt_text_pos":"win_col","priority":10}],[5,17,0,{"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2001-09-09 01:46:43)","OpencodeHint"],[" [msg_003]","OpencodeHint"]],"ns_id":3,"virt_text_repeat_linebreak":false,"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-3,"virt_text_pos":"win_col","priority":10}],[6,18,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3,"virt_text_repeat_linebreak":true,"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-3,"virt_text_pos":"win_col","priority":4096}],[7,19,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3,"virt_text_repeat_linebreak":true,"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-3,"virt_text_pos":"win_col","priority":4096}],[8,22,0,{"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],["","OpencodeHint"],[" (2001-09-09 01:46:44)","OpencodeHint"],[" [msg_004]","OpencodeHint"]],"ns_id":3,"virt_text_repeat_linebreak":false,"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-3,"virt_text_pos":"win_col","priority":10}],[9,33,0,{"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2001-09-09 01:46:45)","OpencodeHint"],[" [msg_005]","OpencodeHint"]],"ns_id":3,"virt_text_repeat_linebreak":false,"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-3,"virt_text_pos":"win_col","priority":10}],[10,34,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3,"virt_text_repeat_linebreak":true,"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-3,"virt_text_pos":"win_col","priority":4096}],[11,35,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3,"virt_text_repeat_linebreak":true,"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-3,"virt_text_pos":"win_col","priority":4096}],[12,38,0,{"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],["","OpencodeHint"],[" (2001-09-09 01:46:46)","OpencodeHint"],[" [msg_006]","OpencodeHint"]],"ns_id":3,"virt_text_repeat_linebreak":false,"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-3,"virt_text_pos":"win_col","priority":10}]]} \ No newline at end of file +{"actions":[],"timestamp":1766431563,"lines":["----","","","Message 1","","----","","","Response 2 - Part 1","","Response 2 - Part 2","","Response 2 - Part 3","","Response 2 - Part 4 (late arrival)","","----","","","Message 3","","----","","","Response 4 - Part 1","","Response 4 - Part 2","","Response 4 - Part 3","","Response 4 - Part 4 (late arrival)","","----","","","Message 5","","----","","","Response 6 - Part 1","","Response 6 - Part 2","","Response 6 - Part 3","",""],"extmarks":[[1,1,0,{"ns_id":3,"virt_text_pos":"win_col","virt_text_hide":false,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2001-09-09 01:46:41)","OpencodeHint"],[" [msg_001]","OpencodeHint"]],"right_gravity":true}],[2,2,0,{"ns_id":3,"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true}],[3,3,0,{"ns_id":3,"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true}],[4,6,0,{"ns_id":3,"virt_text_pos":"win_col","virt_text_hide":false,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],["","OpencodeHint"],[" (2001-09-09 01:46:42)","OpencodeHint"],[" [msg_002]","OpencodeHint"]],"right_gravity":true}],[5,17,0,{"ns_id":3,"virt_text_pos":"win_col","virt_text_hide":false,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2001-09-09 01:46:43)","OpencodeHint"],[" [msg_003]","OpencodeHint"]],"right_gravity":true}],[6,18,0,{"ns_id":3,"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true}],[7,19,0,{"ns_id":3,"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true}],[8,22,0,{"ns_id":3,"virt_text_pos":"win_col","virt_text_hide":false,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],["","OpencodeHint"],[" (2001-09-09 01:46:44)","OpencodeHint"],[" [msg_004]","OpencodeHint"]],"right_gravity":true}],[9,33,0,{"ns_id":3,"virt_text_pos":"win_col","virt_text_hide":false,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2001-09-09 01:46:45)","OpencodeHint"],[" [msg_005]","OpencodeHint"]],"right_gravity":true}],[10,34,0,{"ns_id":3,"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true}],[11,35,0,{"ns_id":3,"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true}],[12,38,0,{"ns_id":3,"virt_text_pos":"win_col","virt_text_hide":false,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],["","OpencodeHint"],[" (2001-09-09 01:46:46)","OpencodeHint"],[" [msg_006]","OpencodeHint"]],"right_gravity":true}]]} \ No newline at end of file diff --git a/tests/data/multiple-messages.expected.json b/tests/data/multiple-messages.expected.json index 6c9be956..7943b83c 100644 --- a/tests/data/multiple-messages.expected.json +++ b/tests/data/multiple-messages.expected.json @@ -1 +1 @@ -{"timestamp":1762903198,"extmarks":[[1,1,0,{"virt_text_repeat_linebreak":false,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-11-01 03:32:54)","OpencodeHint"],[" [msg_a3d79a71f001dkQYw23QnYYElB]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10}],[2,2,0,{"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[3,3,0,{"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[4,4,0,{"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[5,5,0,{"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[6,8,0,{"virt_text_repeat_linebreak":false,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" gpt-4.1","OpencodeHint"],[" (2025-11-01 03:32:54)","OpencodeHint"],[" [msg_a3d79a771002NY7n6a0vJlriLH]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10}],[7,26,0,{"virt_text_repeat_linebreak":false,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-11-01 03:32:55)","OpencodeHint"],[" [msg_a3d79aa5b0014RYY4My2AeTokd]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10}],[8,27,0,{"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[9,28,0,{"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[10,29,0,{"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[11,30,0,{"virt_text_repeat_linebreak":true,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[12,33,0,{"virt_text_repeat_linebreak":false,"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" gpt-4.1","OpencodeHint"],[" (2025-11-01 03:32:56)","OpencodeHint"],[" [msg_a3d79ae610029QFKwb1uvSa4Lf]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10}]],"lines":["----","","","can you count to 10?","","[a-empty.txt](a-empty.txt)","","----","","","Sure! Here is a count from 1 to 10:","","1 ","2 ","3 ","4 ","5 ","6 ","7 ","8 ","9 ","10","","Let me know if you need anything else!","","----","","","can you say all of the letters?","","[a-empty.txt](a-empty.txt)","","----","","","Absolutely! Here are all the letters of the English alphabet:","","A ","B ","C ","D ","E ","F ","G ","H ","I ","J ","K ","L ","M ","N ","O ","P ","Q ","R ","S ","T ","U ","V ","W ","X ","Y ","Z","","If you need lowercase, here they are as well:","","a ","b ","c ","d ","e ","f ","g ","h ","i ","j ","k ","l ","m ","n ","o ","p ","q ","r ","s ","t ","u ","v ","w ","x ","y ","z","","Let me know if you need anything else!","",""],"actions":[]} \ No newline at end of file +{"actions":[],"timestamp":1766431564,"extmarks":[[1,1,0,{"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"right_gravity":true,"priority":10,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-11-01 03:32:54)","OpencodeHint"],[" [msg_a3d79a71f001dkQYw23QnYYElB]","OpencodeHint"]],"virt_text_win_col":-3,"virt_text_pos":"win_col"}],[2,2,0,{"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"right_gravity":true,"priority":4096,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_win_col":-3,"virt_text_pos":"win_col"}],[3,3,0,{"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"right_gravity":true,"priority":4096,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_win_col":-3,"virt_text_pos":"win_col"}],[4,4,0,{"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"right_gravity":true,"priority":4096,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_win_col":-3,"virt_text_pos":"win_col"}],[5,5,0,{"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"right_gravity":true,"priority":4096,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_win_col":-3,"virt_text_pos":"win_col"}],[6,8,0,{"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"right_gravity":true,"priority":10,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" gpt-4.1","OpencodeHint"],[" (2025-11-01 03:32:54)","OpencodeHint"],[" [msg_a3d79a771002NY7n6a0vJlriLH]","OpencodeHint"]],"virt_text_win_col":-3,"virt_text_pos":"win_col"}],[7,26,0,{"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"right_gravity":true,"priority":10,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-11-01 03:32:55)","OpencodeHint"],[" [msg_a3d79aa5b0014RYY4My2AeTokd]","OpencodeHint"]],"virt_text_win_col":-3,"virt_text_pos":"win_col"}],[8,27,0,{"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"right_gravity":true,"priority":4096,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_win_col":-3,"virt_text_pos":"win_col"}],[9,28,0,{"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"right_gravity":true,"priority":4096,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_win_col":-3,"virt_text_pos":"win_col"}],[10,29,0,{"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"right_gravity":true,"priority":4096,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_win_col":-3,"virt_text_pos":"win_col"}],[11,30,0,{"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"right_gravity":true,"priority":4096,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_win_col":-3,"virt_text_pos":"win_col"}],[12,33,0,{"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"right_gravity":true,"priority":10,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" gpt-4.1","OpencodeHint"],[" (2025-11-01 03:32:56)","OpencodeHint"],[" [msg_a3d79ae610029QFKwb1uvSa4Lf]","OpencodeHint"]],"virt_text_win_col":-3,"virt_text_pos":"win_col"}]],"lines":["----","","","can you count to 10?","","[a-empty.txt](a-empty.txt)","","----","","","Sure! Here is a count from 1 to 10:","","1 ","2 ","3 ","4 ","5 ","6 ","7 ","8 ","9 ","10","","Let me know if you need anything else!","","----","","","can you say all of the letters?","","[a-empty.txt](a-empty.txt)","","----","","","Absolutely! Here are all the letters of the English alphabet:","","A ","B ","C ","D ","E ","F ","G ","H ","I ","J ","K ","L ","M ","N ","O ","P ","Q ","R ","S ","T ","U ","V ","W ","X ","Y ","Z","","If you need lowercase, here they are as well:","","a ","b ","c ","d ","e ","f ","g ","h ","i ","j ","k ","l ","m ","n ","o ","p ","q ","r ","s ","t ","u ","v ","w ","x ","y ","z","","Let me know if you need anything else!","",""]} \ No newline at end of file diff --git a/tests/data/perf.expected.json b/tests/data/perf.expected.json index c14d1cee..0d0281ef 100644 --- a/tests/data/perf.expected.json +++ b/tests/data/perf.expected.json @@ -1 +1 @@ -{"lines":["----","","","I just want to test the markdown rendering, please write as long session with codeblocksto","","[lua/opencode/ui/output_window.lua](lua/opencode/ui/output_window.lua)","","----","","","Here's a long markdown-rich session with many fenced code blocks to help test rendering. I include the file you provided plus a variety of smaller snippets in different languages and formats.","","**File Contents**","- `lua/opencode/ui/output_window.lua:1`","","```lua","-- lua/opencode/ui/output_window.lua","local state = require('opencode.state')","local config = require('opencode.config')","","local M = {}","M.namespace = vim.api.nvim_create_namespace('opencode_output')","","function M.create_buf()"," local output_buf = vim.api.nvim_create_buf(false, true)"," vim.api.nvim_set_option_value('filetype', 'opencode_output', { buf = output_buf })"," return output_buf","end","","function M._build_output_win_config()"," return {"," relative = 'editor',"," width = config.ui.window_width or 80,"," row = 2,"," col = 2,"," style = 'minimal',"," border = 'rounded',"," zindex = 40,"," }","end","","function M.mounted(windows)"," windows = windows or state.windows"," if"," not state.windows"," or not state.windows.output_buf"," or not state.windows.output_win"," or not vim.api.nvim_win_is_valid(windows.output_win)"," then"," return false"," end",""," return true","end","","function M.setup(windows)"," vim.api.nvim_set_option_value('winhighlight', config.ui.window_highlight, { win = windows.output_win })"," vim.api.nvim_set_option_value('wrap', true, { win = windows.output_win })"," vim.api.nvim_set_option_value('number', false, { win = windows.output_win })"," vim.api.nvim_set_option_value('relativenumber', false, { win = windows.output_win })"," vim.api.nvim_set_option_value('modifiable', false, { buf = windows.output_buf })"," vim.api.nvim_set_option_value('buftype', 'nofile', { buf = windows.output_buf })"," vim.api.nvim_set_option_value('swapfile', false, { buf = windows.output_buf })"," vim.api.nvim_set_option_value('winfixbuf', true, { win = windows.output_win })"," vim.api.nvim_set_option_value('winfixheight', true, { win = windows.output_win })"," vim.api.nvim_set_option_value('winfixwidth', true, { win = windows.output_win })"," vim.api.nvim_set_option_value('signcolumn', 'yes', { scope = 'local', win = windows.output_win })"," vim.api.nvim_set_option_value('list', false, { scope = 'local', win = windows.output_win })",""," M.update_dimensions(windows)"," M.setup_keymaps(windows)","end","","function M.update_dimensions(windows)"," local total_width = vim.api.nvim_get_option_value('columns', {})"," local width = math.floor(total_width * config.ui.window_width)",""," vim.api.nvim_win_set_config(windows.output_win, { width = width })","end","","function M.get_buf_line_count()"," if not M.mounted() then"," return 0"," end",""," return vim.api.nvim_buf_line_count(state.windows.output_buf)","end","","---Set the output buffer contents","---@param lines string[] The lines to set","---@param start_line? integer The starting line to set, defaults to 0","---@param end_line? integer The last line to set, defaults to -1","function M.set_lines(lines, start_line, end_line)"," if not M.mounted() then"," return"," end",""," start_line = start_line or 0"," end_line = end_line or -1",""," local windows = state.windows"," if not windows or not windows.output_buf then"," return"," end",""," vim.api.nvim_set_option_value('modifiable', true, { buf = windows.output_buf })"," vim.api.nvim_buf_set_lines(windows.output_buf, start_line, end_line, false, lines)"," vim.api.nvim_set_option_value('modifiable', false, { buf = windows.output_buf })","end","","---Clear output buf extmarks","---@param start_line? integer Line to start clearing, defaults 0","---@param end_line? integer Line to to clear until, defaults to -1","function M.clear_extmarks(start_line, end_line)"," if not M.mounted() or not state.windows.output_buf then"," return"," end",""," start_line = start_line or 0"," end_line = end_line or -1",""," vim.api.nvim_buf_clear_namespace(state.windows.output_buf, M.namespace, start_line, end_line)","end","","---Apply extmarks to the output buffer","---@param extmarks table Extmarks indexed by line","---@param line_offset? integer Line offset to apply to extmarks, defaults to 0","function M.set_extmarks(extmarks, line_offset)"," if not M.mounted() or not extmarks or type(extmarks) ~= 'table' then"," return"," end",""," line_offset = line_offset or 0",""," local output_buf = state.windows.output_buf",""," for line_idx, marks in pairs(extmarks) do"," for _, mark in ipairs(marks) do"," local actual_mark = type(mark) == 'function' and mark() or mark"," local target_line = line_offset + line_idx"," if actual_mark.end_row then"," actual_mark.end_row = actual_mark.end_row + line_offset"," end"," local start_col = actual_mark.start_col"," if actual_mark.start_col then"," actual_mark.start_col = nil"," end"," pcall(vim.api.nvim_buf_set_extmark, output_buf, M.namespace, target_line, start_col or 0, actual_mark)"," end"," end","end","","function M.focus_output(should_stop_insert)"," if should_stop_insert then"," vim.cmd('stopinsert')"," end"," vim.api.nvim_set_current_win(state.windows.output_win)","end","","function M.close()"," if M.mounted() then"," return"," end"," pcall(vim.api.nvim_win_close, state.windows.output_win, true)"," pcall(vim.api.nvim_buf_delete, state.windows.output_buf, { force = true })","end","","function M.setup_keymaps(windows)"," local keymap = require('opencode.keymap')"," keymap.setup_window_keymaps(config.keymap.output_window, windows.output_buf)","end","","function M.setup_autocmds(windows, group)"," vim.api.nvim_create_autocmd('WinEnter', {"," group = group,"," buffer = windows.output_buf,"," callback = function()"," vim.cmd('stopinsert')"," state.last_focused_opencode_window = 'output'"," require('opencode.ui.input_window').refresh_placeholder(state.windows)"," end,"," })",""," vim.api.nvim_create_autocmd('BufEnter', {"," group = group,"," buffer = windows.output_buf,"," callback = function()"," vim.cmd('stopinsert')"," state.last_focused_opencode_window = 'output'"," require('opencode.ui.input_window').refresh_placeholder(state.windows)"," end,"," })",""," state.subscribe('current_permission', function()"," require('opencode.keymap').toggle_permission_keymap(windows.output_buf)"," end)","end","","function M.clear()"," M.set_lines({})"," M.clear_extmarks()","end","","return M","```","","**Shell / Commands**","","```bash","# show project root and run tests","pwd","ls -la","./run_tests.sh","```","","**Short Lua examples**","","```lua","-- Print buffer line count if mounted","local out = require('opencode.ui.output_window')","if out.mounted() then"," print('Lines:', out.get_buf_line_count())","else"," print('Output window not mounted.')","end","```","","**JSON sample**","","```json","{"," \"name\": \"opencode.nvim\","," \"version\": \"0.0.0\","," \"tests\": {"," \"unit\": 128,"," \"manual\": 12"," }","}","```","","**YAML sample**","","```yaml","ui:"," window_width: 0.5"," window_highlight: \"Normal:NormalFloat\"","keymap:"," output_window:"," close: \"\""," focus: \"\"","```","","**Unified Diff example**","","```diff","*** before/lua/opencode/ui/output_window.lua","@@","- vim.api.nvim_set_option_value('winhighlight', config.ui.window_highlight, { win = windows.output_win })","+ vim.api.nvim_set_option_value('winhighlight', config.ui.window_highlight or '', { win = windows.output_win })","```","","**Python snippet**","","```python","# small helper to format lines","def format_lines(lines):"," return [line.rstrip() for line in lines if line is not None]","```","","**SQL example**","","```sql","-- List recent sessions","SELECT id, created_at, user_id","FROM sessions","WHERE created_at > now() - interval '7 days'","ORDER BY created_at DESC","LIMIT 10;","```","","**HTML fragment**","","```html","",""," Render Test"," ","
-- sample Lua inside HTML
"," ","","```","","**Indented (classic) code block**",""," This is an indented code block."," It should render as preformatted text without language highlighting.","","**Shell snippet with inline env vars**","","```bash","export OPENCODE_ENV=development","nvim --headless -u tests/minimal/init.lua -c \"lua require('plenary.test_harness').test_directory('./tests/unit', {minimal_init = './tests/minimal/init.lua'})\"","```","","**Mixed inline code examples**","- Use backticks for commands: `./run_tests.sh`","- File path with start line: `lua/opencode/ui/output_window.lua:1`","- API call: `vim.api.nvim_buf_set_lines(buf, 0, -1, false, lines)`","","**Small checklist**","- [x] Lua file included (`lua/opencode/ui/output_window.lua:1`)","- [x] Multiple fenced code blocks","- [x] Several languages: Lua, Bash, JSON, YAML, Python, SQL, HTML, Diff","","If you want more variations (many short blocks, nested lists, tables, or extremely long blocks), tell me which formats or languages to expand and I’ll produce them.","",""],"extmarks":[[1,1,0,{"right_gravity":true,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-24 19:32:00)","OpencodeHint"],[" [msg_a17b4dc4c001x19oFZANB8CsEB]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10}],[2,2,0,{"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[3,3,0,{"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[4,4,0,{"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[5,5,0,{"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[6,8,0,{"right_gravity":true,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text_hide":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-24 19:32:01)","OpencodeHint"],[" [msg_a17b4e166001vCnLczdZXvqLL6]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10}]],"actions":[],"timestamp":1766370766} \ No newline at end of file +{"actions":[],"timestamp":1766431564,"lines":["----","","","I just want to test the markdown rendering, please write as long session with codeblocksto","","[lua/opencode/ui/output_window.lua](lua/opencode/ui/output_window.lua)","","----","","","Here's a long markdown-rich session with many fenced code blocks to help test rendering. I include the file you provided plus a variety of smaller snippets in different languages and formats.","","**File Contents**","- `lua/opencode/ui/output_window.lua:1`","","```lua","-- lua/opencode/ui/output_window.lua","local state = require('opencode.state')","local config = require('opencode.config')","","local M = {}","M.namespace = vim.api.nvim_create_namespace('opencode_output')","","function M.create_buf()"," local output_buf = vim.api.nvim_create_buf(false, true)"," vim.api.nvim_set_option_value('filetype', 'opencode_output', { buf = output_buf })"," return output_buf","end","","function M._build_output_win_config()"," return {"," relative = 'editor',"," width = config.ui.window_width or 80,"," row = 2,"," col = 2,"," style = 'minimal',"," border = 'rounded',"," zindex = 40,"," }","end","","function M.mounted(windows)"," windows = windows or state.windows"," if"," not state.windows"," or not state.windows.output_buf"," or not state.windows.output_win"," or not vim.api.nvim_win_is_valid(windows.output_win)"," then"," return false"," end",""," return true","end","","function M.setup(windows)"," vim.api.nvim_set_option_value('winhighlight', config.ui.window_highlight, { win = windows.output_win })"," vim.api.nvim_set_option_value('wrap', true, { win = windows.output_win })"," vim.api.nvim_set_option_value('number', false, { win = windows.output_win })"," vim.api.nvim_set_option_value('relativenumber', false, { win = windows.output_win })"," vim.api.nvim_set_option_value('modifiable', false, { buf = windows.output_buf })"," vim.api.nvim_set_option_value('buftype', 'nofile', { buf = windows.output_buf })"," vim.api.nvim_set_option_value('swapfile', false, { buf = windows.output_buf })"," vim.api.nvim_set_option_value('winfixbuf', true, { win = windows.output_win })"," vim.api.nvim_set_option_value('winfixheight', true, { win = windows.output_win })"," vim.api.nvim_set_option_value('winfixwidth', true, { win = windows.output_win })"," vim.api.nvim_set_option_value('signcolumn', 'yes', { scope = 'local', win = windows.output_win })"," vim.api.nvim_set_option_value('list', false, { scope = 'local', win = windows.output_win })",""," M.update_dimensions(windows)"," M.setup_keymaps(windows)","end","","function M.update_dimensions(windows)"," local total_width = vim.api.nvim_get_option_value('columns', {})"," local width = math.floor(total_width * config.ui.window_width)",""," vim.api.nvim_win_set_config(windows.output_win, { width = width })","end","","function M.get_buf_line_count()"," if not M.mounted() then"," return 0"," end",""," return vim.api.nvim_buf_line_count(state.windows.output_buf)","end","","---Set the output buffer contents","---@param lines string[] The lines to set","---@param start_line? integer The starting line to set, defaults to 0","---@param end_line? integer The last line to set, defaults to -1","function M.set_lines(lines, start_line, end_line)"," if not M.mounted() then"," return"," end",""," start_line = start_line or 0"," end_line = end_line or -1",""," local windows = state.windows"," if not windows or not windows.output_buf then"," return"," end",""," vim.api.nvim_set_option_value('modifiable', true, { buf = windows.output_buf })"," vim.api.nvim_buf_set_lines(windows.output_buf, start_line, end_line, false, lines)"," vim.api.nvim_set_option_value('modifiable', false, { buf = windows.output_buf })","end","","---Clear output buf extmarks","---@param start_line? integer Line to start clearing, defaults 0","---@param end_line? integer Line to to clear until, defaults to -1","function M.clear_extmarks(start_line, end_line)"," if not M.mounted() or not state.windows.output_buf then"," return"," end",""," start_line = start_line or 0"," end_line = end_line or -1",""," vim.api.nvim_buf_clear_namespace(state.windows.output_buf, M.namespace, start_line, end_line)","end","","---Apply extmarks to the output buffer","---@param extmarks table Extmarks indexed by line","---@param line_offset? integer Line offset to apply to extmarks, defaults to 0","function M.set_extmarks(extmarks, line_offset)"," if not M.mounted() or not extmarks or type(extmarks) ~= 'table' then"," return"," end",""," line_offset = line_offset or 0",""," local output_buf = state.windows.output_buf",""," for line_idx, marks in pairs(extmarks) do"," for _, mark in ipairs(marks) do"," local actual_mark = type(mark) == 'function' and mark() or mark"," local target_line = line_offset + line_idx"," if actual_mark.end_row then"," actual_mark.end_row = actual_mark.end_row + line_offset"," end"," local start_col = actual_mark.start_col"," if actual_mark.start_col then"," actual_mark.start_col = nil"," end"," pcall(vim.api.nvim_buf_set_extmark, output_buf, M.namespace, target_line, start_col or 0, actual_mark)"," end"," end","end","","function M.focus_output(should_stop_insert)"," if should_stop_insert then"," vim.cmd('stopinsert')"," end"," vim.api.nvim_set_current_win(state.windows.output_win)","end","","function M.close()"," if M.mounted() then"," return"," end"," pcall(vim.api.nvim_win_close, state.windows.output_win, true)"," pcall(vim.api.nvim_buf_delete, state.windows.output_buf, { force = true })","end","","function M.setup_keymaps(windows)"," local keymap = require('opencode.keymap')"," keymap.setup_window_keymaps(config.keymap.output_window, windows.output_buf)","end","","function M.setup_autocmds(windows, group)"," vim.api.nvim_create_autocmd('WinEnter', {"," group = group,"," buffer = windows.output_buf,"," callback = function()"," vim.cmd('stopinsert')"," state.last_focused_opencode_window = 'output'"," require('opencode.ui.input_window').refresh_placeholder(state.windows)"," end,"," })",""," vim.api.nvim_create_autocmd('BufEnter', {"," group = group,"," buffer = windows.output_buf,"," callback = function()"," vim.cmd('stopinsert')"," state.last_focused_opencode_window = 'output'"," require('opencode.ui.input_window').refresh_placeholder(state.windows)"," end,"," })",""," state.subscribe('current_permission', function()"," require('opencode.keymap').toggle_permission_keymap(windows.output_buf)"," end)","end","","function M.clear()"," M.set_lines({})"," M.clear_extmarks()","end","","return M","```","","**Shell / Commands**","","```bash","# show project root and run tests","pwd","ls -la","./run_tests.sh","```","","**Short Lua examples**","","```lua","-- Print buffer line count if mounted","local out = require('opencode.ui.output_window')","if out.mounted() then"," print('Lines:', out.get_buf_line_count())","else"," print('Output window not mounted.')","end","```","","**JSON sample**","","```json","{"," \"name\": \"opencode.nvim\","," \"version\": \"0.0.0\","," \"tests\": {"," \"unit\": 128,"," \"manual\": 12"," }","}","```","","**YAML sample**","","```yaml","ui:"," window_width: 0.5"," window_highlight: \"Normal:NormalFloat\"","keymap:"," output_window:"," close: \"\""," focus: \"\"","```","","**Unified Diff example**","","```diff","*** before/lua/opencode/ui/output_window.lua","@@","- vim.api.nvim_set_option_value('winhighlight', config.ui.window_highlight, { win = windows.output_win })","+ vim.api.nvim_set_option_value('winhighlight', config.ui.window_highlight or '', { win = windows.output_win })","```","","**Python snippet**","","```python","# small helper to format lines","def format_lines(lines):"," return [line.rstrip() for line in lines if line is not None]","```","","**SQL example**","","```sql","-- List recent sessions","SELECT id, created_at, user_id","FROM sessions","WHERE created_at > now() - interval '7 days'","ORDER BY created_at DESC","LIMIT 10;","```","","**HTML fragment**","","```html","",""," Render Test"," ","
-- sample Lua inside HTML
"," ","","```","","**Indented (classic) code block**",""," This is an indented code block."," It should render as preformatted text without language highlighting.","","**Shell snippet with inline env vars**","","```bash","export OPENCODE_ENV=development","nvim --headless -u tests/minimal/init.lua -c \"lua require('plenary.test_harness').test_directory('./tests/unit', {minimal_init = './tests/minimal/init.lua'})\"","```","","**Mixed inline code examples**","- Use backticks for commands: `./run_tests.sh`","- File path with start line: `lua/opencode/ui/output_window.lua:1`","- API call: `vim.api.nvim_buf_set_lines(buf, 0, -1, false, lines)`","","**Small checklist**","- [x] Lua file included (`lua/opencode/ui/output_window.lua:1`)","- [x] Multiple fenced code blocks","- [x] Several languages: Lua, Bash, JSON, YAML, Python, SQL, HTML, Diff","","If you want more variations (many short blocks, nested lists, tables, or extremely long blocks), tell me which formats or languages to expand and I’ll produce them.","",""],"extmarks":[[1,1,0,{"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-24 19:32:00)","OpencodeHint"],[" [msg_a17b4dc4c001x19oFZANB8CsEB]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10,"virt_text_repeat_linebreak":false,"right_gravity":true,"virt_text_hide":false,"ns_id":3}],[2,2,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"virt_text_hide":false,"ns_id":3}],[3,3,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"virt_text_hide":false,"ns_id":3}],[4,4,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"virt_text_hide":false,"ns_id":3}],[5,5,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"virt_text_hide":false,"ns_id":3}],[6,8,0,{"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-24 19:32:01)","OpencodeHint"],[" [msg_a17b4e166001vCnLczdZXvqLL6]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10,"virt_text_repeat_linebreak":false,"right_gravity":true,"virt_text_hide":false,"ns_id":3}]]} \ No newline at end of file diff --git a/tests/data/permission-denied.expected.json b/tests/data/permission-denied.expected.json index 050a0bc7..5330afc9 100644 --- a/tests/data/permission-denied.expected.json +++ b/tests/data/permission-denied.expected.json @@ -1 +1 @@ -{"actions":[],"extmarks":[[1,1,0,{"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-12 14:56:20)","OpencodeHint"],[" [msg_9d8ec2a46001D1TtyCg3aR7o97]","OpencodeHint"]]}],[2,2,0,{"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[3,3,0,{"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[4,4,0,{"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[5,5,0,{"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[6,8,0,{"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 14:56:20)","OpencodeHint"],[" [msg_9d8ec2a9f001uOK35RyLnct2b1]","OpencodeHint"]]}],[7,18,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[8,19,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[9,20,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[10,21,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[11,24,0,{"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 14:56:27)","OpencodeHint"],[" [msg_9d8ec47a8001Fd2VJ7LRBrj8AF]","OpencodeHint"]]}],[12,30,0,{"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 14:56:30)","OpencodeHint"],[" [msg_9d8ec5310001qTVklk5oFvS00E]","OpencodeHint"]]}],[13,35,0,{"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 14:56:33)","OpencodeHint"],[" [msg_9d8ec5d1e001Umy9DbvgL0mk76]","OpencodeHint"]]}],[14,41,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[15,42,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[16,43,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[17,44,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[18,45,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[19,46,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[20,47,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[21,48,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[22,49,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[23,50,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[24,51,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[25,52,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[26,53,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[27,54,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[28,55,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[29,56,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[30,57,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[31,58,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[32,59,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[33,60,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[34,61,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[35,62,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[36,63,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[37,64,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[38,65,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[39,66,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[40,67,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[41,68,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[42,69,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[43,70,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[44,71,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[45,72,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[46,73,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[47,74,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[48,75,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[49,76,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[50,77,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[51,78,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[52,79,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[53,80,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[54,81,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[55,82,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[56,83,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[57,84,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[58,85,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[59,86,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[60,87,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[61,90,0,{"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 14:56:38)","OpencodeHint"],[" [msg_9d8ec708e001lrLTmgiWPbSYeN]","OpencodeHint"]]}],[62,97,0,{"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 14:56:41)","OpencodeHint"],[" [msg_9d8ec7fa7001zpzhgmQUAz1uIN]","OpencodeHint"]]}],[63,101,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[64,102,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[65,103,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[66,104,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[67,105,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[68,106,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[69,109,0,{"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 14:56:46)","OpencodeHint"],[" [msg_9d8ec9105001k6kWv2IJB5sIEu]","OpencodeHint"]]}],[70,111,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[71,112,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[72,113,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[73,114,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[74,115,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[75,116,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[76,117,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[77,118,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[78,119,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[79,120,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[80,121,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[81,122,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[82,123,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[83,124,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[84,125,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[85,126,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[86,127,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[87,128,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[88,129,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[89,130,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[90,131,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[91,132,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[92,135,0,{"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 14:56:49)","OpencodeHint"],[" [msg_9d8ec9ce4001CV2dSm31xky1f5]","OpencodeHint"]]}],[93,139,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[94,140,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[95,141,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[96,142,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[97,143,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[98,144,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[99,145,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[100,146,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[101,149,0,{"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 14:56:52)","OpencodeHint"],[" [msg_9d8ecaa9f001scSNwtORoGqKra]","OpencodeHint"]]}],[102,153,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[103,154,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[104,155,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[105,156,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[106,157,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[107,158,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[108,161,0,{"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 14:56:55)","OpencodeHint"],[" [msg_9d8ecb6b8001LyTb1Pp75AENAa]","OpencodeHint"]]}],[109,168,0,{"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 14:56:59)","OpencodeHint"],[" [msg_9d8ecc3b20019L3zs8pytlmUHc]","OpencodeHint"]]}],[110,178,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[111,179,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[112,180,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[113,181,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[114,182,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[115,183,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[116,184,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[117,185,0,{"end_col":0,"end_row":186,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text":[["-","OpencodeDiffDelete"]],"virt_text_pos":"overlay","priority":5000,"hl_group":"OpencodeDiffDelete","right_gravity":true}],[118,185,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[119,186,0,{"end_col":0,"end_row":187,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text":[["+","OpencodeDiffAdd"]],"virt_text_pos":"overlay","priority":5000,"hl_group":"OpencodeDiffAdd","right_gravity":true}],[120,186,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[121,187,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[122,188,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[123,189,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[124,190,0,{"end_col":0,"end_row":191,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text":[["-","OpencodeDiffDelete"]],"virt_text_pos":"overlay","priority":5000,"hl_group":"OpencodeDiffDelete","right_gravity":true}],[125,190,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[126,191,0,{"end_col":0,"end_row":192,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text":[["-","OpencodeDiffDelete"]],"virt_text_pos":"overlay","priority":5000,"hl_group":"OpencodeDiffDelete","right_gravity":true}],[127,191,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[128,192,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[129,193,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[130,194,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[131,195,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[132,196,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[133,197,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[134,198,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[135,199,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[136,200,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[137,201,0,{"end_col":0,"end_row":202,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text":[["+","OpencodeDiffAdd"]],"virt_text_pos":"overlay","priority":5000,"hl_group":"OpencodeDiffAdd","right_gravity":true}],[138,201,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[139,202,0,{"end_col":0,"end_row":203,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text":[["+","OpencodeDiffAdd"]],"virt_text_pos":"overlay","priority":5000,"hl_group":"OpencodeDiffAdd","right_gravity":true}],[140,202,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[141,203,0,{"end_col":0,"end_row":204,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text":[["+","OpencodeDiffAdd"]],"virt_text_pos":"overlay","priority":5000,"hl_group":"OpencodeDiffAdd","right_gravity":true}],[142,203,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[143,204,0,{"end_col":0,"end_row":205,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text":[["+","OpencodeDiffAdd"]],"virt_text_pos":"overlay","priority":5000,"hl_group":"OpencodeDiffAdd","right_gravity":true}],[144,204,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[145,205,0,{"end_col":0,"end_row":206,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text":[["+","OpencodeDiffAdd"]],"virt_text_pos":"overlay","priority":5000,"hl_group":"OpencodeDiffAdd","right_gravity":true}],[146,205,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[147,206,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[148,207,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[149,208,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[150,209,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[151,210,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[152,211,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[153,212,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[154,213,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}]],"lines":["----","","","the type for _calculate_revert_stats is wrong, i think? because it comes from state.messages. can you fix?","","[lua/opencode/ui/session_formatter.lua](lua/opencode/ui/session_formatter.lua)","","----","","","Looking at the code, I can see the issue. The function `_calculate_revert_stats` is called at line 64, but there's a type annotation issue at line 99 and line 228.","","At line 228, the code accesses `msg.info.role`, but the parameter is typed as `messages` which is `Message[]`. The `Message` type likely has a nested `info` structure, which is correct.","","However, line 99 has an outdated type annotation that references a `message` parameter (singular) when the commented-out function actually doesn't exist anymore.","","Let me check the Message type structure and fix the type annotation:","","** grep** `*.lua` `---@class Message`","Found `0` matches","","> [!ERROR] Error: ripgrep failed: rg: unrecognized flag ---@class Message","","----","","","** grep** `*.lua` `@class Message`","Found `4` matches","","----","","","** read** `types.lua`","","----","","","Now I can see the issue clearly. The `Message` type doesn't have an `info` field at the root - it has `role` directly. But in the `_calculate_revert_stats` function at line 228, it's accessing `msg.info.role`. ","","Let me check how messages are actually structured in the state:","","** run** `Check how msg.info is accessed in the file`","","`````bash","> cd /Users/cam/Dev/neovim-dev/opencode.nvim && rg \"msg\\.info\\.\" -A 2 -B 2 lua/opencode/ui/session_formatter.lua | head -40",""," state.current_message = msg",""," if not state.current_model and msg.info.providerID and msg.info.providerID ~= '' then"," state.current_model = msg.info.providerID .. '/' .. msg.info.modelID"," end",""," if msg.info.tokens and msg.info.tokens.input > 0 then"," state.tokens_count = msg.info.tokens.input"," + msg.info.tokens.output"," + msg.info.tokens.cache.read"," + msg.info.tokens.cache.write"," end",""," if msg.info.cost and type(msg.info.cost) == 'number' then"," state.cost = msg.info.cost"," end",""," if session.revert and session.revert.messageID == msg.info.id then"," ---@type {messages: number, tool_calls: number, files: table}"," local revert_stats = M._calculate_revert_stats(state.messages, i, session.revert)","--",""," for j, part in ipairs(msg.parts or {}) do"," M._current = { msg_idx = i, part_idx = j, role = msg.info.role, type = part.type, snapshot = part.snapshot }"," M.output:add_metadata(M._current)",""," if part.type == 'text' and part.text then"," if msg.info.role == 'user' and part.synthetic ~= true then"," state.last_user_message = msg"," M._format_user_message(vim.trim(part.text), msg)"," elseif msg.info.role == 'assistant' then"," M._format_assistant_message(vim.trim(part.text))"," end","--"," end",""," if msg.info.error and msg.info.error ~= '' then"," M._format_error(msg)"," end","--","","`````","","----","","","I see - the messages in `state.messages` actually have an `info` field. The type definition in `types.lua` might be incomplete or different. Let me check the actual structure by looking at how messages come from the API:","","** read** `types.lua`","","----","","","The `Message` type definition doesn't match the actual structure used in the code. Looking at the usage, messages have an `info` field that contains the metadata. Let me search for a different type definition:","","** run** `Check info field usage patterns`","","`````bash","> cd /Users/cam/Dev/neovim-dev/opencode.nvim && rg \"info.*providerID\\|info.*role\\|info.*id\" lua/opencode/ui/session_formatter.lua | head -10","","`````","","----","","","** run** `Find all info field accesses`","","`````bash","> cd /Users/cam/Dev/neovim-dev/opencode.nvim && rg \"\\.info\\.\" lua/opencode/ui/session_formatter.lua | head -15",""," if not state.current_model and msg.info.providerID and msg.info.providerID ~= '' then"," state.current_model = msg.info.providerID .. '/' .. msg.info.modelID"," if msg.info.tokens and msg.info.tokens.input > 0 then"," state.tokens_count = msg.info.tokens.input"," + msg.info.tokens.output"," + msg.info.tokens.cache.read"," + msg.info.tokens.cache.write"," if msg.info.cost and type(msg.info.cost) == 'number' then"," state.cost = msg.info.cost"," if session.revert and session.revert.messageID == msg.info.id then"," M._current = { msg_idx = i, part_idx = j, role = msg.info.role, type = part.type, snapshot = part.snapshot }"," if msg.info.role == 'user' and part.synthetic ~= true then"," elseif msg.info.role == 'assistant' then"," if msg.info.error and msg.info.error ~= '' then"," if msg.info.role == 'user' then","","`````","","----","","","The actual structure has `msg.info` wrapping the message metadata. Let me look for an `info` type or see how the structure is defined:","","** run** `Search for Info type definitions`","","`````bash","> cd /Users/cam/Dev/neovim-dev/opencode.nvim && rg \"@class.*Info|@field info\" lua/opencode/types.lua","","---@class SessionRevertInfo","","`````","","----","","","Let me check the actual message structure by looking at the session module:","","** run** `Check how info is constructed`","","`````bash","> cd /Users/cam/Dev/neovim-dev/opencode.nvim && rg \"info\\s*=\" lua/opencode/session.lua | head -10","","`````","","----","","","Let me look at how messages are actually shaped in practice by checking test data:","","** read** `simple-session.json`","","----","","","Perfect! Now I can see the actual structure. Messages have an `info` field that contains metadata like `id`, `role`, `sessionID`, etc. The `Message` type definition in `types.lua` is incomplete - it's missing the `info` field wrapper.","","Now I understand the issue. Looking back at the error:","- Line 99: References undefined param `message` (this is in commented-out code)","- Line 228: References `msg.info` field which isn't in the type definition","","The fix is to update the `Message` type to include the `info` field. Let me check the complete structure:","","** edit** `types.lua`","","`````lua"," ---@field range? { from: number, to: number } Optional range for the action"," "," ---@alias OutputExtmark vim.api.keyset.set_extmark|fun():vim.api.keyset.set_extmark"," "," ---@class Message"," ---@class MessageInfo"," ---@field id string Unique message identifier"," ---@field sessionID string Unique session identifier"," ---@field tokens MessageTokenCount Token usage statistics"," ---@field parts MessagePart[] Array of message parts"," ---@field system string[] System messages"," ---@field time { created: number, completed: number } Timestamps"," ---@field cost number Cost of the message"," ---@field path { cwd: string, root: string } Working directory paths"," ---@field modelID string Model identifier","@@ -253,8 +251,13 @@"," ---@field system_role string|nil Role defined in system messages"," ---@field mode string|nil Agent or mode identifier"," ---@field error table"," "," ---@class Message"," ---@field info MessageInfo Message metadata"," ---@field parts MessagePart[] Array of message parts"," ---@field system string[] System messages"," "," ---@class RestorePoint"," ---@field id string Unique restore point identifier"," ---@field from_snapshot_id string|nil ID of the snapshot this restore point is based on"," ---@field files string[] List of file paths included in the restore point","","`````","","> [!ERROR] Error: The user rejected permission to use this specific tool call. You may try again with different parameters.","",""],"timestamp":1762903199} \ No newline at end of file +{"actions":[],"extmarks":[[1,1,0,{"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-12 14:56:20)","OpencodeHint"],[" [msg_9d8ec2a46001D1TtyCg3aR7o97]","OpencodeHint"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"ns_id":3}],[2,2,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"ns_id":3}],[3,3,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"ns_id":3}],[4,4,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"ns_id":3}],[5,5,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"ns_id":3}],[6,8,0,{"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 14:56:20)","OpencodeHint"],[" [msg_9d8ec2a9f001uOK35RyLnct2b1]","OpencodeHint"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"ns_id":3}],[7,18,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[8,19,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[9,20,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[10,21,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[11,24,0,{"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 14:56:27)","OpencodeHint"],[" [msg_9d8ec47a8001Fd2VJ7LRBrj8AF]","OpencodeHint"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"ns_id":3}],[12,30,0,{"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 14:56:30)","OpencodeHint"],[" [msg_9d8ec5310001qTVklk5oFvS00E]","OpencodeHint"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"ns_id":3}],[13,35,0,{"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 14:56:33)","OpencodeHint"],[" [msg_9d8ec5d1e001Umy9DbvgL0mk76]","OpencodeHint"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"ns_id":3}],[14,41,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[15,42,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[16,43,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[17,44,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[18,45,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[19,46,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[20,47,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[21,48,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[22,49,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[23,50,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[24,51,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[25,52,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[26,53,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[27,54,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[28,55,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[29,56,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[30,57,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[31,58,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[32,59,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[33,60,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[34,61,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[35,62,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[36,63,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[37,64,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[38,65,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[39,66,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[40,67,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[41,68,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[42,69,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[43,70,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[44,71,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[45,72,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[46,73,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[47,74,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[48,75,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[49,76,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[50,77,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[51,78,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[52,79,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[53,80,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[54,81,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[55,82,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[56,83,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[57,84,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[58,85,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[59,86,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[60,87,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[61,90,0,{"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 14:56:38)","OpencodeHint"],[" [msg_9d8ec708e001lrLTmgiWPbSYeN]","OpencodeHint"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"ns_id":3}],[62,97,0,{"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 14:56:41)","OpencodeHint"],[" [msg_9d8ec7fa7001zpzhgmQUAz1uIN]","OpencodeHint"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"ns_id":3}],[63,101,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[64,102,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[65,103,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[66,104,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[67,105,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[68,106,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[69,109,0,{"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 14:56:46)","OpencodeHint"],[" [msg_9d8ec9105001k6kWv2IJB5sIEu]","OpencodeHint"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"ns_id":3}],[70,111,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[71,112,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[72,113,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[73,114,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[74,115,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[75,116,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[76,117,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[77,118,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[78,119,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[79,120,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[80,121,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[81,122,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[82,123,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[83,124,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[84,125,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[85,126,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[86,127,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[87,128,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[88,129,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[89,130,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[90,131,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[91,132,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[92,135,0,{"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 14:56:49)","OpencodeHint"],[" [msg_9d8ec9ce4001CV2dSm31xky1f5]","OpencodeHint"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"ns_id":3}],[93,139,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[94,140,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[95,141,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[96,142,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[97,143,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[98,144,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[99,145,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[100,146,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[101,149,0,{"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 14:56:52)","OpencodeHint"],[" [msg_9d8ecaa9f001scSNwtORoGqKra]","OpencodeHint"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"ns_id":3}],[102,153,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[103,154,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[104,155,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[105,156,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[106,157,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[107,158,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[108,161,0,{"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 14:56:55)","OpencodeHint"],[" [msg_9d8ecb6b8001LyTb1Pp75AENAa]","OpencodeHint"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"ns_id":3}],[109,168,0,{"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 14:56:59)","OpencodeHint"],[" [msg_9d8ecc3b20019L3zs8pytlmUHc]","OpencodeHint"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"ns_id":3}],[110,178,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[111,179,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[112,180,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[113,181,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[114,182,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[115,183,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[116,184,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[117,185,0,{"end_row":186,"hl_eol":true,"right_gravity":true,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"ns_id":3,"end_col":0,"end_right_gravity":false,"virt_text_pos":"overlay","virt_text":[["-","OpencodeDiffDelete"]],"priority":5000,"hl_group":"OpencodeDiffDelete"}],[118,185,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[119,186,0,{"end_row":187,"hl_eol":true,"right_gravity":true,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"ns_id":3,"end_col":0,"end_right_gravity":false,"virt_text_pos":"overlay","virt_text":[["+","OpencodeDiffAdd"]],"priority":5000,"hl_group":"OpencodeDiffAdd"}],[120,186,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[121,187,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[122,188,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[123,189,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[124,190,0,{"end_row":191,"hl_eol":true,"right_gravity":true,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"ns_id":3,"end_col":0,"end_right_gravity":false,"virt_text_pos":"overlay","virt_text":[["-","OpencodeDiffDelete"]],"priority":5000,"hl_group":"OpencodeDiffDelete"}],[125,190,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[126,191,0,{"end_row":192,"hl_eol":true,"right_gravity":true,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"ns_id":3,"end_col":0,"end_right_gravity":false,"virt_text_pos":"overlay","virt_text":[["-","OpencodeDiffDelete"]],"priority":5000,"hl_group":"OpencodeDiffDelete"}],[127,191,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[128,192,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[129,193,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[130,194,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[131,195,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[132,196,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[133,197,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[134,198,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[135,199,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[136,200,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[137,201,0,{"end_row":202,"hl_eol":true,"right_gravity":true,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"ns_id":3,"end_col":0,"end_right_gravity":false,"virt_text_pos":"overlay","virt_text":[["+","OpencodeDiffAdd"]],"priority":5000,"hl_group":"OpencodeDiffAdd"}],[138,201,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[139,202,0,{"end_row":203,"hl_eol":true,"right_gravity":true,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"ns_id":3,"end_col":0,"end_right_gravity":false,"virt_text_pos":"overlay","virt_text":[["+","OpencodeDiffAdd"]],"priority":5000,"hl_group":"OpencodeDiffAdd"}],[140,202,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[141,203,0,{"end_row":204,"hl_eol":true,"right_gravity":true,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"ns_id":3,"end_col":0,"end_right_gravity":false,"virt_text_pos":"overlay","virt_text":[["+","OpencodeDiffAdd"]],"priority":5000,"hl_group":"OpencodeDiffAdd"}],[142,203,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[143,204,0,{"end_row":205,"hl_eol":true,"right_gravity":true,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"ns_id":3,"end_col":0,"end_right_gravity":false,"virt_text_pos":"overlay","virt_text":[["+","OpencodeDiffAdd"]],"priority":5000,"hl_group":"OpencodeDiffAdd"}],[144,204,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[145,205,0,{"end_row":206,"hl_eol":true,"right_gravity":true,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"ns_id":3,"end_col":0,"end_right_gravity":false,"virt_text_pos":"overlay","virt_text":[["+","OpencodeDiffAdd"]],"priority":5000,"hl_group":"OpencodeDiffAdd"}],[146,205,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[147,206,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[148,207,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[149,208,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[150,209,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[151,210,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[152,211,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[153,212,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[154,213,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}]],"lines":["----","","","the type for _calculate_revert_stats is wrong, i think? because it comes from state.messages. can you fix?","","[lua/opencode/ui/session_formatter.lua](lua/opencode/ui/session_formatter.lua)","","----","","","Looking at the code, I can see the issue. The function `_calculate_revert_stats` is called at line 64, but there's a type annotation issue at line 99 and line 228.","","At line 228, the code accesses `msg.info.role`, but the parameter is typed as `messages` which is `Message[]`. The `Message` type likely has a nested `info` structure, which is correct.","","However, line 99 has an outdated type annotation that references a `message` parameter (singular) when the commented-out function actually doesn't exist anymore.","","Let me check the Message type structure and fix the type annotation:","","** grep** `*.lua` `---@class Message`","Found `0` matches","","> [!ERROR] Error: ripgrep failed: rg: unrecognized flag ---@class Message","","----","","","** grep** `*.lua` `@class Message`","Found `4` matches","","----","","","** read** `types.lua`","","----","","","Now I can see the issue clearly. The `Message` type doesn't have an `info` field at the root - it has `role` directly. But in the `_calculate_revert_stats` function at line 228, it's accessing `msg.info.role`. ","","Let me check how messages are actually structured in the state:","","** run** `Check how msg.info is accessed in the file`","","`````bash","> cd /Users/cam/Dev/neovim-dev/opencode.nvim && rg \"msg\\.info\\.\" -A 2 -B 2 lua/opencode/ui/session_formatter.lua | head -40",""," state.current_message = msg",""," if not state.current_model and msg.info.providerID and msg.info.providerID ~= '' then"," state.current_model = msg.info.providerID .. '/' .. msg.info.modelID"," end",""," if msg.info.tokens and msg.info.tokens.input > 0 then"," state.tokens_count = msg.info.tokens.input"," + msg.info.tokens.output"," + msg.info.tokens.cache.read"," + msg.info.tokens.cache.write"," end",""," if msg.info.cost and type(msg.info.cost) == 'number' then"," state.cost = msg.info.cost"," end",""," if session.revert and session.revert.messageID == msg.info.id then"," ---@type {messages: number, tool_calls: number, files: table}"," local revert_stats = M._calculate_revert_stats(state.messages, i, session.revert)","--",""," for j, part in ipairs(msg.parts or {}) do"," M._current = { msg_idx = i, part_idx = j, role = msg.info.role, type = part.type, snapshot = part.snapshot }"," M.output:add_metadata(M._current)",""," if part.type == 'text' and part.text then"," if msg.info.role == 'user' and part.synthetic ~= true then"," state.last_user_message = msg"," M._format_user_message(vim.trim(part.text), msg)"," elseif msg.info.role == 'assistant' then"," M._format_assistant_message(vim.trim(part.text))"," end","--"," end",""," if msg.info.error and msg.info.error ~= '' then"," M._format_error(msg)"," end","--","","`````","","----","","","I see - the messages in `state.messages` actually have an `info` field. The type definition in `types.lua` might be incomplete or different. Let me check the actual structure by looking at how messages come from the API:","","** read** `types.lua`","","----","","","The `Message` type definition doesn't match the actual structure used in the code. Looking at the usage, messages have an `info` field that contains the metadata. Let me search for a different type definition:","","** run** `Check info field usage patterns`","","`````bash","> cd /Users/cam/Dev/neovim-dev/opencode.nvim && rg \"info.*providerID\\|info.*role\\|info.*id\" lua/opencode/ui/session_formatter.lua | head -10","","`````","","----","","","** run** `Find all info field accesses`","","`````bash","> cd /Users/cam/Dev/neovim-dev/opencode.nvim && rg \"\\.info\\.\" lua/opencode/ui/session_formatter.lua | head -15",""," if not state.current_model and msg.info.providerID and msg.info.providerID ~= '' then"," state.current_model = msg.info.providerID .. '/' .. msg.info.modelID"," if msg.info.tokens and msg.info.tokens.input > 0 then"," state.tokens_count = msg.info.tokens.input"," + msg.info.tokens.output"," + msg.info.tokens.cache.read"," + msg.info.tokens.cache.write"," if msg.info.cost and type(msg.info.cost) == 'number' then"," state.cost = msg.info.cost"," if session.revert and session.revert.messageID == msg.info.id then"," M._current = { msg_idx = i, part_idx = j, role = msg.info.role, type = part.type, snapshot = part.snapshot }"," if msg.info.role == 'user' and part.synthetic ~= true then"," elseif msg.info.role == 'assistant' then"," if msg.info.error and msg.info.error ~= '' then"," if msg.info.role == 'user' then","","`````","","----","","","The actual structure has `msg.info` wrapping the message metadata. Let me look for an `info` type or see how the structure is defined:","","** run** `Search for Info type definitions`","","`````bash","> cd /Users/cam/Dev/neovim-dev/opencode.nvim && rg \"@class.*Info|@field info\" lua/opencode/types.lua","","---@class SessionRevertInfo","","`````","","----","","","Let me check the actual message structure by looking at the session module:","","** run** `Check how info is constructed`","","`````bash","> cd /Users/cam/Dev/neovim-dev/opencode.nvim && rg \"info\\s*=\" lua/opencode/session.lua | head -10","","`````","","----","","","Let me look at how messages are actually shaped in practice by checking test data:","","** read** `simple-session.json`","","----","","","Perfect! Now I can see the actual structure. Messages have an `info` field that contains metadata like `id`, `role`, `sessionID`, etc. The `Message` type definition in `types.lua` is incomplete - it's missing the `info` field wrapper.","","Now I understand the issue. Looking back at the error:","- Line 99: References undefined param `message` (this is in commented-out code)","- Line 228: References `msg.info` field which isn't in the type definition","","The fix is to update the `Message` type to include the `info` field. Let me check the complete structure:","","** edit** `types.lua`","","`````lua"," ---@field range? { from: number, to: number } Optional range for the action"," "," ---@alias OutputExtmark vim.api.keyset.set_extmark|fun():vim.api.keyset.set_extmark"," "," ---@class Message"," ---@class MessageInfo"," ---@field id string Unique message identifier"," ---@field sessionID string Unique session identifier"," ---@field tokens MessageTokenCount Token usage statistics"," ---@field parts MessagePart[] Array of message parts"," ---@field system string[] System messages"," ---@field time { created: number, completed: number } Timestamps"," ---@field cost number Cost of the message"," ---@field path { cwd: string, root: string } Working directory paths"," ---@field modelID string Model identifier","@@ -253,8 +251,13 @@"," ---@field system_role string|nil Role defined in system messages"," ---@field mode string|nil Agent or mode identifier"," ---@field error table"," "," ---@class Message"," ---@field info MessageInfo Message metadata"," ---@field parts MessagePart[] Array of message parts"," ---@field system string[] System messages"," "," ---@class RestorePoint"," ---@field id string Unique restore point identifier"," ---@field from_snapshot_id string|nil ID of the snapshot this restore point is based on"," ---@field files string[] List of file paths included in the restore point","","`````","","> [!ERROR] Error: The user rejected permission to use this specific tool call. You may try again with different parameters.","",""],"timestamp":1766431564} \ No newline at end of file diff --git a/tests/data/permission-prompt.expected.json b/tests/data/permission-prompt.expected.json index 4b8e0823..9aa71fa6 100644 --- a/tests/data/permission-prompt.expected.json +++ b/tests/data/permission-prompt.expected.json @@ -1 +1 @@ -{"lines":["----","","","Perfect! Now I understand how it works. The message headers have extmarks with `virt_text` where the first element contains the icon (either `header_user` or `header_assistant`). Let me check the output_window module to understand the extmark namespace:","","** run** `Find extmark namespace usage`","","`````bash","> rg \"nvim_buf_get_extmarks|ns_id\" /Users/cam/Dev/neovim-dev/opencode.nvim/lua/opencode/ui/output_window.lua -B 2 -A 2","","`````","","> [!WARNING] Permission required to run this tool.",">","> Accept `a` Always `A` Deny `d`","",""],"extmarks":[[1,1,0,{"virt_text_hide":false,"virt_text_win_col":-3,"virt_text_repeat_linebreak":false,"ns_id":3,"right_gravity":true,"priority":10,"virt_text_pos":"win_col","virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-16 04:27:36)","OpencodeHint"],[" [msg_9eb45fbe60020xE560OGH3Vdoo]","OpencodeHint"]]}],[2,5,0,{"virt_text_hide":false,"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"ns_id":3,"right_gravity":true,"priority":4096,"virt_text_pos":"win_col","virt_text":[["▌","OpencodeToolBorder"]]}],[3,6,0,{"virt_text_hide":false,"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"ns_id":3,"right_gravity":true,"priority":4096,"virt_text_pos":"win_col","virt_text":[["▌","OpencodeToolBorder"]]}],[4,7,0,{"virt_text_hide":false,"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"ns_id":3,"right_gravity":true,"priority":4096,"virt_text_pos":"win_col","virt_text":[["▌","OpencodeToolBorder"]]}],[5,8,0,{"virt_text_hide":false,"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"ns_id":3,"right_gravity":true,"priority":4096,"virt_text_pos":"win_col","virt_text":[["▌","OpencodeToolBorder"]]}],[6,9,0,{"virt_text_hide":false,"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"ns_id":3,"right_gravity":true,"priority":4096,"virt_text_pos":"win_col","virt_text":[["▌","OpencodeToolBorder"]]}],[7,10,0,{"virt_text_hide":false,"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"ns_id":3,"right_gravity":true,"priority":4096,"virt_text_pos":"win_col","virt_text":[["▌","OpencodeToolBorder"]]}],[8,11,0,{"virt_text_hide":false,"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"ns_id":3,"right_gravity":true,"priority":4096,"virt_text_pos":"win_col","virt_text":[["▌","OpencodeToolBorder"]]}],[9,12,0,{"virt_text_hide":false,"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"ns_id":3,"right_gravity":true,"priority":4096,"virt_text_pos":"win_col","virt_text":[["▌","OpencodeToolBorder"]]}],[10,13,0,{"virt_text_hide":false,"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"ns_id":3,"right_gravity":true,"priority":4096,"virt_text_pos":"win_col","virt_text":[["▌","OpencodeToolBorder"]]}],[11,14,0,{"virt_text_hide":false,"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"ns_id":3,"right_gravity":true,"priority":4096,"virt_text_pos":"win_col","virt_text":[["▌","OpencodeToolBorder"]]}],[12,15,0,{"virt_text_hide":false,"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"ns_id":3,"right_gravity":true,"priority":4096,"virt_text_pos":"win_col","virt_text":[["▌","OpencodeToolBorder"]]}]],"actions":[],"timestamp":1762903199} \ No newline at end of file +{"actions":[],"extmarks":[[1,1,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-16 04:27:36)","OpencodeHint"],[" [msg_9eb45fbe60020xE560OGH3Vdoo]","OpencodeHint"]],"right_gravity":true,"ns_id":3,"priority":10,"virt_text_win_col":-3,"virt_text_hide":false}],[2,5,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"ns_id":3,"priority":4096,"virt_text_win_col":-1,"virt_text_hide":false}],[3,6,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"ns_id":3,"priority":4096,"virt_text_win_col":-1,"virt_text_hide":false}],[4,7,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"ns_id":3,"priority":4096,"virt_text_win_col":-1,"virt_text_hide":false}],[5,8,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"ns_id":3,"priority":4096,"virt_text_win_col":-1,"virt_text_hide":false}],[6,9,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"ns_id":3,"priority":4096,"virt_text_win_col":-1,"virt_text_hide":false}],[7,10,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"ns_id":3,"priority":4096,"virt_text_win_col":-1,"virt_text_hide":false}],[8,11,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"ns_id":3,"priority":4096,"virt_text_win_col":-1,"virt_text_hide":false}],[9,12,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"ns_id":3,"priority":4096,"virt_text_win_col":-1,"virt_text_hide":false}],[10,13,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"ns_id":3,"priority":4096,"virt_text_win_col":-1,"virt_text_hide":false}],[11,14,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"ns_id":3,"priority":4096,"virt_text_win_col":-1,"virt_text_hide":false}],[12,15,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"ns_id":3,"priority":4096,"virt_text_win_col":-1,"virt_text_hide":false}]],"timestamp":1766431564,"lines":["----","","","Perfect! Now I understand how it works. The message headers have extmarks with `virt_text` where the first element contains the icon (either `header_user` or `header_assistant`). Let me check the output_window module to understand the extmark namespace:","","** run** `Find extmark namespace usage`","","`````bash","> rg \"nvim_buf_get_extmarks|ns_id\" /Users/cam/Dev/neovim-dev/opencode.nvim/lua/opencode/ui/output_window.lua -B 2 -A 2","","`````","","> [!WARNING] Permission required to run this tool.",">","> Accept `a` Always `A` Deny `d`","",""]} \ No newline at end of file diff --git a/tests/data/permission.expected.json b/tests/data/permission.expected.json index 2397d2e6..e565ad57 100644 --- a/tests/data/permission.expected.json +++ b/tests/data/permission.expected.json @@ -1 +1 @@ -{"lines":["----","","","add a file, test.txt, with \":)\" in it","","----","","","** write** `test.txt`","","`````txt",":)","`````","","**󰻛 Created Snapshot** `c78fb2dd`","","----","","",""],"actions":[{"range":{"from":14,"to":14},"key":"R","display_line":14,"text":"[R]evert file","args":["c78fb2dd2d533cfe530692cc3e3c8f92a0e4af1d"],"type":"diff_revert_selected_file"},{"range":{"from":14,"to":14},"key":"A","display_line":14,"text":"Revert [A]ll","args":["c78fb2dd2d533cfe530692cc3e3c8f92a0e4af1d"],"type":"diff_revert_all"},{"range":{"from":14,"to":14},"key":"D","display_line":14,"text":"[D]iff","args":["c78fb2dd2d533cfe530692cc3e3c8f92a0e4af1d"],"type":"diff_open"}],"timestamp":1763500583,"extmarks":[[1,1,0,{"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-12 05:43:49)","OpencodeHint"],[" [msg_9d6f253910015UFmkGkiWtUsRW]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_repeat_linebreak":false,"priority":10,"virt_text_win_col":-3}],[2,2,0,{"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text_win_col":-3}],[3,3,0,{"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text_win_col":-3}],[4,6,0,{"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 05:43:49)","OpencodeHint"],[" [msg_9d6f253df001TjqxW12FAjGf5s]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_repeat_linebreak":false,"priority":10,"virt_text_win_col":-3}],[5,8,0,{"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text_win_col":-1}],[6,9,0,{"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text_win_col":-1}],[7,10,0,{"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text_win_col":-1}],[8,11,0,{"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text_win_col":-1}],[9,12,0,{"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text_win_col":-1}],[10,17,0,{"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 05:44:00)","OpencodeHint"],[" [msg_9d6f27f4800103Tp3N6i6JW53p]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_repeat_linebreak":false,"priority":10,"virt_text_win_col":-3}]]} \ No newline at end of file +{"timestamp":1766431565,"lines":["----","","","add a file, test.txt, with \":)\" in it","","----","","","** write** `test.txt`","","`````txt",":)","`````","","**󰻛 Created Snapshot** `c78fb2dd`","","----","","",""],"extmarks":[[1,1,0,{"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-12 05:43:49)","OpencodeHint"],[" [msg_9d6f253910015UFmkGkiWtUsRW]","OpencodeHint"]],"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false}],[2,2,0,{"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true}],[3,3,0,{"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true}],[4,6,0,{"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 05:43:49)","OpencodeHint"],[" [msg_9d6f253df001TjqxW12FAjGf5s]","OpencodeHint"]],"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false}],[5,8,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true}],[6,9,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true}],[7,10,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true}],[8,11,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true}],[9,12,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true}],[10,17,0,{"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 05:44:00)","OpencodeHint"],[" [msg_9d6f27f4800103Tp3N6i6JW53p]","OpencodeHint"]],"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false}]],"actions":[{"text":"[R]evert file","key":"R","range":{"from":14,"to":14},"display_line":14,"type":"diff_revert_selected_file","args":["c78fb2dd2d533cfe530692cc3e3c8f92a0e4af1d"]},{"text":"Revert [A]ll","key":"A","range":{"from":14,"to":14},"display_line":14,"type":"diff_revert_all","args":["c78fb2dd2d533cfe530692cc3e3c8f92a0e4af1d"]},{"text":"[D]iff","key":"D","range":{"from":14,"to":14},"display_line":14,"type":"diff_open","args":["c78fb2dd2d533cfe530692cc3e3c8f92a0e4af1d"]}]} \ No newline at end of file diff --git a/tests/data/planning.expected.json b/tests/data/planning.expected.json index a7d87a2a..b6ec54ef 100644 --- a/tests/data/planning.expected.json +++ b/tests/data/planning.expected.json @@ -1 +1 @@ -{"timestamp":1762903199,"extmarks":[[1,1,0,{"virt_text_hide":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-11 17:41:45)","OpencodeHint"],[" [msg_9d45d40c9001s7A1sP3Ew537QN]","OpencodeHint"]],"ns_id":3,"virt_text_win_col":-3,"priority":10,"virt_text_repeat_linebreak":false,"right_gravity":true,"virt_text_pos":"win_col"}],[2,2,0,{"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3,"virt_text_win_col":-3,"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"virt_text_pos":"win_col"}],[3,3,0,{"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3,"virt_text_win_col":-3,"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"virt_text_pos":"win_col"}],[4,4,0,{"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3,"virt_text_win_col":-3,"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"virt_text_pos":"win_col"}],[5,5,0,{"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3,"virt_text_win_col":-3,"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"virt_text_pos":"win_col"}],[6,8,0,{"virt_text_hide":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" claude-sonnet-4","OpencodeHint"],[" (2025-10-11 17:41:45)","OpencodeHint"],[" [msg_9d45d411b00254Lm5jVRwAeQxT]","OpencodeHint"]],"ns_id":3,"virt_text_win_col":-3,"priority":10,"virt_text_repeat_linebreak":false,"right_gravity":true,"virt_text_pos":"win_col"}],[7,12,0,{"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"virt_text_pos":"win_col"}],[8,13,0,{"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"virt_text_pos":"win_col"}],[9,14,0,{"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"virt_text_pos":"win_col"}],[10,15,0,{"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"virt_text_pos":"win_col"}],[11,16,0,{"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"virt_text_pos":"win_col"}],[12,19,0,{"virt_text_hide":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" claude-sonnet-4","OpencodeHint"],[" (2025-10-11 17:41:51)","OpencodeHint"],[" [msg_9d45d585800269UgJnOLD8i2pF]","OpencodeHint"]],"ns_id":3,"virt_text_win_col":-3,"priority":10,"virt_text_repeat_linebreak":false,"right_gravity":true,"virt_text_pos":"win_col"}],[13,24,0,{"virt_text_hide":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" claude-sonnet-4","OpencodeHint"],[" (2025-10-11 17:41:54)","OpencodeHint"],[" [msg_9d45d65b40026mDvwR5cCGTA30]","OpencodeHint"]],"ns_id":3,"virt_text_win_col":-3,"priority":10,"virt_text_repeat_linebreak":false,"right_gravity":true,"virt_text_pos":"win_col"}],[14,26,0,{"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"virt_text_pos":"win_col"}],[15,27,0,{"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"virt_text_pos":"win_col"}],[16,28,0,{"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"virt_text_pos":"win_col"}],[17,29,0,{"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"virt_text_pos":"win_col"}],[18,30,0,{"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"virt_text_pos":"win_col"}],[19,33,0,{"virt_text_hide":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" claude-sonnet-4","OpencodeHint"],[" (2025-10-11 17:41:58)","OpencodeHint"],[" [msg_9d45d7390002yE2ve5szXtMdw0]","OpencodeHint"]],"ns_id":3,"virt_text_win_col":-3,"priority":10,"virt_text_repeat_linebreak":false,"right_gravity":true,"virt_text_pos":"win_col"}]],"actions":[],"lines":["----","","","can you make a new neovim plugin for me?","","[a-empty.txt](a-empty.txt)","","----","","","I'll help you create a new Neovim plugin. Let me first examine your current setup and then create the plugin structure.","","**󰝖 plan** `4 todos`","- [ ] Examine existing Lua plugin structure ","- [ ] Create basic plugin directory structure ","- [ ] Write main plugin init.lua file ","- [ ] Create plugin documentation ","","----","","","** read** `init.lua`","","----","","","**󰝖 plan** `3 todos`","- [x] Examine existing Lua plugin structure ","- [-] Create basic plugin directory structure ","- [ ] Write main plugin init.lua file ","- [ ] Create plugin documentation ","","----","","","What would you like your Neovim plugin to do? I can see you have an example plugin structure already. I'll need to know:","","1. What functionality you want the plugin to provide","2. What you'd like to name it","3. Any specific features or commands you want to include","","Once you provide these details, I can create a complete plugin structure for you based on the pattern I see in your existing example-plugin.","",""]} \ No newline at end of file +{"extmarks":[[1,1,0,{"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-11 17:41:45)","OpencodeHint"],[" [msg_9d45d40c9001s7A1sP3Ew537QN]","OpencodeHint"]],"ns_id":3,"virt_text_win_col":-3,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_pos":"win_col"}],[2,2,0,{"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3,"virt_text_win_col":-3,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col"}],[3,3,0,{"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3,"virt_text_win_col":-3,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col"}],[4,4,0,{"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3,"virt_text_win_col":-3,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col"}],[5,5,0,{"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3,"virt_text_win_col":-3,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col"}],[6,8,0,{"right_gravity":true,"virt_text_hide":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" claude-sonnet-4","OpencodeHint"],[" (2025-10-11 17:41:45)","OpencodeHint"],[" [msg_9d45d411b00254Lm5jVRwAeQxT]","OpencodeHint"]],"ns_id":3,"virt_text_win_col":-3,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_pos":"win_col"}],[7,12,0,{"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col"}],[8,13,0,{"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col"}],[9,14,0,{"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col"}],[10,15,0,{"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col"}],[11,16,0,{"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col"}],[12,19,0,{"right_gravity":true,"virt_text_hide":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" claude-sonnet-4","OpencodeHint"],[" (2025-10-11 17:41:51)","OpencodeHint"],[" [msg_9d45d585800269UgJnOLD8i2pF]","OpencodeHint"]],"ns_id":3,"virt_text_win_col":-3,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_pos":"win_col"}],[13,24,0,{"right_gravity":true,"virt_text_hide":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" claude-sonnet-4","OpencodeHint"],[" (2025-10-11 17:41:54)","OpencodeHint"],[" [msg_9d45d65b40026mDvwR5cCGTA30]","OpencodeHint"]],"ns_id":3,"virt_text_win_col":-3,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_pos":"win_col"}],[14,26,0,{"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col"}],[15,27,0,{"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col"}],[16,28,0,{"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col"}],[17,29,0,{"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col"}],[18,30,0,{"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col"}],[19,33,0,{"right_gravity":true,"virt_text_hide":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" claude-sonnet-4","OpencodeHint"],[" (2025-10-11 17:41:58)","OpencodeHint"],[" [msg_9d45d7390002yE2ve5szXtMdw0]","OpencodeHint"]],"ns_id":3,"virt_text_win_col":-3,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_pos":"win_col"}]],"timestamp":1766431565,"lines":["----","","","can you make a new neovim plugin for me?","","[a-empty.txt](a-empty.txt)","","----","","","I'll help you create a new Neovim plugin. Let me first examine your current setup and then create the plugin structure.","","**󰝖 plan** `4 todos`","- [ ] Examine existing Lua plugin structure ","- [ ] Create basic plugin directory structure ","- [ ] Write main plugin init.lua file ","- [ ] Create plugin documentation ","","----","","","** read** `init.lua`","","----","","","**󰝖 plan** `3 todos`","- [x] Examine existing Lua plugin structure ","- [-] Create basic plugin directory structure ","- [ ] Write main plugin init.lua file ","- [ ] Create plugin documentation ","","----","","","What would you like your Neovim plugin to do? I can see you have an example plugin structure already. I'll need to know:","","1. What functionality you want the plugin to provide","2. What you'd like to name it","3. Any specific features or commands you want to include","","Once you provide these details, I can create a complete plugin structure for you based on the pattern I see in your existing example-plugin.","",""],"actions":[]} \ No newline at end of file diff --git a/tests/data/reasoning.expected.json b/tests/data/reasoning.expected.json index 9b22b431..539cf754 100644 --- a/tests/data/reasoning.expected.json +++ b/tests/data/reasoning.expected.json @@ -1 +1 @@ -{"lines":["----","","","Explain your plan, then provide the final title.","","----","","","**󰧑 Reasoning (2025-12-17 19:33:20 - 2025-12-17 19:33:21)** ","","The user is asking me to explain my plan and then provide a final title. I need to think through what they're asking for. It seems like they want me to demonstrate reasoning capabilities - showing my thought process before giving an answer. Let me break this down into steps.","","1. First, I should understand what kind of title they want - is this for a project, document, or something else?","2. Since they didn't specify the context, I should provide a general approach","3. I'll demonstrate my reasoning process transparently","4. Then I'll give them a concrete example title","","Given that this appears to be related to the OpenCode project (based on the file structure I can see), I should provide a title that reflects the nature of this AI coding assistant tool.","","Based on my reasoning above, here's my plan:","","1. Acknowledge the request for demonstrating reasoning","2. Show transparency in my thought process","3. Provide context-appropriate suggestions","","For the title, considering this is the OpenCode Neovim plugin - an AI-powered coding assistant - a good title would be:","","**\"OpenCode.nvim: AI-Powered Coding Assistant for Neovim\"**","","This title clearly identifies what the tool is (OpenCode), the platform it works with (Neovim), and its primary function (AI-powered coding assistance).","",""],"actions":[],"extmarks":[[1,1,0,{"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-12-17 19:33:20)","OpencodeHint"],[" [msg_reason_user1]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_hide":false,"priority":10,"virt_text_repeat_linebreak":false,"right_gravity":true,"virt_text_win_col":-3,"ns_id":3}],[2,2,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"virt_text_win_col":-3,"ns_id":3}],[3,3,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"virt_text_win_col":-3,"ns_id":3}],[4,6,0,{"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4","OpencodeHint"],[" (2025-12-17 19:33:20)","OpencodeHint"],[" [msg_reason_asst1]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_hide":false,"priority":10,"virt_text_repeat_linebreak":false,"right_gravity":true,"virt_text_win_col":-3,"ns_id":3}],[5,8,0,{"line_hl_group":"OpencodeReasoningText","right_gravity":true,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[6,9,0,{"line_hl_group":"OpencodeReasoningText","right_gravity":true,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[7,10,0,{"line_hl_group":"OpencodeReasoningText","right_gravity":true,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[8,11,0,{"line_hl_group":"OpencodeReasoningText","right_gravity":true,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[9,12,0,{"line_hl_group":"OpencodeReasoningText","right_gravity":true,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[10,13,0,{"line_hl_group":"OpencodeReasoningText","right_gravity":true,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[11,14,0,{"line_hl_group":"OpencodeReasoningText","right_gravity":true,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[12,15,0,{"line_hl_group":"OpencodeReasoningText","right_gravity":true,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[13,16,0,{"line_hl_group":"OpencodeReasoningText","right_gravity":true,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[14,17,0,{"line_hl_group":"OpencodeReasoningText","right_gravity":true,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[15,18,0,{"line_hl_group":"OpencodeReasoningText","right_gravity":true,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}]],"timestamp":1766413340} +{"actions":[],"extmarks":[[1,1,0,{"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-12-17 19:33:20)","OpencodeHint"],[" [msg_reason_user1]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10,"virt_text_repeat_linebreak":false,"ns_id":3}],[2,2,0,{"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3}],[3,3,0,{"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3}],[4,6,0,{"right_gravity":true,"virt_text_hide":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4","OpencodeHint"],[" (2025-12-17 19:33:20)","OpencodeHint"],[" [msg_reason_asst1]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10,"virt_text_repeat_linebreak":false,"ns_id":3}],[5,8,0,{"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"line_hl_group":"OpencodeReasoningText"}],[6,9,0,{"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"line_hl_group":"OpencodeReasoningText"}],[7,10,0,{"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"line_hl_group":"OpencodeReasoningText"}],[8,11,0,{"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"line_hl_group":"OpencodeReasoningText"}],[9,12,0,{"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"line_hl_group":"OpencodeReasoningText"}],[10,13,0,{"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"line_hl_group":"OpencodeReasoningText"}],[11,14,0,{"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"line_hl_group":"OpencodeReasoningText"}],[12,15,0,{"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"line_hl_group":"OpencodeReasoningText"}],[13,16,0,{"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"line_hl_group":"OpencodeReasoningText"}],[14,17,0,{"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"line_hl_group":"OpencodeReasoningText"}],[15,18,0,{"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"line_hl_group":"OpencodeReasoningText"}]],"timestamp":1766431565,"lines":["----","","","Explain your plan, then provide the final title.","","----","","","**󰧑 Reasoning (2025-12-17 19:33:20 - 2025-12-17 19:33:21)** ","","The user is asking me to explain my plan and then provide a final title. I need to think through what they're asking for. It seems like they want me to demonstrate reasoning capabilities - showing my thought process before giving an answer. Let me break this down into steps.","","1. First, I should understand what kind of title they want - is this for a project, document, or something else?","2. Since they didn't specify the context, I should provide a general approach","3. I'll demonstrate my reasoning process transparently","4. Then I'll give them a concrete example title","","Given that this appears to be related to the OpenCode project (based on the file structure I can see), I should provide a title that reflects the nature of this AI coding assistant tool.","","Based on my reasoning above, here's my plan:","","1. Acknowledge the request for demonstrating reasoning","2. Show transparency in my thought process","3. Provide context-appropriate suggestions","","For the title, considering this is the OpenCode Neovim plugin - an AI-powered coding assistant - a good title would be:","","**\"OpenCode.nvim: AI-Powered Coding Assistant for Neovim\"**","","This title clearly identifies what the tool is (OpenCode), the platform it works with (Neovim), and its primary function (AI-powered coding assistance).","",""]} \ No newline at end of file diff --git a/tests/data/redo-all.expected.json b/tests/data/redo-all.expected.json index 5e5f1688..4be6be48 100644 --- a/tests/data/redo-all.expected.json +++ b/tests/data/redo-all.expected.json @@ -1 +1 @@ -{"extmarks":[[1,1,0,{"ns_id":3,"virt_text_hide":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-20 15:20:02)","OpencodeHint"],[" [msg_a0234c0b7001y2o9S1jMaNVZar]","OpencodeHint"]],"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"priority":10,"virt_text_pos":"win_col","right_gravity":true}],[2,2,0,{"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"priority":4096,"virt_text_pos":"win_col","right_gravity":true}],[3,3,0,{"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"priority":4096,"virt_text_pos":"win_col","right_gravity":true}],[4,4,0,{"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"priority":4096,"virt_text_pos":"win_col","right_gravity":true}],[5,5,0,{"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"priority":4096,"virt_text_pos":"win_col","right_gravity":true}],[6,8,0,{"ns_id":3,"virt_text_hide":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-20 15:20:04)","OpencodeHint"],[" [msg_a0234c7960011LTxTvD94hfWCi]","OpencodeHint"]],"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"priority":10,"virt_text_pos":"win_col","right_gravity":true}],[7,12,0,{"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","right_gravity":true}],[8,13,0,{"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","right_gravity":true}],[9,14,0,{"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","right_gravity":true}],[10,15,0,{"hl_group":"OpencodeDiffDelete","virt_text":[["-","OpencodeDiffDelete"]],"virt_text_pos":"overlay","end_col":0,"end_row":16,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"ns_id":3,"priority":5000,"right_gravity":true}],[11,15,0,{"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","right_gravity":true}],[12,16,0,{"hl_group":"OpencodeDiffAdd","virt_text":[["+","OpencodeDiffAdd"]],"virt_text_pos":"overlay","end_col":0,"end_row":17,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"ns_id":3,"priority":5000,"right_gravity":true}],[13,16,0,{"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","right_gravity":true}],[14,17,0,{"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","right_gravity":true}],[15,18,0,{"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","right_gravity":true}],[16,19,0,{"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","right_gravity":true}],[17,20,0,{"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","right_gravity":true}],[18,25,0,{"ns_id":3,"virt_text_hide":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-20 15:20:09)","OpencodeHint"],[" [msg_a0234d8fb001SXyngLjuKSuxOY]","OpencodeHint"]],"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"priority":10,"virt_text_pos":"win_col","right_gravity":true}],[19,30,0,{"ns_id":3,"virt_text_hide":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-20 15:20:11)","OpencodeHint"],[" [msg_a0234e308001SKl5bQUibp5gtI]","OpencodeHint"]],"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"priority":10,"virt_text_pos":"win_col","right_gravity":true}],[20,31,0,{"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"priority":4096,"virt_text_pos":"win_col","right_gravity":true}],[21,32,0,{"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"priority":4096,"virt_text_pos":"win_col","right_gravity":true}],[22,35,0,{"ns_id":3,"virt_text_hide":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-20 15:20:11)","OpencodeHint"],[" [msg_a0234e31f001m4EsQdPmY3PTtS]","OpencodeHint"]],"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"priority":10,"virt_text_pos":"win_col","right_gravity":true}],[23,42,0,{"ns_id":3,"virt_text_hide":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-20 15:20:16)","OpencodeHint"],[" [msg_a0234f482001PQbMjWc6W8s0eF]","OpencodeHint"]],"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"priority":10,"virt_text_pos":"win_col","right_gravity":true}],[24,46,0,{"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","right_gravity":true}],[25,47,0,{"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","right_gravity":true}],[26,48,0,{"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","right_gravity":true}],[27,49,0,{"hl_group":"OpencodeDiffDelete","virt_text":[["-","OpencodeDiffDelete"]],"virt_text_pos":"overlay","end_col":0,"end_row":50,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"ns_id":3,"priority":5000,"right_gravity":true}],[28,49,0,{"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","right_gravity":true}],[29,50,0,{"hl_group":"OpencodeDiffAdd","virt_text":[["+","OpencodeDiffAdd"]],"virt_text_pos":"overlay","end_col":0,"end_row":51,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"ns_id":3,"priority":5000,"right_gravity":true}],[30,50,0,{"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","right_gravity":true}],[31,51,0,{"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","right_gravity":true}],[32,52,0,{"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","right_gravity":true}],[33,53,0,{"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","right_gravity":true}],[34,54,0,{"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","right_gravity":true}],[35,59,0,{"ns_id":3,"virt_text_hide":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-20 15:20:17)","OpencodeHint"],[" [msg_a0234f9c6001JCKYaca1HHwwx6]","OpencodeHint"]],"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"priority":10,"virt_text_pos":"win_col","right_gravity":true}],[36,64,0,{"ns_id":3,"virt_text_hide":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-20 15:22:29)","OpencodeHint"],[" [msg_a0236fd1c001TlwqL8fwvq529i]","OpencodeHint"]],"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"priority":10,"virt_text_pos":"win_col","right_gravity":true}],[37,65,0,{"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"priority":4096,"virt_text_pos":"win_col","right_gravity":true}],[38,66,0,{"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"priority":4096,"virt_text_pos":"win_col","right_gravity":true}],[39,69,0,{"ns_id":3,"virt_text_hide":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-20 15:22:29)","OpencodeHint"],[" [msg_a0236fd57001pTnTjSBdFlleCb]","OpencodeHint"]],"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"priority":10,"virt_text_pos":"win_col","right_gravity":true}],[40,76,0,{"ns_id":3,"virt_text_hide":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-20 15:22:34)","OpencodeHint"],[" [msg_a02371241001PBQAsr8Oc9hqNI]","OpencodeHint"]],"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"priority":10,"virt_text_pos":"win_col","right_gravity":true}],[41,80,0,{"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","right_gravity":true}],[42,81,0,{"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","right_gravity":true}],[43,82,0,{"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","right_gravity":true}],[44,83,0,{"hl_group":"OpencodeDiffDelete","virt_text":[["-","OpencodeDiffDelete"]],"virt_text_pos":"overlay","end_col":0,"end_row":84,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"ns_id":3,"priority":5000,"right_gravity":true}],[45,83,0,{"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","right_gravity":true}],[46,84,0,{"hl_group":"OpencodeDiffAdd","virt_text":[["+","OpencodeDiffAdd"]],"virt_text_pos":"overlay","end_col":0,"end_row":85,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"ns_id":3,"priority":5000,"right_gravity":true}],[47,84,0,{"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","right_gravity":true}],[48,85,0,{"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","right_gravity":true}],[49,86,0,{"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","right_gravity":true}],[50,87,0,{"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","right_gravity":true}],[51,88,0,{"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","right_gravity":true}],[52,93,0,{"ns_id":3,"virt_text_hide":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-20 15:22:39)","OpencodeHint"],[" [msg_a023723d0001r87MaJThFssUw1]","OpencodeHint"]],"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"priority":10,"virt_text_pos":"win_col","right_gravity":true}]],"timestamp":1763500630,"lines":["----","","","add another word","","[test.txt](test.txt)","","----","","","I'll append a single word (\"again\") to the first line of `test.txt`. Applying a precise edit to the existing line now.","","** edit** `test.txt`","","`````txt"," tangram quiver saffron nebula cobalt murmur plinth zephyr ember lattice cadenza another yet extra more"," tangram quiver saffron nebula cobalt murmur plinth zephyr ember lattice cadenza another yet extra more again"," "," ","","`````","","**󰻛 Created Snapshot** `1b6ba655`","","----","","","**Done:** added the word `again` to `test.txt`.","","----","","","add another word","","----","","","I'll read `test.txt` to get the current first-line content, then append one word (\"again2\") to that line. Proceeding to read the file.","","** read** `test.txt`","","----","","","Now I'll append the word \"again2\" to the first line. I'll apply an exact in-place edit to update that line.","","** edit** `test.txt`","","`````txt"," tangram quiver saffron nebula cobalt murmur plinth zephyr ember lattice cadenza another yet extra more again"," tangram quiver saffron nebula cobalt murmur plinth zephyr ember lattice cadenza another yet extra more again again2"," "," ","","`````","","**󰻛 Created Snapshot** `57d83f55`","","----","","","**Done:** appended the word `again2` to `test.txt`.","","----","","","add another word","","----","","","I'll read `test.txt` to get the current first-line content, then append the word `again3`. Proceeding to read the file.","","** read** `test.txt`","","----","","","I'll append the word \"again3\" to the first line of `test.txt` with an exact in-place edit. Applying the change now.","","** edit** `test.txt`","","`````txt"," tangram quiver saffron nebula cobalt murmur plinth zephyr ember lattice cadenza another yet extra more again again2"," tangram quiver saffron nebula cobalt murmur plinth zephyr ember lattice cadenza another yet extra more again again2 again3"," "," ","","`````","","**󰻛 Created Snapshot** `d988cc85`","","----","","","**Done:** appended the word `again3` to `test.txt`.","",""],"actions":[{"key":"R","range":{"to":90,"from":90},"text":"[R]evert file","type":"diff_revert_selected_file","args":["d988cc85565b99017d40ad8baea20225165be9d5"],"display_line":90},{"key":"A","range":{"to":90,"from":90},"text":"Revert [A]ll","type":"diff_revert_all","args":["d988cc85565b99017d40ad8baea20225165be9d5"],"display_line":90},{"key":"D","range":{"to":90,"from":90},"text":"[D]iff","type":"diff_open","args":["d988cc85565b99017d40ad8baea20225165be9d5"],"display_line":90},{"key":"R","range":{"to":56,"from":56},"text":"[R]evert file","type":"diff_revert_selected_file","args":["57d83f5596cb1f142fbc681d3d93b7184f7f73cd"],"display_line":56},{"key":"A","range":{"to":56,"from":56},"text":"Revert [A]ll","type":"diff_revert_all","args":["57d83f5596cb1f142fbc681d3d93b7184f7f73cd"],"display_line":56},{"key":"D","range":{"to":56,"from":56},"text":"[D]iff","type":"diff_open","args":["57d83f5596cb1f142fbc681d3d93b7184f7f73cd"],"display_line":56},{"key":"R","range":{"to":22,"from":22},"text":"[R]evert file","type":"diff_revert_selected_file","args":["1b6ba655c6c0d899965adff278ac6320d5fc3b12"],"display_line":22},{"key":"A","range":{"to":22,"from":22},"text":"Revert [A]ll","type":"diff_revert_all","args":["1b6ba655c6c0d899965adff278ac6320d5fc3b12"],"display_line":22},{"key":"D","range":{"to":22,"from":22},"text":"[D]iff","type":"diff_open","args":["1b6ba655c6c0d899965adff278ac6320d5fc3b12"],"display_line":22}]} \ No newline at end of file +{"lines":["----","","","add another word","","[test.txt](test.txt)","","----","","","I'll append a single word (\"again\") to the first line of `test.txt`. Applying a precise edit to the existing line now.","","** edit** `test.txt`","","`````txt"," tangram quiver saffron nebula cobalt murmur plinth zephyr ember lattice cadenza another yet extra more"," tangram quiver saffron nebula cobalt murmur plinth zephyr ember lattice cadenza another yet extra more again"," "," ","","`````","","**󰻛 Created Snapshot** `1b6ba655`","","----","","","**Done:** added the word `again` to `test.txt`.","","----","","","add another word","","----","","","I'll read `test.txt` to get the current first-line content, then append one word (\"again2\") to that line. Proceeding to read the file.","","** read** `test.txt`","","----","","","Now I'll append the word \"again2\" to the first line. I'll apply an exact in-place edit to update that line.","","** edit** `test.txt`","","`````txt"," tangram quiver saffron nebula cobalt murmur plinth zephyr ember lattice cadenza another yet extra more again"," tangram quiver saffron nebula cobalt murmur plinth zephyr ember lattice cadenza another yet extra more again again2"," "," ","","`````","","**󰻛 Created Snapshot** `57d83f55`","","----","","","**Done:** appended the word `again2` to `test.txt`.","","----","","","add another word","","----","","","I'll read `test.txt` to get the current first-line content, then append the word `again3`. Proceeding to read the file.","","** read** `test.txt`","","----","","","I'll append the word \"again3\" to the first line of `test.txt` with an exact in-place edit. Applying the change now.","","** edit** `test.txt`","","`````txt"," tangram quiver saffron nebula cobalt murmur plinth zephyr ember lattice cadenza another yet extra more again again2"," tangram quiver saffron nebula cobalt murmur plinth zephyr ember lattice cadenza another yet extra more again again2 again3"," "," ","","`````","","**󰻛 Created Snapshot** `d988cc85`","","----","","","**Done:** appended the word `again3` to `test.txt`.","",""],"extmarks":[[1,1,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":10,"virt_text_hide":false,"virt_text_win_col":-3,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-20 15:20:02)","OpencodeHint"],[" [msg_a0234c0b7001y2o9S1jMaNVZar]","OpencodeHint"]]}],[2,2,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-3,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[3,3,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-3,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[4,4,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-3,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[5,5,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-3,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[6,8,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":10,"virt_text_hide":false,"virt_text_win_col":-3,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-20 15:20:04)","OpencodeHint"],[" [msg_a0234c7960011LTxTvD94hfWCi]","OpencodeHint"]]}],[7,12,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-1,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[8,13,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-1,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[9,14,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-1,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[10,15,0,{"right_gravity":true,"virt_text":[["-","OpencodeDiffDelete"]],"hl_group":"OpencodeDiffDelete","end_col":0,"end_row":16,"hl_eol":true,"priority":5000,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text_pos":"overlay","end_right_gravity":false}],[11,15,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-1,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[12,16,0,{"right_gravity":true,"virt_text":[["+","OpencodeDiffAdd"]],"hl_group":"OpencodeDiffAdd","end_col":0,"end_row":17,"hl_eol":true,"priority":5000,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text_pos":"overlay","end_right_gravity":false}],[13,16,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-1,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[14,17,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-1,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[15,18,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-1,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[16,19,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-1,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[17,20,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-1,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[18,25,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":10,"virt_text_hide":false,"virt_text_win_col":-3,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-20 15:20:09)","OpencodeHint"],[" [msg_a0234d8fb001SXyngLjuKSuxOY]","OpencodeHint"]]}],[19,30,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":10,"virt_text_hide":false,"virt_text_win_col":-3,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-20 15:20:11)","OpencodeHint"],[" [msg_a0234e308001SKl5bQUibp5gtI]","OpencodeHint"]]}],[20,31,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-3,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[21,32,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-3,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[22,35,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":10,"virt_text_hide":false,"virt_text_win_col":-3,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-20 15:20:11)","OpencodeHint"],[" [msg_a0234e31f001m4EsQdPmY3PTtS]","OpencodeHint"]]}],[23,42,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":10,"virt_text_hide":false,"virt_text_win_col":-3,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-20 15:20:16)","OpencodeHint"],[" [msg_a0234f482001PQbMjWc6W8s0eF]","OpencodeHint"]]}],[24,46,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-1,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[25,47,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-1,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[26,48,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-1,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[27,49,0,{"right_gravity":true,"virt_text":[["-","OpencodeDiffDelete"]],"hl_group":"OpencodeDiffDelete","end_col":0,"end_row":50,"hl_eol":true,"priority":5000,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text_pos":"overlay","end_right_gravity":false}],[28,49,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-1,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[29,50,0,{"right_gravity":true,"virt_text":[["+","OpencodeDiffAdd"]],"hl_group":"OpencodeDiffAdd","end_col":0,"end_row":51,"hl_eol":true,"priority":5000,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text_pos":"overlay","end_right_gravity":false}],[30,50,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-1,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[31,51,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-1,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[32,52,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-1,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[33,53,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-1,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[34,54,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-1,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[35,59,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":10,"virt_text_hide":false,"virt_text_win_col":-3,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-20 15:20:17)","OpencodeHint"],[" [msg_a0234f9c6001JCKYaca1HHwwx6]","OpencodeHint"]]}],[36,64,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":10,"virt_text_hide":false,"virt_text_win_col":-3,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-20 15:22:29)","OpencodeHint"],[" [msg_a0236fd1c001TlwqL8fwvq529i]","OpencodeHint"]]}],[37,65,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-3,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[38,66,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-3,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[39,69,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":10,"virt_text_hide":false,"virt_text_win_col":-3,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-20 15:22:29)","OpencodeHint"],[" [msg_a0236fd57001pTnTjSBdFlleCb]","OpencodeHint"]]}],[40,76,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":10,"virt_text_hide":false,"virt_text_win_col":-3,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-20 15:22:34)","OpencodeHint"],[" [msg_a02371241001PBQAsr8Oc9hqNI]","OpencodeHint"]]}],[41,80,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-1,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[42,81,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-1,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[43,82,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-1,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[44,83,0,{"right_gravity":true,"virt_text":[["-","OpencodeDiffDelete"]],"hl_group":"OpencodeDiffDelete","end_col":0,"end_row":84,"hl_eol":true,"priority":5000,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text_pos":"overlay","end_right_gravity":false}],[45,83,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-1,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[46,84,0,{"right_gravity":true,"virt_text":[["+","OpencodeDiffAdd"]],"hl_group":"OpencodeDiffAdd","end_col":0,"end_row":85,"hl_eol":true,"priority":5000,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text_pos":"overlay","end_right_gravity":false}],[47,84,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-1,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[48,85,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-1,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[49,86,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-1,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[50,87,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-1,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[51,88,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-1,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[52,93,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":10,"virt_text_hide":false,"virt_text_win_col":-3,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-20 15:22:39)","OpencodeHint"],[" [msg_a023723d0001r87MaJThFssUw1]","OpencodeHint"]]}]],"actions":[{"type":"diff_revert_selected_file","range":{"from":56,"to":56},"text":"[R]evert file","key":"R","args":["57d83f5596cb1f142fbc681d3d93b7184f7f73cd"],"display_line":56},{"type":"diff_revert_all","range":{"from":56,"to":56},"text":"Revert [A]ll","key":"A","args":["57d83f5596cb1f142fbc681d3d93b7184f7f73cd"],"display_line":56},{"type":"diff_open","range":{"from":56,"to":56},"text":"[D]iff","key":"D","args":["57d83f5596cb1f142fbc681d3d93b7184f7f73cd"],"display_line":56},{"type":"diff_revert_selected_file","range":{"from":90,"to":90},"text":"[R]evert file","key":"R","args":["d988cc85565b99017d40ad8baea20225165be9d5"],"display_line":90},{"type":"diff_revert_all","range":{"from":90,"to":90},"text":"Revert [A]ll","key":"A","args":["d988cc85565b99017d40ad8baea20225165be9d5"],"display_line":90},{"type":"diff_open","range":{"from":90,"to":90},"text":"[D]iff","key":"D","args":["d988cc85565b99017d40ad8baea20225165be9d5"],"display_line":90},{"type":"diff_revert_selected_file","range":{"from":22,"to":22},"text":"[R]evert file","key":"R","args":["1b6ba655c6c0d899965adff278ac6320d5fc3b12"],"display_line":22},{"type":"diff_revert_all","range":{"from":22,"to":22},"text":"Revert [A]ll","key":"A","args":["1b6ba655c6c0d899965adff278ac6320d5fc3b12"],"display_line":22},{"type":"diff_open","range":{"from":22,"to":22},"text":"[D]iff","key":"D","args":["1b6ba655c6c0d899965adff278ac6320d5fc3b12"],"display_line":22}],"timestamp":1766431566} \ No newline at end of file diff --git a/tests/data/redo-once.expected.json b/tests/data/redo-once.expected.json index 0d48afd3..ab44dccf 100644 --- a/tests/data/redo-once.expected.json +++ b/tests/data/redo-once.expected.json @@ -1 +1 @@ -{"extmarks":[[1,1,0,{"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-20 15:20:02)","OpencodeHint"],[" [msg_a0234c0b7001y2o9S1jMaNVZar]","OpencodeHint"]],"virt_text_repeat_linebreak":false,"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10}],[2,2,0,{"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[3,3,0,{"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[4,4,0,{"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[5,5,0,{"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[6,8,0,{"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-20 15:20:04)","OpencodeHint"],[" [msg_a0234c7960011LTxTvD94hfWCi]","OpencodeHint"]],"virt_text_repeat_linebreak":false,"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10}],[7,12,0,{"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[8,13,0,{"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[9,14,0,{"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[10,15,0,{"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"end_row":16,"ns_id":3,"hl_group":"OpencodeDiffDelete","right_gravity":true,"virt_text":[["-","OpencodeDiffDelete"]],"virt_text_pos":"overlay","end_col":0,"priority":5000}],[11,15,0,{"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[12,16,0,{"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"end_row":17,"ns_id":3,"hl_group":"OpencodeDiffAdd","right_gravity":true,"virt_text":[["+","OpencodeDiffAdd"]],"virt_text_pos":"overlay","end_col":0,"priority":5000}],[13,16,0,{"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[14,17,0,{"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[15,18,0,{"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[16,19,0,{"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[17,20,0,{"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[18,25,0,{"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-20 15:20:09)","OpencodeHint"],[" [msg_a0234d8fb001SXyngLjuKSuxOY]","OpencodeHint"]],"virt_text_repeat_linebreak":false,"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10}],[19,30,0,{"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-20 15:20:11)","OpencodeHint"],[" [msg_a0234e308001SKl5bQUibp5gtI]","OpencodeHint"]],"virt_text_repeat_linebreak":false,"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10}],[20,31,0,{"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[21,32,0,{"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[22,35,0,{"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-20 15:20:11)","OpencodeHint"],[" [msg_a0234e31f001m4EsQdPmY3PTtS]","OpencodeHint"]],"virt_text_repeat_linebreak":false,"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10}],[23,42,0,{"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-20 15:20:16)","OpencodeHint"],[" [msg_a0234f482001PQbMjWc6W8s0eF]","OpencodeHint"]],"virt_text_repeat_linebreak":false,"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10}],[24,46,0,{"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[25,47,0,{"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[26,48,0,{"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[27,49,0,{"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"end_row":50,"ns_id":3,"hl_group":"OpencodeDiffDelete","right_gravity":true,"virt_text":[["-","OpencodeDiffDelete"]],"virt_text_pos":"overlay","end_col":0,"priority":5000}],[28,49,0,{"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[29,50,0,{"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"end_row":51,"ns_id":3,"hl_group":"OpencodeDiffAdd","right_gravity":true,"virt_text":[["+","OpencodeDiffAdd"]],"virt_text_pos":"overlay","end_col":0,"priority":5000}],[30,50,0,{"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[31,51,0,{"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[32,52,0,{"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[33,53,0,{"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[34,54,0,{"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[35,59,0,{"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-20 15:20:17)","OpencodeHint"],[" [msg_a0234f9c6001JCKYaca1HHwwx6]","OpencodeHint"]],"virt_text_repeat_linebreak":false,"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10}],[36,69,0,{"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["+1","OpencodeDiffAddText"]],"virt_text_repeat_linebreak":false,"virt_text_pos":"win_col","virt_text_win_col":12,"priority":1000}],[37,69,0,{"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text":[["-1","OpencodeDiffDeleteText"]],"virt_text_repeat_linebreak":false,"virt_text_pos":"win_col","virt_text_win_col":15,"priority":1000}]],"timestamp":1763500680,"lines":["----","","","add another word","","[test.txt](test.txt)","","----","","","I'll append a single word (\"again\") to the first line of `test.txt`. Applying a precise edit to the existing line now.","","** edit** `test.txt`","","`````txt"," tangram quiver saffron nebula cobalt murmur plinth zephyr ember lattice cadenza another yet extra more"," tangram quiver saffron nebula cobalt murmur plinth zephyr ember lattice cadenza another yet extra more again"," "," ","","`````","","**󰻛 Created Snapshot** `1b6ba655`","","----","","","**Done:** added the word `again` to `test.txt`.","","----","","","add another word","","----","","","I'll read `test.txt` to get the current first-line content, then append one word (\"again2\") to that line. Proceeding to read the file.","","** read** `test.txt`","","----","","","Now I'll append the word \"again2\" to the first line. I'll apply an exact in-place edit to update that line.","","** edit** `test.txt`","","`````txt"," tangram quiver saffron nebula cobalt murmur plinth zephyr ember lattice cadenza another yet extra more again"," tangram quiver saffron nebula cobalt murmur plinth zephyr ember lattice cadenza another yet extra more again again2"," "," ","","`````","","**󰻛 Created Snapshot** `57d83f55`","","----","","","**Done:** appended the word `again2` to `test.txt`.","","----","","> 1 message reverted, 2 tool calls reverted",">","> type `/redo` to restore.",""," test.txt: +1 -1",""],"actions":[{"text":"[R]evert file","key":"R","type":"diff_revert_selected_file","display_line":56,"range":{"to":56,"from":56},"args":["57d83f5596cb1f142fbc681d3d93b7184f7f73cd"]},{"text":"Revert [A]ll","key":"A","type":"diff_revert_all","display_line":56,"range":{"to":56,"from":56},"args":["57d83f5596cb1f142fbc681d3d93b7184f7f73cd"]},{"text":"[D]iff","key":"D","type":"diff_open","display_line":56,"range":{"to":56,"from":56},"args":["57d83f5596cb1f142fbc681d3d93b7184f7f73cd"]},{"text":"[R]evert file","key":"R","type":"diff_revert_selected_file","display_line":22,"range":{"to":22,"from":22},"args":["1b6ba655c6c0d899965adff278ac6320d5fc3b12"]},{"text":"Revert [A]ll","key":"A","type":"diff_revert_all","display_line":22,"range":{"to":22,"from":22},"args":["1b6ba655c6c0d899965adff278ac6320d5fc3b12"]},{"text":"[D]iff","key":"D","type":"diff_open","display_line":22,"range":{"to":22,"from":22},"args":["1b6ba655c6c0d899965adff278ac6320d5fc3b12"]}]} \ No newline at end of file +{"lines":["----","","","add another word","","[test.txt](test.txt)","","----","","","I'll append a single word (\"again\") to the first line of `test.txt`. Applying a precise edit to the existing line now.","","** edit** `test.txt`","","`````txt"," tangram quiver saffron nebula cobalt murmur plinth zephyr ember lattice cadenza another yet extra more"," tangram quiver saffron nebula cobalt murmur plinth zephyr ember lattice cadenza another yet extra more again"," "," ","","`````","","**󰻛 Created Snapshot** `1b6ba655`","","----","","","**Done:** added the word `again` to `test.txt`.","","----","","","add another word","","----","","","I'll read `test.txt` to get the current first-line content, then append one word (\"again2\") to that line. Proceeding to read the file.","","** read** `test.txt`","","----","","","Now I'll append the word \"again2\" to the first line. I'll apply an exact in-place edit to update that line.","","** edit** `test.txt`","","`````txt"," tangram quiver saffron nebula cobalt murmur plinth zephyr ember lattice cadenza another yet extra more again"," tangram quiver saffron nebula cobalt murmur plinth zephyr ember lattice cadenza another yet extra more again again2"," "," ","","`````","","**󰻛 Created Snapshot** `57d83f55`","","----","","","**Done:** appended the word `again2` to `test.txt`.","","----","","> 1 message reverted, 2 tool calls reverted",">","> type `/redo` to restore.",""," test.txt: +1 -1",""],"timestamp":1766431566,"actions":[{"type":"diff_revert_selected_file","key":"R","display_line":22,"range":{"to":22,"from":22},"args":["1b6ba655c6c0d899965adff278ac6320d5fc3b12"],"text":"[R]evert file"},{"type":"diff_revert_all","key":"A","display_line":22,"range":{"to":22,"from":22},"args":["1b6ba655c6c0d899965adff278ac6320d5fc3b12"],"text":"Revert [A]ll"},{"type":"diff_open","key":"D","display_line":22,"range":{"to":22,"from":22},"args":["1b6ba655c6c0d899965adff278ac6320d5fc3b12"],"text":"[D]iff"},{"type":"diff_revert_selected_file","key":"R","display_line":56,"range":{"to":56,"from":56},"args":["57d83f5596cb1f142fbc681d3d93b7184f7f73cd"],"text":"[R]evert file"},{"type":"diff_revert_all","key":"A","display_line":56,"range":{"to":56,"from":56},"args":["57d83f5596cb1f142fbc681d3d93b7184f7f73cd"],"text":"Revert [A]ll"},{"type":"diff_open","key":"D","display_line":56,"range":{"to":56,"from":56},"args":["57d83f5596cb1f142fbc681d3d93b7184f7f73cd"],"text":"[D]iff"}],"extmarks":[[1,1,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-20 15:20:02)","OpencodeHint"],[" [msg_a0234c0b7001y2o9S1jMaNVZar]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10}],[2,2,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[3,3,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[4,4,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[5,5,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[6,8,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-20 15:20:04)","OpencodeHint"],[" [msg_a0234c7960011LTxTvD94hfWCi]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10}],[7,12,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[8,13,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[9,14,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[10,15,0,{"virt_text_hide":false,"virt_text_repeat_linebreak":false,"right_gravity":true,"ns_id":3,"end_right_gravity":false,"end_col":0,"end_row":16,"hl_group":"OpencodeDiffDelete","virt_text":[["-","OpencodeDiffDelete"]],"virt_text_pos":"overlay","hl_eol":true,"priority":5000}],[11,15,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[12,16,0,{"virt_text_hide":false,"virt_text_repeat_linebreak":false,"right_gravity":true,"ns_id":3,"end_right_gravity":false,"end_col":0,"end_row":17,"hl_group":"OpencodeDiffAdd","virt_text":[["+","OpencodeDiffAdd"]],"virt_text_pos":"overlay","hl_eol":true,"priority":5000}],[13,16,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[14,17,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[15,18,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[16,19,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[17,20,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[18,25,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-20 15:20:09)","OpencodeHint"],[" [msg_a0234d8fb001SXyngLjuKSuxOY]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10}],[19,30,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-20 15:20:11)","OpencodeHint"],[" [msg_a0234e308001SKl5bQUibp5gtI]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10}],[20,31,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[21,32,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[22,35,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-20 15:20:11)","OpencodeHint"],[" [msg_a0234e31f001m4EsQdPmY3PTtS]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10}],[23,42,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-20 15:20:16)","OpencodeHint"],[" [msg_a0234f482001PQbMjWc6W8s0eF]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10}],[24,46,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[25,47,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[26,48,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[27,49,0,{"virt_text_hide":false,"virt_text_repeat_linebreak":false,"right_gravity":true,"ns_id":3,"end_right_gravity":false,"end_col":0,"end_row":50,"hl_group":"OpencodeDiffDelete","virt_text":[["-","OpencodeDiffDelete"]],"virt_text_pos":"overlay","hl_eol":true,"priority":5000}],[28,49,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[29,50,0,{"virt_text_hide":false,"virt_text_repeat_linebreak":false,"right_gravity":true,"ns_id":3,"end_right_gravity":false,"end_col":0,"end_row":51,"hl_group":"OpencodeDiffAdd","virt_text":[["+","OpencodeDiffAdd"]],"virt_text_pos":"overlay","hl_eol":true,"priority":5000}],[30,50,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[31,51,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[32,52,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[33,53,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[34,54,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[35,59,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-20 15:20:17)","OpencodeHint"],[" [msg_a0234f9c6001JCKYaca1HHwwx6]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10}],[36,69,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text":[["+1","OpencodeDiffAddText"]],"virt_text_pos":"win_col","virt_text_win_col":12,"priority":1000}],[37,69,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text":[["-1","OpencodeDiffDeleteText"]],"virt_text_pos":"win_col","virt_text_win_col":15,"priority":1000}]]} \ No newline at end of file diff --git a/tests/data/revert.expected.json b/tests/data/revert.expected.json index e445e9e8..c8d769e8 100644 --- a/tests/data/revert.expected.json +++ b/tests/data/revert.expected.json @@ -1 +1 @@ -{"timestamp":1763500798,"extmarks":[[1,1,0,{"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-19 17:50:43)","OpencodeHint"],[" [msg_9fd985573001fk1Xlot7uyDgTo]","OpencodeHint"]],"right_gravity":true,"ns_id":3,"virt_text_win_col":-3,"priority":10,"virt_text_pos":"win_col","virt_text_repeat_linebreak":false,"virt_text_hide":false}],[2,2,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"ns_id":3,"virt_text_win_col":-3,"priority":4096,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text_hide":false}],[3,3,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"ns_id":3,"virt_text_win_col":-3,"priority":4096,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text_hide":false}],[4,4,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"ns_id":3,"virt_text_win_col":-3,"priority":4096,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text_hide":false}],[5,5,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"ns_id":3,"virt_text_win_col":-3,"priority":4096,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text_hide":false}],[6,8,0,{"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-4.1","OpencodeHint"],[" (2025-10-19 17:50:44)","OpencodeHint"],[" [msg_9fd985a4d001wOX3Op7CpFiCTq]","OpencodeHint"]],"right_gravity":true,"ns_id":3,"virt_text_win_col":-3,"priority":10,"virt_text_pos":"win_col","virt_text_repeat_linebreak":false,"virt_text_hide":false}],[7,26,0,{"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-19 17:50:57)","OpencodeHint"],[" [msg_9fd988c92001w0IZCVPQsN6xa9]","OpencodeHint"]],"right_gravity":true,"ns_id":3,"virt_text_win_col":-3,"priority":10,"virt_text_pos":"win_col","virt_text_repeat_linebreak":false,"virt_text_hide":false}],[8,27,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"ns_id":3,"virt_text_win_col":-3,"priority":4096,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text_hide":false}],[9,28,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"ns_id":3,"virt_text_win_col":-3,"priority":4096,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text_hide":false}],[10,31,0,{"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-4.1","OpencodeHint"],[" (2025-10-19 17:50:57)","OpencodeHint"],[" [msg_9fd988ca7001lgaGttpI4YeGSA]","OpencodeHint"]],"right_gravity":true,"ns_id":3,"virt_text_win_col":-3,"priority":10,"virt_text_pos":"win_col","virt_text_repeat_linebreak":false,"virt_text_hide":false}],[11,37,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"ns_id":3,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text_hide":false}],[12,38,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"ns_id":3,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text_hide":false}],[13,39,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"ns_id":3,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text_hide":false}],[14,40,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"ns_id":3,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text_hide":false}],[15,41,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"ns_id":3,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text_hide":false}],[16,42,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"ns_id":3,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text_hide":false}],[17,43,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"ns_id":3,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text_hide":false}],[18,44,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"ns_id":3,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text_hide":false}],[19,45,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"ns_id":3,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text_hide":false}],[20,46,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"ns_id":3,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text_hide":false}],[21,47,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"ns_id":3,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text_hide":false}],[22,48,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"ns_id":3,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text_hide":false}],[23,49,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"ns_id":3,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text_hide":false}],[24,50,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"ns_id":3,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text_hide":false}],[25,51,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"ns_id":3,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text_hide":false}],[26,56,0,{"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-4.1","OpencodeHint"],[" (2025-10-19 17:50:59)","OpencodeHint"],[" [msg_9fd98942d001elqd2sd8CZeOoA]","OpencodeHint"]],"right_gravity":true,"ns_id":3,"virt_text_win_col":-3,"priority":10,"virt_text_pos":"win_col","virt_text_repeat_linebreak":false,"virt_text_hide":false}],[27,66,0,{"virt_text":[["-20","OpencodeDiffDeleteText"]],"right_gravity":true,"ns_id":3,"virt_text_win_col":11,"priority":1000,"virt_text_pos":"win_col","virt_text_repeat_linebreak":false,"virt_text_hide":false}]],"lines":["----","","","write 10 random words","","[poem.md](poem.md)","","----","","","Here are 10 random words:","","1. Lantern ","2. Whisper ","3. Velvet ","4. Orbit ","5. Timber ","6. Quiver ","7. Mosaic ","8. Ember ","9. Spiral ","10. Glimmer","","Let me know if you need them in a specific format or want to use them in a file!","","----","","","write 10 random words to the file","","----","","","I will write 10 random words to poem.md, each on a new line.","","Proceeding to update the file now.","","** write** `poem.md`","","`````markdown","Lantern","Whisper","Velvet","Orbit","Timber","Quiver","Mosaic","Ember","Spiral","Glimmer","","`````","","**󰻛 Created Snapshot** `c410b2b4`","","----","","","The file poem.md has been updated with 10 random words, each on a new line. Task complete! If you need anything else, let me know.","","----","","> 2 messages reverted, 4 tool calls reverted",">","> type `/redo` to restore.",""," poem.md: -20",""],"actions":[{"display_line":53,"range":{"from":53,"to":53},"args":["c410b2b4024de020aea223c5248eec89216de53f"],"text":"[R]evert file","type":"diff_revert_selected_file","key":"R"},{"display_line":53,"range":{"from":53,"to":53},"args":["c410b2b4024de020aea223c5248eec89216de53f"],"text":"Revert [A]ll","type":"diff_revert_all","key":"A"},{"display_line":53,"range":{"from":53,"to":53},"args":["c410b2b4024de020aea223c5248eec89216de53f"],"text":"[D]iff","type":"diff_open","key":"D"}]} \ No newline at end of file +{"lines":["----","","","write 10 random words","","[poem.md](poem.md)","","----","","","Here are 10 random words:","","1. Lantern ","2. Whisper ","3. Velvet ","4. Orbit ","5. Timber ","6. Quiver ","7. Mosaic ","8. Ember ","9. Spiral ","10. Glimmer","","Let me know if you need them in a specific format or want to use them in a file!","","----","","","write 10 random words to the file","","----","","","I will write 10 random words to poem.md, each on a new line.","","Proceeding to update the file now.","","** write** `poem.md`","","`````markdown","Lantern","Whisper","Velvet","Orbit","Timber","Quiver","Mosaic","Ember","Spiral","Glimmer","","`````","","**󰻛 Created Snapshot** `c410b2b4`","","----","","","The file poem.md has been updated with 10 random words, each on a new line. Task complete! If you need anything else, let me know.","","----","","> 2 messages reverted, 4 tool calls reverted",">","> type `/redo` to restore.",""," poem.md: -20",""],"timestamp":1766431566,"actions":[{"display_line":53,"text":"[R]evert file","key":"R","type":"diff_revert_selected_file","args":["c410b2b4024de020aea223c5248eec89216de53f"],"range":{"to":53,"from":53}},{"display_line":53,"text":"Revert [A]ll","key":"A","type":"diff_revert_all","args":["c410b2b4024de020aea223c5248eec89216de53f"],"range":{"to":53,"from":53}},{"display_line":53,"text":"[D]iff","key":"D","type":"diff_open","args":["c410b2b4024de020aea223c5248eec89216de53f"],"range":{"to":53,"from":53}}],"extmarks":[[1,1,0,{"virt_text_repeat_linebreak":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-19 17:50:43)","OpencodeHint"],[" [msg_9fd985573001fk1Xlot7uyDgTo]","OpencodeHint"]],"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-3,"priority":10,"virt_text_pos":"win_col","ns_id":3}],[2,2,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-3,"priority":4096,"virt_text_pos":"win_col","ns_id":3}],[3,3,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-3,"priority":4096,"virt_text_pos":"win_col","ns_id":3}],[4,4,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-3,"priority":4096,"virt_text_pos":"win_col","ns_id":3}],[5,5,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-3,"priority":4096,"virt_text_pos":"win_col","ns_id":3}],[6,8,0,{"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-4.1","OpencodeHint"],[" (2025-10-19 17:50:44)","OpencodeHint"],[" [msg_9fd985a4d001wOX3Op7CpFiCTq]","OpencodeHint"]],"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-3,"priority":10,"virt_text_pos":"win_col","ns_id":3}],[7,26,0,{"virt_text_repeat_linebreak":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-19 17:50:57)","OpencodeHint"],[" [msg_9fd988c92001w0IZCVPQsN6xa9]","OpencodeHint"]],"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-3,"priority":10,"virt_text_pos":"win_col","ns_id":3}],[8,27,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-3,"priority":4096,"virt_text_pos":"win_col","ns_id":3}],[9,28,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-3,"priority":4096,"virt_text_pos":"win_col","ns_id":3}],[10,31,0,{"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-4.1","OpencodeHint"],[" (2025-10-19 17:50:57)","OpencodeHint"],[" [msg_9fd988ca7001lgaGttpI4YeGSA]","OpencodeHint"]],"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-3,"priority":10,"virt_text_pos":"win_col","ns_id":3}],[11,37,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","ns_id":3}],[12,38,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","ns_id":3}],[13,39,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","ns_id":3}],[14,40,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","ns_id":3}],[15,41,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","ns_id":3}],[16,42,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","ns_id":3}],[17,43,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","ns_id":3}],[18,44,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","ns_id":3}],[19,45,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","ns_id":3}],[20,46,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","ns_id":3}],[21,47,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","ns_id":3}],[22,48,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","ns_id":3}],[23,49,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","ns_id":3}],[24,50,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","ns_id":3}],[25,51,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","ns_id":3}],[26,56,0,{"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-4.1","OpencodeHint"],[" (2025-10-19 17:50:59)","OpencodeHint"],[" [msg_9fd98942d001elqd2sd8CZeOoA]","OpencodeHint"]],"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-3,"priority":10,"virt_text_pos":"win_col","ns_id":3}],[27,66,0,{"virt_text_repeat_linebreak":false,"virt_text":[["-20","OpencodeDiffDeleteText"]],"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":11,"priority":1000,"virt_text_pos":"win_col","ns_id":3}]]} \ No newline at end of file diff --git a/tests/data/selection.expected.json b/tests/data/selection.expected.json index fc1a9bf5..c4ec3045 100644 --- a/tests/data/selection.expected.json +++ b/tests/data/selection.expected.json @@ -1 +1 @@ -{"extmarks":[[1,1,0,{"priority":10,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text_hide":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-18 05:02:28)","OpencodeHint"],[" [msg_9f5b29fea001z6jYXF7CG9omHa]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[2,2,0,{"priority":4096,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[3,3,0,{"priority":4096,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[4,4,0,{"priority":4096,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[5,5,0,{"priority":4096,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[6,6,0,{"priority":4096,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[7,7,0,{"priority":4096,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[8,8,0,{"priority":4096,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[9,8,0,{"priority":4096,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[10,9,0,{"priority":4096,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[11,10,0,{"priority":4096,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[12,11,0,{"priority":4096,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[13,12,0,{"priority":4096,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[14,12,0,{"priority":4096,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[15,13,0,{"priority":4096,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[16,16,0,{"priority":10,"right_gravity":true,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text_hide":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-18 05:02:28)","OpencodeHint"],[" [msg_9f5b2a039001xop8ITmXQq0Gjh]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3}]],"actions":[],"timestamp":1762903201,"lines":["----","","","here's some context","","```txt","this is a string","```","","```txt","this is a selection test","```","","[diff-test.txt](diff-test.txt)","","----","","","I can see the file `/Users/cam/tmp/a/diff-test.txt` contains \"this is a string\" on line 1.","","The two selection contexts you provided show:","1. Current content: \"this is a string\"","2. Expected/desired content: \"this is a selection test\"","","Since I'm in read-only mode, I can only observe that there's a difference between what's currently in the file and what one of the selections indicates should be there.","",""]} \ No newline at end of file +{"timestamp":1766431567,"actions":[],"lines":["----","","","here's some context","","```txt","this is a string","```","","```txt","this is a selection test","```","","[diff-test.txt](diff-test.txt)","","----","","","I can see the file `/Users/cam/tmp/a/diff-test.txt` contains \"this is a string\" on line 1.","","The two selection contexts you provided show:","1. Current content: \"this is a string\"","2. Expected/desired content: \"this is a selection test\"","","Since I'm in read-only mode, I can only observe that there's a difference between what's currently in the file and what one of the selections indicates should be there.","",""],"extmarks":[[1,1,0,{"priority":10,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-18 05:02:28)","OpencodeHint"],[" [msg_9f5b29fea001z6jYXF7CG9omHa]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[2,2,0,{"priority":4096,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[3,3,0,{"priority":4096,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[4,4,0,{"priority":4096,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[5,5,0,{"priority":4096,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[6,6,0,{"priority":4096,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[7,7,0,{"priority":4096,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[8,8,0,{"priority":4096,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[9,8,0,{"priority":4096,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[10,9,0,{"priority":4096,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[11,10,0,{"priority":4096,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[12,11,0,{"priority":4096,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[13,12,0,{"priority":4096,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[14,12,0,{"priority":4096,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[15,13,0,{"priority":4096,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[16,16,0,{"priority":10,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text_hide":false,"right_gravity":true,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-18 05:02:28)","OpencodeHint"],[" [msg_9f5b2a039001xop8ITmXQq0Gjh]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3}]]} \ No newline at end of file diff --git a/tests/data/shifting-and-multiple-perms.expected.json b/tests/data/shifting-and-multiple-perms.expected.json index 553f9a2d..f0764559 100644 --- a/tests/data/shifting-and-multiple-perms.expected.json +++ b/tests/data/shifting-and-multiple-perms.expected.json @@ -1 +1 @@ -{"timestamp":1762903202,"extmarks":[[1,1,0,{"virt_text_repeat_linebreak":false,"virt_text_hide":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-17 01:05:49)","OpencodeHint"],[" [msg_9efb39d68001J2h30a50B2774b]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10,"right_gravity":true,"ns_id":3}],[2,2,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"right_gravity":true,"ns_id":3}],[3,3,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"right_gravity":true,"ns_id":3}],[4,4,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"right_gravity":true,"ns_id":3}],[5,5,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"right_gravity":true,"ns_id":3}],[6,8,0,{"virt_text_repeat_linebreak":false,"virt_text_hide":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-17 01:05:50)","OpencodeHint"],[" [msg_9efb39dc3002f81rMRqF2WO1UU]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10,"right_gravity":true,"ns_id":3}],[7,83,0,{"virt_text_repeat_linebreak":false,"virt_text_hide":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-17 01:07:23)","OpencodeHint"],[" [msg_9efb50a0b001WFK7AMDV45cF8Z]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10,"right_gravity":true,"ns_id":3}],[8,84,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"right_gravity":true,"ns_id":3}],[9,85,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"right_gravity":true,"ns_id":3}],[10,88,0,{"virt_text_repeat_linebreak":false,"virt_text_hide":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-17 01:07:23)","OpencodeHint"],[" [msg_9efb50a2a002dzMgbQnasd86o1]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10,"right_gravity":true,"ns_id":3}],[11,111,0,{"virt_text_repeat_linebreak":false,"virt_text_hide":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-17 01:08:01)","OpencodeHint"],[" [msg_9efb59d93001LSm9y0DS9p8cP6]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10,"right_gravity":true,"ns_id":3}],[12,112,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"right_gravity":true,"ns_id":3}],[13,113,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"right_gravity":true,"ns_id":3}],[14,116,0,{"virt_text_repeat_linebreak":false,"virt_text_hide":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-17 01:08:01)","OpencodeHint"],[" [msg_9efb59db4002uWmyFRTjRIhIaQ]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10,"right_gravity":true,"ns_id":3}],[15,122,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"ns_id":3}],[16,123,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"ns_id":3}],[17,124,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"ns_id":3}],[18,125,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"ns_id":3}],[19,126,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"ns_id":3}],[20,127,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"ns_id":3}],[21,128,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"ns_id":3}],[22,129,0,{"virt_text_repeat_linebreak":false,"end_right_gravity":false,"right_gravity":true,"end_col":0,"hl_group":"OpencodeDiffAdd","ns_id":3,"virt_text":[["+","OpencodeDiffAdd"]],"end_row":130,"hl_eol":true,"priority":5000,"virt_text_hide":false,"virt_text_pos":"overlay"}],[23,129,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"ns_id":3}],[24,130,0,{"virt_text_repeat_linebreak":false,"end_right_gravity":false,"right_gravity":true,"end_col":0,"hl_group":"OpencodeDiffAdd","ns_id":3,"virt_text":[["+","OpencodeDiffAdd"]],"end_row":131,"hl_eol":true,"priority":5000,"virt_text_hide":false,"virt_text_pos":"overlay"}],[25,130,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"ns_id":3}],[26,131,0,{"virt_text_repeat_linebreak":false,"end_right_gravity":false,"right_gravity":true,"end_col":0,"hl_group":"OpencodeDiffAdd","ns_id":3,"virt_text":[["+","OpencodeDiffAdd"]],"end_row":132,"hl_eol":true,"priority":5000,"virt_text_hide":false,"virt_text_pos":"overlay"}],[27,131,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"ns_id":3}],[28,132,0,{"virt_text_repeat_linebreak":false,"end_right_gravity":false,"right_gravity":true,"end_col":0,"hl_group":"OpencodeDiffAdd","ns_id":3,"virt_text":[["+","OpencodeDiffAdd"]],"end_row":133,"hl_eol":true,"priority":5000,"virt_text_hide":false,"virt_text_pos":"overlay"}],[29,132,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"ns_id":3}],[30,133,0,{"virt_text_repeat_linebreak":false,"end_right_gravity":false,"right_gravity":true,"end_col":0,"hl_group":"OpencodeDiffAdd","ns_id":3,"virt_text":[["+","OpencodeDiffAdd"]],"end_row":134,"hl_eol":true,"priority":5000,"virt_text_hide":false,"virt_text_pos":"overlay"}],[31,133,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"ns_id":3}],[32,134,0,{"virt_text_repeat_linebreak":false,"end_right_gravity":false,"right_gravity":true,"end_col":0,"hl_group":"OpencodeDiffAdd","ns_id":3,"virt_text":[["+","OpencodeDiffAdd"]],"end_row":135,"hl_eol":true,"priority":5000,"virt_text_hide":false,"virt_text_pos":"overlay"}],[33,134,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"ns_id":3}],[34,135,0,{"virt_text_repeat_linebreak":false,"end_right_gravity":false,"right_gravity":true,"end_col":0,"hl_group":"OpencodeDiffAdd","ns_id":3,"virt_text":[["+","OpencodeDiffAdd"]],"end_row":136,"hl_eol":true,"priority":5000,"virt_text_hide":false,"virt_text_pos":"overlay"}],[35,135,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"ns_id":3}],[36,136,0,{"virt_text_repeat_linebreak":false,"end_right_gravity":false,"right_gravity":true,"end_col":0,"hl_group":"OpencodeDiffAdd","ns_id":3,"virt_text":[["+","OpencodeDiffAdd"]],"end_row":137,"hl_eol":true,"priority":5000,"virt_text_hide":false,"virt_text_pos":"overlay"}],[37,136,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"ns_id":3}],[38,137,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"ns_id":3}],[39,138,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"ns_id":3}],[40,139,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"ns_id":3}],[41,140,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"ns_id":3}],[42,141,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"ns_id":3}],[43,142,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"ns_id":3}],[44,143,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"ns_id":3}],[45,144,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"ns_id":3}],[46,145,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"ns_id":3}],[47,146,0,{"virt_text_repeat_linebreak":false,"end_right_gravity":false,"right_gravity":true,"end_col":0,"hl_group":"OpencodeDiffAdd","ns_id":3,"virt_text":[["+","OpencodeDiffAdd"]],"end_row":147,"hl_eol":true,"priority":5000,"virt_text_hide":false,"virt_text_pos":"overlay"}],[48,146,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"ns_id":3}],[49,147,0,{"virt_text_repeat_linebreak":false,"end_right_gravity":false,"right_gravity":true,"end_col":0,"hl_group":"OpencodeDiffAdd","ns_id":3,"virt_text":[["+","OpencodeDiffAdd"]],"end_row":148,"hl_eol":true,"priority":5000,"virt_text_hide":false,"virt_text_pos":"overlay"}],[50,147,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"ns_id":3}],[51,148,0,{"virt_text_repeat_linebreak":false,"end_right_gravity":false,"right_gravity":true,"end_col":0,"hl_group":"OpencodeDiffAdd","ns_id":3,"virt_text":[["+","OpencodeDiffAdd"]],"end_row":149,"hl_eol":true,"priority":5000,"virt_text_hide":false,"virt_text_pos":"overlay"}],[52,148,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"ns_id":3}],[53,149,0,{"virt_text_repeat_linebreak":false,"end_right_gravity":false,"right_gravity":true,"end_col":0,"hl_group":"OpencodeDiffAdd","ns_id":3,"virt_text":[["+","OpencodeDiffAdd"]],"end_row":150,"hl_eol":true,"priority":5000,"virt_text_hide":false,"virt_text_pos":"overlay"}],[54,149,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"ns_id":3}],[55,150,0,{"virt_text_repeat_linebreak":false,"end_right_gravity":false,"right_gravity":true,"end_col":0,"hl_group":"OpencodeDiffAdd","ns_id":3,"virt_text":[["+","OpencodeDiffAdd"]],"end_row":151,"hl_eol":true,"priority":5000,"virt_text_hide":false,"virt_text_pos":"overlay"}],[56,150,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"ns_id":3}],[57,151,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"ns_id":3}],[58,152,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"ns_id":3}],[59,153,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"ns_id":3}],[60,154,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"ns_id":3}],[61,155,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"ns_id":3}],[62,156,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"ns_id":3}],[63,157,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"ns_id":3}],[64,158,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"ns_id":3}],[65,159,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"ns_id":3}],[66,160,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"ns_id":3}],[67,161,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"ns_id":3}]],"lines":["----","","","no, i want the extra line added when i've streamed the most recent part but i don't want it still there when i add the next part. i.e. i want an extra blank line at the end","","[lua/opencode/ui/renderer.lua](lua/opencode/ui/renderer.lua)","","----","","","Ah, I understand now! You want:","1. An extra blank line at the very end of the buffer when content has been streamed","2. But when **new** content is about to be added, remove that extra blank line first (so the new content doesn't have an awkward gap above it)","","This is a \"trailing spacer\" that should only exist when we're \"done\" with the current output, but gets removed before adding more.","","Here's the approach:","","## Solution","","Add tracking for whether a trailing blank line exists, and:","- **Add** a blank line after writing new content (in `_write_formatted_data`)","- **Remove** the trailing blank line before writing new content (also in `_write_formatted_data`)","","### Changes needed in `renderer.lua`:","","1. **Add state tracking** (after line 14):"," ```lua"," M._has_trailing_line = false"," ```","","2. **Reset the flag** in `M.reset()` (after line 21):"," ```lua"," M._has_trailing_line = false"," ```","","3. **Modify `_write_formatted_data`** (around line 247-276):"," - Before writing: remove trailing line if it exists"," - After writing: add a new trailing line"," "," ```lua"," function M._write_formatted_data(formatted_data)"," local buf = state.windows.output_buf"," local start_line = output_window.get_buf_line_count()"," "," -- Remove trailing blank line before adding new content"," if M._has_trailing_line and start_line > 0 then"," output_window.set_lines({}, start_line - 1, start_line)"," start_line = start_line - 1"," M._has_trailing_line = false"," end"," "," local new_lines = formatted_data.lines"," local extmarks = formatted_data.extmarks"," "," if #new_lines == 0 or not buf then"," return nil"," end"," "," -- [existing action extraction code...]"," "," output_window.set_lines(new_lines, start_line)"," output_window.set_extmarks(extmarks, start_line)"," "," -- Add trailing blank line after writing"," local end_line = start_line + #new_lines"," output_window.set_lines({''}, end_line)"," M._has_trailing_line = true"," "," return {"," line_start = start_line,"," line_end = start_line + #new_lines - 1,"," }"," end"," ```","","This way:","- ✅ Extra blank line appears after streaming content","- ✅ Gets removed automatically before next content is added","- ✅ No gap between messages","- ✅ Always has visual spacing at the bottom","","----","","","but i'd only want to do that for things added to the end","","----","","","Ah yes, you're right! The trailing blank line should only be added/removed when writing to the **end** of the buffer, not when doing replacements in the middle (like `_replace_part_in_buffer`).","","Let me trace through the code:","","1. **`_write_formatted_data`** - writes at end (line 247-276)","2. **`_insert_part_to_buffer`** - calls `_write_formatted_data`, so writes at end (line 282-300)","3. **`_replace_part_in_buffer`** - replaces in middle of buffer (line 307-353)","","So the logic should be:","- In **`_write_formatted_data`**: Remove trailing line before writing (if exists), then add it back after","- In **`_replace_part_in_buffer`**: Don't touch the trailing line at all","- In **`render_output`**: This sets the entire buffer, so no trailing line management needed","","The key insight is that `_write_formatted_data` is specifically for appending to the end (line 249: `start_line = output_window.get_buf_line_count()`), so that's the only place where we need to:","1. Remove the trailing blank line first (if it exists)","2. Write the new content","3. Add a new trailing blank line","","Does that match what you want? The trailing line only exists at the very end, and only gets managed when appending new content to the end.","","----","","","yes","","----","","","** edit** `renderer.lua`","","** edit** `renderer.lua`","","** edit** `renderer.lua`","","`````lua"," ---@return {line_start: integer, line_end: integer}? Range where data was written"," function M._write_formatted_data(formatted_data)"," local buf = state.windows.output_buf"," local start_line = output_window.get_buf_line_count()"," "," -- Remove trailing blank line before adding new content"," if M._has_trailing_line and start_line > 0 then"," output_window.set_lines({}, start_line - 1, start_line)"," start_line = start_line - 1"," M._has_trailing_line = false"," end"," "," local new_lines = formatted_data.lines"," local extmarks = formatted_data.extmarks"," "," if #new_lines == 0 or not buf then","@@ -268,8 +276,13 @@"," "," output_window.set_lines(new_lines, start_line)"," output_window.set_extmarks(extmarks, start_line)"," "," -- Add trailing blank line after writing"," local end_line = start_line + #new_lines"," output_window.set_lines({''}, end_line)"," M._has_trailing_line = true"," "," return {"," line_start = start_line,"," line_end = start_line + #new_lines - 1,"," }","","`````","","> [!WARNING] Permission required to run this tool.",">","> Accept `a` Always `A` Deny `d`","",""],"actions":[]} \ No newline at end of file +{"timestamp":1766431567,"actions":[],"lines":["----","","","no, i want the extra line added when i've streamed the most recent part but i don't want it still there when i add the next part. i.e. i want an extra blank line at the end","","[lua/opencode/ui/renderer.lua](lua/opencode/ui/renderer.lua)","","----","","","Ah, I understand now! You want:","1. An extra blank line at the very end of the buffer when content has been streamed","2. But when **new** content is about to be added, remove that extra blank line first (so the new content doesn't have an awkward gap above it)","","This is a \"trailing spacer\" that should only exist when we're \"done\" with the current output, but gets removed before adding more.","","Here's the approach:","","## Solution","","Add tracking for whether a trailing blank line exists, and:","- **Add** a blank line after writing new content (in `_write_formatted_data`)","- **Remove** the trailing blank line before writing new content (also in `_write_formatted_data`)","","### Changes needed in `renderer.lua`:","","1. **Add state tracking** (after line 14):"," ```lua"," M._has_trailing_line = false"," ```","","2. **Reset the flag** in `M.reset()` (after line 21):"," ```lua"," M._has_trailing_line = false"," ```","","3. **Modify `_write_formatted_data`** (around line 247-276):"," - Before writing: remove trailing line if it exists"," - After writing: add a new trailing line"," "," ```lua"," function M._write_formatted_data(formatted_data)"," local buf = state.windows.output_buf"," local start_line = output_window.get_buf_line_count()"," "," -- Remove trailing blank line before adding new content"," if M._has_trailing_line and start_line > 0 then"," output_window.set_lines({}, start_line - 1, start_line)"," start_line = start_line - 1"," M._has_trailing_line = false"," end"," "," local new_lines = formatted_data.lines"," local extmarks = formatted_data.extmarks"," "," if #new_lines == 0 or not buf then"," return nil"," end"," "," -- [existing action extraction code...]"," "," output_window.set_lines(new_lines, start_line)"," output_window.set_extmarks(extmarks, start_line)"," "," -- Add trailing blank line after writing"," local end_line = start_line + #new_lines"," output_window.set_lines({''}, end_line)"," M._has_trailing_line = true"," "," return {"," line_start = start_line,"," line_end = start_line + #new_lines - 1,"," }"," end"," ```","","This way:","- ✅ Extra blank line appears after streaming content","- ✅ Gets removed automatically before next content is added","- ✅ No gap between messages","- ✅ Always has visual spacing at the bottom","","----","","","but i'd only want to do that for things added to the end","","----","","","Ah yes, you're right! The trailing blank line should only be added/removed when writing to the **end** of the buffer, not when doing replacements in the middle (like `_replace_part_in_buffer`).","","Let me trace through the code:","","1. **`_write_formatted_data`** - writes at end (line 247-276)","2. **`_insert_part_to_buffer`** - calls `_write_formatted_data`, so writes at end (line 282-300)","3. **`_replace_part_in_buffer`** - replaces in middle of buffer (line 307-353)","","So the logic should be:","- In **`_write_formatted_data`**: Remove trailing line before writing (if exists), then add it back after","- In **`_replace_part_in_buffer`**: Don't touch the trailing line at all","- In **`render_output`**: This sets the entire buffer, so no trailing line management needed","","The key insight is that `_write_formatted_data` is specifically for appending to the end (line 249: `start_line = output_window.get_buf_line_count()`), so that's the only place where we need to:","1. Remove the trailing blank line first (if it exists)","2. Write the new content","3. Add a new trailing blank line","","Does that match what you want? The trailing line only exists at the very end, and only gets managed when appending new content to the end.","","----","","","yes","","----","","","** edit** `renderer.lua`","","** edit** `renderer.lua`","","** edit** `renderer.lua`","","`````lua"," ---@return {line_start: integer, line_end: integer}? Range where data was written"," function M._write_formatted_data(formatted_data)"," local buf = state.windows.output_buf"," local start_line = output_window.get_buf_line_count()"," "," -- Remove trailing blank line before adding new content"," if M._has_trailing_line and start_line > 0 then"," output_window.set_lines({}, start_line - 1, start_line)"," start_line = start_line - 1"," M._has_trailing_line = false"," end"," "," local new_lines = formatted_data.lines"," local extmarks = formatted_data.extmarks"," "," if #new_lines == 0 or not buf then","@@ -268,8 +276,13 @@"," "," output_window.set_lines(new_lines, start_line)"," output_window.set_extmarks(extmarks, start_line)"," "," -- Add trailing blank line after writing"," local end_line = start_line + #new_lines"," output_window.set_lines({''}, end_line)"," M._has_trailing_line = true"," "," return {"," line_start = start_line,"," line_end = start_line + #new_lines - 1,"," }","","`````","","> [!WARNING] Permission required to run this tool.",">","> Accept `a` Always `A` Deny `d`","",""],"extmarks":[[1,1,0,{"priority":10,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-17 01:05:49)","OpencodeHint"],[" [msg_9efb39d68001J2h30a50B2774b]","OpencodeHint"]],"virt_text_repeat_linebreak":false,"virt_text_pos":"win_col","virt_text_win_col":-3}],[2,2,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-3}],[3,3,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-3}],[4,4,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-3}],[5,5,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-3}],[6,8,0,{"priority":10,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-17 01:05:50)","OpencodeHint"],[" [msg_9efb39dc3002f81rMRqF2WO1UU]","OpencodeHint"]],"virt_text_repeat_linebreak":false,"virt_text_pos":"win_col","virt_text_win_col":-3}],[7,83,0,{"priority":10,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-17 01:07:23)","OpencodeHint"],[" [msg_9efb50a0b001WFK7AMDV45cF8Z]","OpencodeHint"]],"virt_text_repeat_linebreak":false,"virt_text_pos":"win_col","virt_text_win_col":-3}],[8,84,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-3}],[9,85,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-3}],[10,88,0,{"priority":10,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-17 01:07:23)","OpencodeHint"],[" [msg_9efb50a2a002dzMgbQnasd86o1]","OpencodeHint"]],"virt_text_repeat_linebreak":false,"virt_text_pos":"win_col","virt_text_win_col":-3}],[11,111,0,{"priority":10,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-17 01:08:01)","OpencodeHint"],[" [msg_9efb59d93001LSm9y0DS9p8cP6]","OpencodeHint"]],"virt_text_repeat_linebreak":false,"virt_text_pos":"win_col","virt_text_win_col":-3}],[12,112,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-3}],[13,113,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-3}],[14,116,0,{"priority":10,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-17 01:08:01)","OpencodeHint"],[" [msg_9efb59db4002uWmyFRTjRIhIaQ]","OpencodeHint"]],"virt_text_repeat_linebreak":false,"virt_text_pos":"win_col","virt_text_win_col":-3}],[15,122,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[16,123,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[17,124,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[18,125,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[19,126,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[20,127,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[21,128,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[22,129,0,{"priority":5000,"ns_id":3,"end_col":0,"right_gravity":true,"end_row":130,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"hl_group":"OpencodeDiffAdd","virt_text_repeat_linebreak":false,"virt_text_pos":"overlay","virt_text":[["+","OpencodeDiffAdd"]]}],[23,129,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[24,130,0,{"priority":5000,"ns_id":3,"end_col":0,"right_gravity":true,"end_row":131,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"hl_group":"OpencodeDiffAdd","virt_text_repeat_linebreak":false,"virt_text_pos":"overlay","virt_text":[["+","OpencodeDiffAdd"]]}],[25,130,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[26,131,0,{"priority":5000,"ns_id":3,"end_col":0,"right_gravity":true,"end_row":132,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"hl_group":"OpencodeDiffAdd","virt_text_repeat_linebreak":false,"virt_text_pos":"overlay","virt_text":[["+","OpencodeDiffAdd"]]}],[27,131,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[28,132,0,{"priority":5000,"ns_id":3,"end_col":0,"right_gravity":true,"end_row":133,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"hl_group":"OpencodeDiffAdd","virt_text_repeat_linebreak":false,"virt_text_pos":"overlay","virt_text":[["+","OpencodeDiffAdd"]]}],[29,132,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[30,133,0,{"priority":5000,"ns_id":3,"end_col":0,"right_gravity":true,"end_row":134,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"hl_group":"OpencodeDiffAdd","virt_text_repeat_linebreak":false,"virt_text_pos":"overlay","virt_text":[["+","OpencodeDiffAdd"]]}],[31,133,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[32,134,0,{"priority":5000,"ns_id":3,"end_col":0,"right_gravity":true,"end_row":135,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"hl_group":"OpencodeDiffAdd","virt_text_repeat_linebreak":false,"virt_text_pos":"overlay","virt_text":[["+","OpencodeDiffAdd"]]}],[33,134,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[34,135,0,{"priority":5000,"ns_id":3,"end_col":0,"right_gravity":true,"end_row":136,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"hl_group":"OpencodeDiffAdd","virt_text_repeat_linebreak":false,"virt_text_pos":"overlay","virt_text":[["+","OpencodeDiffAdd"]]}],[35,135,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[36,136,0,{"priority":5000,"ns_id":3,"end_col":0,"right_gravity":true,"end_row":137,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"hl_group":"OpencodeDiffAdd","virt_text_repeat_linebreak":false,"virt_text_pos":"overlay","virt_text":[["+","OpencodeDiffAdd"]]}],[37,136,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[38,137,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[39,138,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[40,139,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[41,140,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[42,141,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[43,142,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[44,143,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[45,144,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[46,145,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[47,146,0,{"priority":5000,"ns_id":3,"end_col":0,"right_gravity":true,"end_row":147,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"hl_group":"OpencodeDiffAdd","virt_text_repeat_linebreak":false,"virt_text_pos":"overlay","virt_text":[["+","OpencodeDiffAdd"]]}],[48,146,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[49,147,0,{"priority":5000,"ns_id":3,"end_col":0,"right_gravity":true,"end_row":148,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"hl_group":"OpencodeDiffAdd","virt_text_repeat_linebreak":false,"virt_text_pos":"overlay","virt_text":[["+","OpencodeDiffAdd"]]}],[50,147,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[51,148,0,{"priority":5000,"ns_id":3,"end_col":0,"right_gravity":true,"end_row":149,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"hl_group":"OpencodeDiffAdd","virt_text_repeat_linebreak":false,"virt_text_pos":"overlay","virt_text":[["+","OpencodeDiffAdd"]]}],[52,148,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[53,149,0,{"priority":5000,"ns_id":3,"end_col":0,"right_gravity":true,"end_row":150,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"hl_group":"OpencodeDiffAdd","virt_text_repeat_linebreak":false,"virt_text_pos":"overlay","virt_text":[["+","OpencodeDiffAdd"]]}],[54,149,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[55,150,0,{"priority":5000,"ns_id":3,"end_col":0,"right_gravity":true,"end_row":151,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"hl_group":"OpencodeDiffAdd","virt_text_repeat_linebreak":false,"virt_text_pos":"overlay","virt_text":[["+","OpencodeDiffAdd"]]}],[56,150,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[57,151,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[58,152,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[59,153,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[60,154,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[61,155,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[62,156,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[63,157,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[64,158,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[65,159,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[66,160,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[67,161,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}]]} \ No newline at end of file diff --git a/tests/data/simple-session.expected.json b/tests/data/simple-session.expected.json index bad9d2e9..f184a2ee 100644 --- a/tests/data/simple-session.expected.json +++ b/tests/data/simple-session.expected.json @@ -1 +1 @@ -{"timestamp":1762903202,"extmarks":[[1,1,0,{"virt_text_hide":false,"priority":10,"virt_text_repeat_linebreak":false,"right_gravity":true,"virt_text_win_col":-3,"ns_id":3,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-10 19:18:25)","OpencodeHint"],[" [msg_9cf8f64de0016tbfTQqWMydbdr]","OpencodeHint"]],"virt_text_pos":"win_col"}],[2,2,0,{"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"virt_text_win_col":-3,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col"}],[3,3,0,{"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"virt_text_win_col":-3,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col"}],[4,4,0,{"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"virt_text_win_col":-3,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col"}],[5,5,0,{"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"virt_text_win_col":-3,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col"}],[6,6,0,{"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"virt_text_win_col":-3,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col"}],[7,7,0,{"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"virt_text_win_col":-3,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col"}],[8,10,0,{"virt_text_hide":false,"priority":10,"virt_text_repeat_linebreak":false,"right_gravity":true,"virt_text_win_col":-3,"ns_id":3,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4","OpencodeHint"],[" (2025-10-10 19:18:25)","OpencodeHint"],[" [msg_9cf8f6549001tpoRuqkwS4Rxtl]","OpencodeHint"]],"virt_text_pos":"win_col"}]],"lines":["----","","","only answer the following, nothing else:","","1","","[a-empty.txt](a-empty.txt)","","----","","","1","",""],"actions":[]} \ No newline at end of file +{"timestamp":1766431567,"actions":[],"lines":["----","","","only answer the following, nothing else:","","1","","[a-empty.txt](a-empty.txt)","","----","","","1","",""],"extmarks":[[1,1,0,{"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-10 19:18:25)","OpencodeHint"],[" [msg_9cf8f64de0016tbfTQqWMydbdr]","OpencodeHint"]],"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10}],[2,2,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[3,3,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[4,4,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[5,5,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[6,6,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[7,7,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[8,10,0,{"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4","OpencodeHint"],[" (2025-10-10 19:18:25)","OpencodeHint"],[" [msg_9cf8f6549001tpoRuqkwS4Rxtl]","OpencodeHint"]],"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10}]]} \ No newline at end of file diff --git a/tests/data/tool-invalid.expected.json b/tests/data/tool-invalid.expected.json index c38f2d2e..01401951 100644 --- a/tests/data/tool-invalid.expected.json +++ b/tests/data/tool-invalid.expected.json @@ -1 +1 @@ -{"actions":[],"timestamp":1762903202,"lines":["----","","","** tool** `invalid`","","> [!ERROR]",">","> Invalid input for tool edit: JSON parsing failed: Text: {\"filePath\": \"/Users/cam/Dev/neovim-dev/opencode.nvim/lua/opencode/ui/streaming_renderer.lua\", \"newString\": \"---Event handler for permission.replied events\\n---Re-renders part after permission is resolved\\n---@param event table Event object\\nfunctio.","> Error message: JSON Parse error: Unterminated string","",""],"extmarks":[[1,1,0,{"ns_id":3,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-13 20:10:06)","OpencodeHint"],[" [msg_9df31cc90001HGn2UbFUgqJnLr]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"virt_text_hide":false,"priority":10,"virt_text_repeat_linebreak":false,"right_gravity":true}],[2,3,0,{"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true}],[3,4,0,{"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true}],[4,5,0,{"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true}],[5,6,0,{"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true}],[6,7,0,{"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true}],[7,8,0,{"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true}]]} \ No newline at end of file +{"timestamp":1766431567,"actions":[],"lines":["----","","","** tool** `invalid`","","> [!ERROR]",">","> Invalid input for tool edit: JSON parsing failed: Text: {\"filePath\": \"/Users/cam/Dev/neovim-dev/opencode.nvim/lua/opencode/ui/streaming_renderer.lua\", \"newString\": \"---Event handler for permission.replied events\\n---Re-renders part after permission is resolved\\n---@param event table Event object\\nfunctio.","> Error message: JSON Parse error: Unterminated string","",""],"extmarks":[[1,1,0,{"virt_text_win_col":-3,"priority":10,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-13 20:10:06)","OpencodeHint"],[" [msg_9df31cc90001HGn2UbFUgqJnLr]","OpencodeHint"]],"virt_text_pos":"win_col"}],[2,3,0,{"virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col"}],[3,4,0,{"virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col"}],[4,5,0,{"virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col"}],[5,6,0,{"virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col"}],[6,7,0,{"virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col"}],[7,8,0,{"virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col"}]]} \ No newline at end of file diff --git a/tests/data/updating-text.expected.json b/tests/data/updating-text.expected.json index a67a714e..aa7a0d26 100644 --- a/tests/data/updating-text.expected.json +++ b/tests/data/updating-text.expected.json @@ -1 +1 @@ -{"lines":["----","","","What would a new neovim lua plugin look like?","","[a-empty.txt](a-empty.txt)","","----","","","A new Neovim Lua plugin typically follows this structure:","","```","plugin-name/","├── lua/","│ └── plugin-name/","│ ├── init.lua -- Main entry point","│ ├── config.lua -- Configuration handling","│ └── utils.lua -- Utility functions","├── plugin/","│ └── plugin-name.lua -- Plugin registration","└── README.md","```","","**Minimal example:**","","`plugin/example.lua`:","```lua","if vim.g.loaded_example then"," return","end","vim.g.loaded_example = 1","","vim.api.nvim_create_user_command('Example', function()"," require('example').hello()","end, {})","```","","`lua/example/init.lua`:","```lua","local M = {}","","M.setup = function(opts)"," opts = opts or {}"," -- Handle configuration","end","","M.hello = function()"," print(\"Hello from my plugin!\")","end","","return M","```","","Key components:","- Use `vim.api` for Neovim API calls","- Provide a `setup()` function for configuration","- Create user commands with `nvim_create_user_command`","- Use autocommands with `nvim_create_autocmd`","- Follow Lua module patterns with `local M = {}`","",""],"actions":[],"timestamp":1762903202,"extmarks":[[1,1,0,{"virt_text_pos":"win_col","virt_text_win_col":-3,"ns_id":3,"priority":10,"right_gravity":true,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-10 22:06:43)","OpencodeHint"],[" [msg_9d0297a630014CA5ly3Vvw8Kt5]","OpencodeHint"]]}],[2,2,0,{"virt_text_pos":"win_col","virt_text_win_col":-3,"ns_id":3,"priority":4096,"right_gravity":true,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[3,3,0,{"virt_text_pos":"win_col","virt_text_win_col":-3,"ns_id":3,"priority":4096,"right_gravity":true,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[4,4,0,{"virt_text_pos":"win_col","virt_text_win_col":-3,"ns_id":3,"priority":4096,"right_gravity":true,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[5,5,0,{"virt_text_pos":"win_col","virt_text_win_col":-3,"ns_id":3,"priority":4096,"right_gravity":true,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[6,8,0,{"virt_text_pos":"win_col","virt_text_win_col":-3,"ns_id":3,"priority":10,"right_gravity":true,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" claude-sonnet-4","OpencodeHint"],[" (2025-10-10 22:06:43)","OpencodeHint"],[" [msg_9d0297ab3001UGZU9fDJM4Y75w]","OpencodeHint"]]}]]} \ No newline at end of file +{"actions":[],"lines":["----","","","What would a new neovim lua plugin look like?","","[a-empty.txt](a-empty.txt)","","----","","","A new Neovim Lua plugin typically follows this structure:","","```","plugin-name/","├── lua/","│ └── plugin-name/","│ ├── init.lua -- Main entry point","│ ├── config.lua -- Configuration handling","│ └── utils.lua -- Utility functions","├── plugin/","│ └── plugin-name.lua -- Plugin registration","└── README.md","```","","**Minimal example:**","","`plugin/example.lua`:","```lua","if vim.g.loaded_example then"," return","end","vim.g.loaded_example = 1","","vim.api.nvim_create_user_command('Example', function()"," require('example').hello()","end, {})","```","","`lua/example/init.lua`:","```lua","local M = {}","","M.setup = function(opts)"," opts = opts or {}"," -- Handle configuration","end","","M.hello = function()"," print(\"Hello from my plugin!\")","end","","return M","```","","Key components:","- Use `vim.api` for Neovim API calls","- Provide a `setup()` function for configuration","- Create user commands with `nvim_create_user_command`","- Use autocommands with `nvim_create_autocmd`","- Follow Lua module patterns with `local M = {}`","",""],"extmarks":[[1,1,0,{"virt_text_hide":false,"virt_text_repeat_linebreak":false,"ns_id":3,"right_gravity":true,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-10 22:06:43)","OpencodeHint"],[" [msg_9d0297a630014CA5ly3Vvw8Kt5]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10}],[2,2,0,{"virt_text_hide":false,"virt_text_repeat_linebreak":true,"ns_id":3,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[3,3,0,{"virt_text_hide":false,"virt_text_repeat_linebreak":true,"ns_id":3,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[4,4,0,{"virt_text_hide":false,"virt_text_repeat_linebreak":true,"ns_id":3,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[5,5,0,{"virt_text_hide":false,"virt_text_repeat_linebreak":true,"ns_id":3,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[6,8,0,{"virt_text_hide":false,"virt_text_repeat_linebreak":false,"ns_id":3,"right_gravity":true,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" claude-sonnet-4","OpencodeHint"],[" (2025-10-10 22:06:43)","OpencodeHint"],[" [msg_9d0297ab3001UGZU9fDJM4Y75w]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10}]],"timestamp":1766431568} \ No newline at end of file From 5144fa79cf944a70b2670ad1a291fef669949609 Mon Sep 17 00:00:00 2001 From: Aaron Weisberg Date: Mon, 22 Dec 2025 11:33:05 -0800 Subject: [PATCH 15/21] feat(ui): fix icon merge --- lua/opencode/ui/icons.lua | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/lua/opencode/ui/icons.lua b/lua/opencode/ui/icons.lua index 039fd2b3..b110c1d0 100644 --- a/lua/opencode/ui/icons.lua +++ b/lua/opencode/ui/icons.lua @@ -7,39 +7,39 @@ local presets = { nerdfonts = { -- headers header_user = '▌󰭻 ', - header_assistant = ' ', + header_assistant = ' ', -- actions/tools - run = ' ', - task = ' ', - read = ' ', - edit = ' ', - write = ' ', + run = ' ', + task = ' ', + read = ' ', + edit = ' ', + write = ' ', plan = '󰝖 ', - search = ' ', + search = ' ', web = '󰖟 ', - list = ' ', - tool = ' ', + list = ' ', + tool = ' ', snapshot = '󰻛 ', restore_point = '󱗚 ', - file = ' ', - folder = ' ', + file = ' ', + folder = ' ', attached_file = '󰌷 ', agent = '󰚩 ', - reference = ' ', + reference = ' ', reasoning = '󰧑 ', -- statuses - status_on = ' ', - status_off = ' ', - guard_on = ' ', + status_on = ' ', + status_off = ' ', + guard_on = ' ', -- borders and misc border = '▌', -- context bar cursor_data = '󰗧 ', - error = ' ', - warning = ' ', - info = ' ', + error = ' ', + warning = ' ', + info = ' ', selection = '󰫙 ', - command = ' ', + command = ' ', }, text = { -- headers From afbc637908aca0eb8b5d599c3cf6c9d37de19e45 Mon Sep 17 00:00:00 2001 From: Aaron Weisberg Date: Mon, 22 Dec 2025 11:35:49 -0800 Subject: [PATCH 16/21] test: update snapshots after icon fix --- tests/data/ansi-codes.expected.json | 2 +- tests/data/api-abort.expected.json | 2 +- tests/data/api-error.expected.json | 2 +- tests/data/cursor_data.expected.json | 2 +- tests/data/diagnostics.expected.json | 2 +- tests/data/diff.expected.json | 2 +- tests/data/markdown-codefence.expected.json | 2 +- tests/data/mentions-with-ranges.expected.json | 2 +- tests/data/message-removal.expected.json | 2 +- tests/data/multiple-messages-synthetic.expected.json | 2 +- tests/data/multiple-messages.expected.json | 2 +- tests/data/perf.expected.json | 2 +- tests/data/permission-denied.expected.json | 2 +- tests/data/permission-prompt.expected.json | 2 +- tests/data/permission.expected.json | 2 +- tests/data/planning.expected.json | 2 +- tests/data/reasoning.expected.json | 2 +- tests/data/redo-all.expected.json | 2 +- tests/data/redo-once.expected.json | 2 +- tests/data/revert.expected.json | 2 +- tests/data/selection.expected.json | 2 +- tests/data/shifting-and-multiple-perms.expected.json | 2 +- tests/data/simple-session.expected.json | 2 +- tests/data/tool-invalid.expected.json | 2 +- tests/data/updating-text.expected.json | 2 +- 25 files changed, 25 insertions(+), 25 deletions(-) diff --git a/tests/data/ansi-codes.expected.json b/tests/data/ansi-codes.expected.json index 4bafd78d..5e0ced07 100644 --- a/tests/data/ansi-codes.expected.json +++ b/tests/data/ansi-codes.expected.json @@ -1 +1 @@ -{"lines":["----","","","** run** `Run all tests to verify refactoring`","","`````bash","> cd /Users/cam/Dev/neovim-dev/opencode.nvim && ./run_tests.sh","","Running tests for opencode.nvim","------------------------------------------------","Starting...Scheduling: ./tests/minimal/plugin_spec.lua","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/minimal/plugin_spec.lua\t","Success\t||\topencode.nvim plugin loads the plugin without errors\t","Success\t||\topencode.nvim plugin can be set up with custom config\t","\t","Success: \t2\t","Failed : \t0\t","========================================\t","✓ Minimal tests passed","------------------------------------------------","Starting...Scheduling: ./tests/unit/timer_spec.lua","Scheduling: ./tests/unit/server_job_spec.lua","Scheduling: ./tests/unit/config_spec.lua","Scheduling: ./tests/unit/api_spec.lua","Scheduling: ./tests/unit/event_manager_spec.lua","Scheduling: ./tests/unit/init_spec.lua","Scheduling: ./tests/unit/state_spec.lua","Scheduling: ./tests/unit/id_spec.lua","Scheduling: ./tests/unit/api_client_spec.lua","Scheduling: ./tests/unit/context_spec.lua","Scheduling: ./tests/unit/session_spec.lua","Scheduling: ./tests/unit/config_file_spec.lua","Scheduling: ./tests/unit/renderer_spec.lua","Scheduling: ./tests/unit/opencode_server_spec.lua","Scheduling: ./tests/unit/core_spec.lua","Scheduling: ./tests/unit/render_state_spec.lua","Scheduling: ./tests/unit/snapshot_spec.lua","Scheduling: ./tests/unit/keymap_spec.lua","Scheduling: ./tests/unit/util_spec.lua","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/server_job_spec.lua\t","Success\t||\tserver_job exposes expected public functions\t","Success\t||\tserver_job call_api resolves with decoded json and toggles is_job_running\t","Success\t||\tserver_job call_api rejects on non 2xx\t","Success\t||\tserver_job stream_api forwards chunks\t","Success\t||\tserver_job ensure_server spawns a new opencode server only once\t","\t","Success: \t5\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/util_spec.lua\t","Success\t||\tutil.parse_dot_args parses flat booleans\t","Success\t||\tutil.parse_dot_args parses nested dot notation\t","Success\t||\tutil.parse_dot_args parses mixed nesting and booleans\t","Success\t||\tutil.parse_dot_args parses numbers\t","Success\t||\tutil.parse_dot_args handles empty string\t","\t","Success: \t5\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/api_client_spec.lua\t","Success\t||\tapi_client should create a new client instance\t","Success\t||\tapi_client should remove trailing slash from base_url\t","Success\t||\tapi_client should create client using create factory function\t","Success\t||\tapi_client should have all expected API methods\t","Success\t||\tapi_client should construct URLs correctly with query parameters\t","\t","Success: \t5\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/session_spec.lua\t","Success\t||\topencode.session get_last_workspace_session returns the most recent session for current workspace\t","Success\t||\topencode.session get_last_workspace_session returns nil when no sessions match the workspace\t","Success\t||\topencode.session get_last_workspace_session handles JSON parsing errors\t","Success\t||\topencode.session get_last_workspace_session handles empty session list\t","Success\t||\topencode.session get_by_name returns the session with matching ID\t","Success\t||\topencode.session get_by_name returns nil when no session matches the ID\t","Success\t||\topencode.session read_json_dir returns nil for non-existent directory\t","Success\t||\topencode.session read_json_dir returns nil when directory exists but has no JSON files\t","Success\t||\topencode.session read_json_dir returns decoded JSON content from directory\t","Success\t||\topencode.session read_json_dir skips invalid JSON files\t","Success\t||\topencode.session get_messages returns nil when session is nil\t","Success\t||\topencode.session get_messages returns nil when messages directory does not exist\t","Success\t||\topencode.session get_messages returns messages with their parts\t","\t","Success: \t13\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/config_file_spec.lua\t","Success\t||\tconfig_file.setup lazily loads config when accessed\t","Success\t||\tconfig_file.setup get_opencode_agents returns primary + defaults\t","Success\t||\tconfig_file.setup get_opencode_project returns project\t","\t","Success: \t3\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/api_spec.lua\t","Success\t||\topencode.api commands table contains the expected commands with proper structure\t","Success\t||\topencode.api setup registers all commands\t","Success\t||\topencode.api setup sets up command functions that call the correct core functions\t","Success\t||\topencode.api Lua API provides callable functions that match commands\t","\t","Success: \t4\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/id_spec.lua\t","Success\t||\tID module should generate ascending session IDs\t","Success\t||\tID module should generate descending message IDs\t","Success\t||\tID module should validate given IDs correctly\t","Success\t||\tID module should throw error for invalid given IDs\t","Success\t||\tID module should validate schemas correctly\t","Success\t||\tID module should return available prefixes\t","Success\t||\tID module should generate IDs with correct length structure\t","\t","Success: \t7\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/render_state_spec.lua\t","Success\t||\tRenderState new and reset creates a new instance\t","Success\t||\tRenderState new and reset resets to empty state\t","Success\t||\tRenderState set_message sets a new message\t","Success\t||\tRenderState set_message updates line index for message\t","Success\t||\tRenderState set_message updates existing message\t","Success\t||\tRenderState set_part sets a new part\t","Success\t||\tRenderState set_part updates line index for part\t","Success\t||\tRenderState set_part initializes actions array\t","Success\t||\tRenderState get_part_at_line returns part at line\t","Success\t||\tRenderState get_part_at_line returns nil for line without part\t","Success\t||\tRenderState get_message_at_line returns message at line\t","Success\t||\tRenderState get_message_at_line returns nil for line without message\t","Success\t||\tRenderState get_part_by_call_id finds part by call ID\t","Success\t||\tRenderState get_part_by_call_id returns nil when call ID not found\t","Success\t||\tRenderState actions adds actions to part\t","Success\t||\tRenderState actions adds actions with offset\t","Success\t||\tRenderState actions clears actions for part\t","Success\t||\tRenderState actions gets actions at line\t","Success\t||\tRenderState actions gets all actions from all parts\t","Success\t||\tRenderState update_part_lines updates part line positions\t","Success\t||\tRenderState update_part_lines shifts subsequent content when expanding\t","Success\t||\tRenderState update_part_lines shifts subsequent content when shrinking\t","Success\t||\tRenderState update_part_lines returns false for non-existent part\t","Success\t||\tRenderState remove_part removes part and shifts subsequent content\t","Success\t||\tRenderState remove_part clears line index for removed part\t","Success\t||\tRenderState remove_part returns false for non-existent part\t","Success\t||\tRenderState remove_message removes message and shifts subsequent content\t","Success\t||\tRenderState remove_message clears line index for removed message\t","Success\t||\tRenderState remove_message returns false for non-existent message\t","Success\t||\tRenderState remove_message removes unrendered message without shifting\t","Success\t||\tRenderState shift_all does nothing when delta is 0\t","Success\t||\tRenderState shift_all shifts content at or after from_line\t","Success\t||\tRenderState shift_all shifts actions with parts\t","Success\t||\tRenderState shift_all does not rebuild index when nothing shifted\t","Success\t||\tRenderState shift_all invalidates index when content shifted\t","Success\t||\tRenderState shift_all exits early when content found before from_line\t","Success\t||\tRenderState update_part_data updates part reference\t","Success\t||\tRenderState update_part_data does nothing for non-existent part\t","Success\t||\tRenderState get_unrendered_message_ids returns empty list when no unrendered messages\t","Success\t||\tRenderState get_unrendered_message_ids returns list of unrendered message IDs\t","Success\t||\tRenderState get_unrendered_message_ids returns sorted list of message IDs\t","\t","Success: \t41\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/init_spec.lua\t","Success\t||\topencode has setup function in the public API\t","Success\t||\topencode main module can be required without errors\t","\t","Success: \t2\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/snapshot_spec.lua\t","Success\t||\tsnapshot.restore runs read-tree and checkout-index and notifies on success\t","Success\t||\tsnapshot.restore notifies error if no active session\t","Success\t||\tsnapshot.restore notifies error if read-tree fails\t","Success\t||\tsnapshot.restore notifies error if checkout-index fails\t","\t","Success: \t4\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/event_manager_spec.lua\t","Success\t||\tEventManager should create a new instance\t","Success\t||\tEventManager should subscribe and emit events\t","Success\t||\tEventManager should handle multiple subscribers\t","Success\t||\tEventManager should unsubscribe correctly\t","Success\t||\tEventManager should track subscriber count\t","Success\t||\tEventManager should list event names\t","Success\t||\tEventManager should handle starting and stopping\t","Success\t||\tEventManager should not start multiple times\t","\t","Success: \t8\t","Failed : \t0\t","========================================\t","Error detected while processing command line:","opencode command not found - please install and configure opencode before using this plugin","Unsupported opencode CLI version: opencode 0.4.1. Requires >= 0.4.2","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/core_spec.lua\t","Success\t||\topencode.core open creates windows if they don't exist\t","Success\t||\topencode.core open handles new session properly\t","Success\t||\topencode.core open focuses the appropriate window\t","Success\t||\topencode.core select_session filters sessions by description and parentID\t","Success\t||\topencode.core send_message sends a message via api_client\t","Success\t||\topencode.core send_message creates new session when none active\t","Success\t||\topencode.core opencode_ok (version checks) returns false when opencode executable is missing\t","Success\t||\topencode.core opencode_ok (version checks) returns false when version is below required\t","Success\t||\topencode.core opencode_ok (version checks) returns true when version equals required\t","Success\t||\topencode.core opencode_ok (version checks) returns true when version is above required\t","\t","Success: \t10\t","Failed : \t0\t","========================================\t","File not added to context. Could not read.","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/context_spec.lua\t","Success\t||\textract_from_opencode_message extracts prompt, selected_text, and current_file from tags in parts\t","Success\t||\textract_from_opencode_message returns nils if message or parts missing\t","Success\t||\textract_from_message_legacy extracts legacy tags from text\t","Success\t||\textract_legacy_tag extracts content between tags\t","Success\t||\textract_legacy_tag returns nil if tag not found\t","Success\t||\tformat_message returns a parts array with prompt as first part\t","Success\t||\tformat_message includes mentioned_files and subagents\t","Success\t||\tdelta_context removes current_file if unchanged\t","Success\t||\tdelta_context removes mentioned_subagents if unchanged\t","Success\t||\tadd_file/add_selection/add_subagent adds a file if filereadable\t","Success\t||\tadd_file/add_selection/add_subagent does not add file if not filereadable\t","Success\t||\tadd_file/add_selection/add_subagent adds a selection\t","Success\t||\tadd_file/add_selection/add_subagent adds a subagent\t","\t","Success: \t13\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/opencode_server_spec.lua\t","Success\t||\topencode.opencode_server creates a new server object\t","Success\t||\topencode.opencode_server spawn promise resolves when stdout emits server URL\t","Success\t||\topencode.opencode_server shutdown resolves shutdown_promise and clears fields\t","Success\t||\topencode.opencode_server calls on_error when stderr is triggered\t","Success\t||\topencode.opencode_server calls on_exit and clears fields when process exits\t","\t","Success: \t5\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/config_spec.lua\t","Success\t||\topencode.config uses default values when no options are provided\t","Success\t||\topencode.config merges user options with defaults\t","\t","Success: \t2\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/keymap_spec.lua\t","Success\t||\topencode.keymap setup sets up keymap with new format configured keys\t","Success\t||\topencode.keymap setup sets up keymap with old format configured keys (normalized)\t","Success\t||\topencode.keymap setup sets up callbacks that execute the correct commands (new format)\t","Success\t||\topencode.keymap setup sets up callbacks that execute the correct commands (old format normalized)\t","Success\t||\topencode.keymap normalize_keymap normalizes old format keymap to new format correctly\t","Success\t||\topencode.keymap normalize_keymap shows error message for unknown API functions\t","Success\t||\topencode.keymap normalize_keymap uses custom description from config_entry\t","Success\t||\topencode.keymap normalize_keymap falls back to API description when no custom desc provided\t","Success\t||\topencode.keymap setup_window_keymaps handles unknown API functions with error message\t","Success\t||\topencode.keymap setup_window_keymaps uses custom description for window keymaps\t","Success\t||\topencode.keymap setup_permisson_keymap sets up permission keymaps when there is a current permission\t","Success\t||\topencode.keymap setup_permisson_keymap should delete existing permission keymaps if no current permission exists after being set\t","Success\t||\topencode.keymap setup_permisson_keymap does not set permission keymaps when there is no current permission\t","\t","Success: \t13\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/state_spec.lua\t","Success\t||\topencode.state (observable) notifies listeners on key change\t","Success\t||\topencode.state (observable) notifies wildcard listeners on any key change\t","Success\t||\topencode.state (observable) can unregister listeners\t","Success\t||\topencode.state (observable) does not notify if value is unchanged\t","\t","Success: \t4\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/timer_spec.lua\t","Success\t||\tTimer Timer.new creates a new timer with required options\t","Success\t||\tTimer Timer.new sets repeat_timer to false when explicitly disabled\t","Success\t||\tTimer Timer.new stores optional parameters\t","Success\t||\tTimer Timer:start starts a repeating timer\t","Success\t||\tTimer Timer:start starts a one-shot timer\t","Success\t||\tTimer Timer:start passes arguments to on_tick function\t","Success\t||\tTimer Timer:start stops timer when on_tick returns false\t","Success\t||\tTimer Timer:start stops timer when on_tick throws an error\t","Success\t||\tTimer Timer:start stops previous timer before starting new one\t","Success\t||\tTimer Timer:start throws error when timer creation fails\t","Success\t||\tTimer Timer:stop stops a running timer\t","Success\t||\tTimer Timer:stop calls on_stop callback when provided\t","Success\t||\tTimer Timer:stop does nothing when timer is not running\t","Success\t||\tTimer Timer:stop handles errors in on_stop callback gracefully\t","Success\t||\tTimer Timer:is_running returns false when timer is not started\t","Success\t||\tTimer Timer:is_running returns true when timer is running\t","Success\t||\tTimer Timer:is_running returns false after timer is stopped\t","Success\t||\tTimer Timer:is_running returns false after one-shot timer completes\t","Success\t||\tTimer Integration tests can restart a stopped timer\t","Success\t||\tTimer Integration tests handles rapid start/stop cycles\t","\t","Success: \t20\t","Failed : \t0\t","========================================\t","Two pending permissions? existing: per_9efb5b2f3001aqJAFBMiGjFjVZ new: per_9efb5bc2a001j9Bd6bFjLB7hrc","Two pending permissions? existing: per_9efb5bc2a001j9Bd6bFjLB7hrc new: per_9efb5d6d1001uwVXQ9dhlBlgfO","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/renderer_spec.lua\t","Success\t||\trenderer replays api-error correctly (event-by-event)\t","Success\t||\trenderer replays api-error correctly (session)\t","Success\t||\trenderer replays diff correctly (event-by-event)\t","Success\t||\trenderer replays diff correctly (session)\t","Success\t||\trenderer replays mentions-with-ranges correctly (event-by-event)\t","Success\t||\trenderer replays mentions-with-ranges correctly (session)\t","Success\t||\trenderer replays message-removal correctly (event-by-event)\t","Success\t||\trenderer replays permission-denied correctly (event-by-event)\t","Success\t||\trenderer replays permission-denied correctly (session)\t","Success\t||\trenderer replays permission-prompt correctly (event-by-event)\t","Success\t||\trenderer replays permission correctly (event-by-event)\t","Success\t||\trenderer replays permission correctly (session)\t","Success\t||\trenderer replays planning correctly (event-by-event)\t","Success\t||\trenderer replays planning correctly (session)\t","Success\t||\trenderer replays redo-all correctly (event-by-event)\t","Success\t||\trenderer replays redo-all correctly (session)\t","Success\t||\trenderer replays redo-once correctly (event-by-event)\t","Success\t||\trenderer replays redo-once correctly (session)\t","Success\t||\trenderer replays revert correctly (event-by-event)\t","Success\t||\trenderer replays revert correctly (session)\t","Success\t||\trenderer replays selection correctly (event-by-event)\t","Success\t||\trenderer replays selection correctly (session)\t","Success\t||\trenderer replays shifting-and-multiple-perms correctly (event-by-event)\t","Success\t||\trenderer replays simple-session correctly (event-by-event)\t","Success\t||\trenderer replays simple-session correctly (session)\t","Success\t||\trenderer replays tool-invalid correctly (event-by-event)\t","Success\t||\trenderer replays tool-invalid correctly (session)\t","Success\t||\trenderer replays updating-text correctly (event-by-event)\t","Success\t||\trenderer replays updating-text correctly (session)\t","Success\t||\trenderer unrendered messages is_message_unrendered returns true for unrendered message\t","Success\t||\trenderer unrendered messages is_message_unrendered returns false for rendered message\t","Success\t||\trenderer unrendered messages is_message_unrendered returns false for nil\t","Fail\t||\trenderer unrendered messages _remove_message_from_buffer skips unrendered message\t"," ...ev/neovim-dev/opencode.nvim/tests/unit/renderer_spec.lua:207: Expected objects to not be the same."," Passed in:"," (nil)"," Did not expect:"," type nil"," "," stack traceback:"," \t...ev/neovim-dev/opencode.nvim/tests/unit/renderer_spec.lua:207: in function <...ev/neovim-dev/opencode.nvim/tests/unit/renderer_spec.lua:201>"," \t","Success\t||\trenderer unrendered messages _replace_message_in_buffer returns false for unrendered message\t","Fail\t||\trenderer unrendered messages _rerender_part skips if parent message is unrendered\t"," ...ev/neovim-dev/opencode.nvim/tests/unit/renderer_spec.lua:232: Expected objects to be equal."," Passed in:"," (number) 9"," Expected:"," (number) 15"," "," stack traceback:"," \t...ev/neovim-dev/opencode.nvim/tests/unit/renderer_spec.lua:232: in function <...ev/neovim-dev/opencode.nvim/tests/unit/renderer_spec.lua:222>"," \t","\t","Success: \t33\t","Failed : \t2\t","========================================\t","Tests Failed. Exit: 1\t","✗ Unit tests failed","------------------------------------------------","","======== TEST FAILURES SUMMARY ========","Found 2 failing test(s):","","FAILED TEST: \trenderer unrendered messages _remove_message_from_buffer skips unrendered message\t","FAILED TEST: \trenderer unrendered messages _rerender_part skips if parent message is unrendered\t","","`````","",""],"actions":[],"extmarks":[[1,1,0,{"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-23 21:00:24)","OpencodeHint"],[" [msg_a12df6fcc002lSmBoztX2X6eCp]","OpencodeHint"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":10,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"virt_text_win_col":-3}],[2,3,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[3,4,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[4,5,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[5,6,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[6,7,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[7,8,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[8,9,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[9,10,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[10,11,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[11,12,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[12,13,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[13,14,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[14,15,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[15,16,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[16,17,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[17,18,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[18,19,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[19,20,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[20,21,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[21,22,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[22,23,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[23,24,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[24,25,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[25,26,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[26,27,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[27,28,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[28,29,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[29,30,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[30,31,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[31,32,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[32,33,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[33,34,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[34,35,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[35,36,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[36,37,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[37,38,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[38,39,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[39,40,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[40,41,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[41,42,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[42,43,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[43,44,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[44,45,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[45,46,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[46,47,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[47,48,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[48,49,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[49,50,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[50,51,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[51,52,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[52,53,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[53,54,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[54,55,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[55,56,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[56,57,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[57,58,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[58,59,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[59,60,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[60,61,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[61,62,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[62,63,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[63,64,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[64,65,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[65,66,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[66,67,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[67,68,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[68,69,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[69,70,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[70,71,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[71,72,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[72,73,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[73,74,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[74,75,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[75,76,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[76,77,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[77,78,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[78,79,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[79,80,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[80,81,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[81,82,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[82,83,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[83,84,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[84,85,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[85,86,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[86,87,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[87,88,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[88,89,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[89,90,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[90,91,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[91,92,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[92,93,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[93,94,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[94,95,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[95,96,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[96,97,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[97,98,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[98,99,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[99,100,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[100,101,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[101,102,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[102,103,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[103,104,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[104,105,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[105,106,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[106,107,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[107,108,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[108,109,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[109,110,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[110,111,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[111,112,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[112,113,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[113,114,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[114,115,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[115,116,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[116,117,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[117,118,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[118,119,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[119,120,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[120,121,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[121,122,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[122,123,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[123,124,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[124,125,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[125,126,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[126,127,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[127,128,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[128,129,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[129,130,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[130,131,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[131,132,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[132,133,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[133,134,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[134,135,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[135,136,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[136,137,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[137,138,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[138,139,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[139,140,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[140,141,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[141,142,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[142,143,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[143,144,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[144,145,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[145,146,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[146,147,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[147,148,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[148,149,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[149,150,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[150,151,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[151,152,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[152,153,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[153,154,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[154,155,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[155,156,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[156,157,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[157,158,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[158,159,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[159,160,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[160,161,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[161,162,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[162,163,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[163,164,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[164,165,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[165,166,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[166,167,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[167,168,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[168,169,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[169,170,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[170,171,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[171,172,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[172,173,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[173,174,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[174,175,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[175,176,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[176,177,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[177,178,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[178,179,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[179,180,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[180,181,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[181,182,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[182,183,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[183,184,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[184,185,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[185,186,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[186,187,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[187,188,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[188,189,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[189,190,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[190,191,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[191,192,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[192,193,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[193,194,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[194,195,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[195,196,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[196,197,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[197,198,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[198,199,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[199,200,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[200,201,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[201,202,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[202,203,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[203,204,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[204,205,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[205,206,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[206,207,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[207,208,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[208,209,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[209,210,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[210,211,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[211,212,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[212,213,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[213,214,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[214,215,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[215,216,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[216,217,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[217,218,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[218,219,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[219,220,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[220,221,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[221,222,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[222,223,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[223,224,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[224,225,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[225,226,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[226,227,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[227,228,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[228,229,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[229,230,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[230,231,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[231,232,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[232,233,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[233,234,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[234,235,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[235,236,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[236,237,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[237,238,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[238,239,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[239,240,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[240,241,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[241,242,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[242,243,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[243,244,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[244,245,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[245,246,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[246,247,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[247,248,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[248,249,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[249,250,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[250,251,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[251,252,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[252,253,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[253,254,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[254,255,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[255,256,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[256,257,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[257,258,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[258,259,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[259,260,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[260,261,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[261,262,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[262,263,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[263,264,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[264,265,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[265,266,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[266,267,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[267,268,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[268,269,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[269,270,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[270,271,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[271,272,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[272,273,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[273,274,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[274,275,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[275,276,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[276,277,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[277,278,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[278,279,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[279,280,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[280,281,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[281,282,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[282,283,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[283,284,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[284,285,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[285,286,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[286,287,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[287,288,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[288,289,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[289,290,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[290,291,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[291,292,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[292,293,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[293,294,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[294,295,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[295,296,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[296,297,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[297,298,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[298,299,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[299,300,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[300,301,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[301,302,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[302,303,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[303,304,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[304,305,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[305,306,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[306,307,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[307,308,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[308,309,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[309,310,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[310,311,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[311,312,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[312,313,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[313,314,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[314,315,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[315,316,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[316,317,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[317,318,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[318,319,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[319,320,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[320,321,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[321,322,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[322,323,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[323,324,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[324,325,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[325,326,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[326,327,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[327,328,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[328,329,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[329,330,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[330,331,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[331,332,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[332,333,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[333,334,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[334,335,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[335,336,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[336,337,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[337,338,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[338,339,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[339,340,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[340,341,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[341,342,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[342,343,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[343,344,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[344,345,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[345,346,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[346,347,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[347,348,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[348,349,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[349,350,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[350,351,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[351,352,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[352,353,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[353,354,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[354,355,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[355,356,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[356,357,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[357,358,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[358,359,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[359,360,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[360,361,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[361,362,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[362,363,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[363,364,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[364,365,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[365,366,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[366,367,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[367,368,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[368,369,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[369,370,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[370,371,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[371,372,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[372,373,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[373,374,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[374,375,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[375,376,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[376,377,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[377,378,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[378,379,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[379,380,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[380,381,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[381,382,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[382,383,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[383,384,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[384,385,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[385,386,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[386,387,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[387,388,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[388,389,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[389,390,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[390,391,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[391,392,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[392,393,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[393,394,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[394,395,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[395,396,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[396,397,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[397,398,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[398,399,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[399,400,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[400,401,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[401,402,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[402,403,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[403,404,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[404,405,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[405,406,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}],[406,407,0,{"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_pos":"win_col","ns_id":3,"priority":4096,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1}]],"timestamp":1766431561} \ No newline at end of file +{"lines":["----","","","** run** `Run all tests to verify refactoring`","","`````bash","> cd /Users/cam/Dev/neovim-dev/opencode.nvim && ./run_tests.sh","","Running tests for opencode.nvim","------------------------------------------------","Starting...Scheduling: ./tests/minimal/plugin_spec.lua","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/minimal/plugin_spec.lua\t","Success\t||\topencode.nvim plugin loads the plugin without errors\t","Success\t||\topencode.nvim plugin can be set up with custom config\t","\t","Success: \t2\t","Failed : \t0\t","========================================\t","✓ Minimal tests passed","------------------------------------------------","Starting...Scheduling: ./tests/unit/timer_spec.lua","Scheduling: ./tests/unit/server_job_spec.lua","Scheduling: ./tests/unit/config_spec.lua","Scheduling: ./tests/unit/api_spec.lua","Scheduling: ./tests/unit/event_manager_spec.lua","Scheduling: ./tests/unit/init_spec.lua","Scheduling: ./tests/unit/state_spec.lua","Scheduling: ./tests/unit/id_spec.lua","Scheduling: ./tests/unit/api_client_spec.lua","Scheduling: ./tests/unit/context_spec.lua","Scheduling: ./tests/unit/session_spec.lua","Scheduling: ./tests/unit/config_file_spec.lua","Scheduling: ./tests/unit/renderer_spec.lua","Scheduling: ./tests/unit/opencode_server_spec.lua","Scheduling: ./tests/unit/core_spec.lua","Scheduling: ./tests/unit/render_state_spec.lua","Scheduling: ./tests/unit/snapshot_spec.lua","Scheduling: ./tests/unit/keymap_spec.lua","Scheduling: ./tests/unit/util_spec.lua","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/server_job_spec.lua\t","Success\t||\tserver_job exposes expected public functions\t","Success\t||\tserver_job call_api resolves with decoded json and toggles is_job_running\t","Success\t||\tserver_job call_api rejects on non 2xx\t","Success\t||\tserver_job stream_api forwards chunks\t","Success\t||\tserver_job ensure_server spawns a new opencode server only once\t","\t","Success: \t5\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/util_spec.lua\t","Success\t||\tutil.parse_dot_args parses flat booleans\t","Success\t||\tutil.parse_dot_args parses nested dot notation\t","Success\t||\tutil.parse_dot_args parses mixed nesting and booleans\t","Success\t||\tutil.parse_dot_args parses numbers\t","Success\t||\tutil.parse_dot_args handles empty string\t","\t","Success: \t5\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/api_client_spec.lua\t","Success\t||\tapi_client should create a new client instance\t","Success\t||\tapi_client should remove trailing slash from base_url\t","Success\t||\tapi_client should create client using create factory function\t","Success\t||\tapi_client should have all expected API methods\t","Success\t||\tapi_client should construct URLs correctly with query parameters\t","\t","Success: \t5\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/session_spec.lua\t","Success\t||\topencode.session get_last_workspace_session returns the most recent session for current workspace\t","Success\t||\topencode.session get_last_workspace_session returns nil when no sessions match the workspace\t","Success\t||\topencode.session get_last_workspace_session handles JSON parsing errors\t","Success\t||\topencode.session get_last_workspace_session handles empty session list\t","Success\t||\topencode.session get_by_name returns the session with matching ID\t","Success\t||\topencode.session get_by_name returns nil when no session matches the ID\t","Success\t||\topencode.session read_json_dir returns nil for non-existent directory\t","Success\t||\topencode.session read_json_dir returns nil when directory exists but has no JSON files\t","Success\t||\topencode.session read_json_dir returns decoded JSON content from directory\t","Success\t||\topencode.session read_json_dir skips invalid JSON files\t","Success\t||\topencode.session get_messages returns nil when session is nil\t","Success\t||\topencode.session get_messages returns nil when messages directory does not exist\t","Success\t||\topencode.session get_messages returns messages with their parts\t","\t","Success: \t13\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/config_file_spec.lua\t","Success\t||\tconfig_file.setup lazily loads config when accessed\t","Success\t||\tconfig_file.setup get_opencode_agents returns primary + defaults\t","Success\t||\tconfig_file.setup get_opencode_project returns project\t","\t","Success: \t3\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/api_spec.lua\t","Success\t||\topencode.api commands table contains the expected commands with proper structure\t","Success\t||\topencode.api setup registers all commands\t","Success\t||\topencode.api setup sets up command functions that call the correct core functions\t","Success\t||\topencode.api Lua API provides callable functions that match commands\t","\t","Success: \t4\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/id_spec.lua\t","Success\t||\tID module should generate ascending session IDs\t","Success\t||\tID module should generate descending message IDs\t","Success\t||\tID module should validate given IDs correctly\t","Success\t||\tID module should throw error for invalid given IDs\t","Success\t||\tID module should validate schemas correctly\t","Success\t||\tID module should return available prefixes\t","Success\t||\tID module should generate IDs with correct length structure\t","\t","Success: \t7\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/render_state_spec.lua\t","Success\t||\tRenderState new and reset creates a new instance\t","Success\t||\tRenderState new and reset resets to empty state\t","Success\t||\tRenderState set_message sets a new message\t","Success\t||\tRenderState set_message updates line index for message\t","Success\t||\tRenderState set_message updates existing message\t","Success\t||\tRenderState set_part sets a new part\t","Success\t||\tRenderState set_part updates line index for part\t","Success\t||\tRenderState set_part initializes actions array\t","Success\t||\tRenderState get_part_at_line returns part at line\t","Success\t||\tRenderState get_part_at_line returns nil for line without part\t","Success\t||\tRenderState get_message_at_line returns message at line\t","Success\t||\tRenderState get_message_at_line returns nil for line without message\t","Success\t||\tRenderState get_part_by_call_id finds part by call ID\t","Success\t||\tRenderState get_part_by_call_id returns nil when call ID not found\t","Success\t||\tRenderState actions adds actions to part\t","Success\t||\tRenderState actions adds actions with offset\t","Success\t||\tRenderState actions clears actions for part\t","Success\t||\tRenderState actions gets actions at line\t","Success\t||\tRenderState actions gets all actions from all parts\t","Success\t||\tRenderState update_part_lines updates part line positions\t","Success\t||\tRenderState update_part_lines shifts subsequent content when expanding\t","Success\t||\tRenderState update_part_lines shifts subsequent content when shrinking\t","Success\t||\tRenderState update_part_lines returns false for non-existent part\t","Success\t||\tRenderState remove_part removes part and shifts subsequent content\t","Success\t||\tRenderState remove_part clears line index for removed part\t","Success\t||\tRenderState remove_part returns false for non-existent part\t","Success\t||\tRenderState remove_message removes message and shifts subsequent content\t","Success\t||\tRenderState remove_message clears line index for removed message\t","Success\t||\tRenderState remove_message returns false for non-existent message\t","Success\t||\tRenderState remove_message removes unrendered message without shifting\t","Success\t||\tRenderState shift_all does nothing when delta is 0\t","Success\t||\tRenderState shift_all shifts content at or after from_line\t","Success\t||\tRenderState shift_all shifts actions with parts\t","Success\t||\tRenderState shift_all does not rebuild index when nothing shifted\t","Success\t||\tRenderState shift_all invalidates index when content shifted\t","Success\t||\tRenderState shift_all exits early when content found before from_line\t","Success\t||\tRenderState update_part_data updates part reference\t","Success\t||\tRenderState update_part_data does nothing for non-existent part\t","Success\t||\tRenderState get_unrendered_message_ids returns empty list when no unrendered messages\t","Success\t||\tRenderState get_unrendered_message_ids returns list of unrendered message IDs\t","Success\t||\tRenderState get_unrendered_message_ids returns sorted list of message IDs\t","\t","Success: \t41\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/init_spec.lua\t","Success\t||\topencode has setup function in the public API\t","Success\t||\topencode main module can be required without errors\t","\t","Success: \t2\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/snapshot_spec.lua\t","Success\t||\tsnapshot.restore runs read-tree and checkout-index and notifies on success\t","Success\t||\tsnapshot.restore notifies error if no active session\t","Success\t||\tsnapshot.restore notifies error if read-tree fails\t","Success\t||\tsnapshot.restore notifies error if checkout-index fails\t","\t","Success: \t4\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/event_manager_spec.lua\t","Success\t||\tEventManager should create a new instance\t","Success\t||\tEventManager should subscribe and emit events\t","Success\t||\tEventManager should handle multiple subscribers\t","Success\t||\tEventManager should unsubscribe correctly\t","Success\t||\tEventManager should track subscriber count\t","Success\t||\tEventManager should list event names\t","Success\t||\tEventManager should handle starting and stopping\t","Success\t||\tEventManager should not start multiple times\t","\t","Success: \t8\t","Failed : \t0\t","========================================\t","Error detected while processing command line:","opencode command not found - please install and configure opencode before using this plugin","Unsupported opencode CLI version: opencode 0.4.1. Requires >= 0.4.2","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/core_spec.lua\t","Success\t||\topencode.core open creates windows if they don't exist\t","Success\t||\topencode.core open handles new session properly\t","Success\t||\topencode.core open focuses the appropriate window\t","Success\t||\topencode.core select_session filters sessions by description and parentID\t","Success\t||\topencode.core send_message sends a message via api_client\t","Success\t||\topencode.core send_message creates new session when none active\t","Success\t||\topencode.core opencode_ok (version checks) returns false when opencode executable is missing\t","Success\t||\topencode.core opencode_ok (version checks) returns false when version is below required\t","Success\t||\topencode.core opencode_ok (version checks) returns true when version equals required\t","Success\t||\topencode.core opencode_ok (version checks) returns true when version is above required\t","\t","Success: \t10\t","Failed : \t0\t","========================================\t","File not added to context. Could not read.","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/context_spec.lua\t","Success\t||\textract_from_opencode_message extracts prompt, selected_text, and current_file from tags in parts\t","Success\t||\textract_from_opencode_message returns nils if message or parts missing\t","Success\t||\textract_from_message_legacy extracts legacy tags from text\t","Success\t||\textract_legacy_tag extracts content between tags\t","Success\t||\textract_legacy_tag returns nil if tag not found\t","Success\t||\tformat_message returns a parts array with prompt as first part\t","Success\t||\tformat_message includes mentioned_files and subagents\t","Success\t||\tdelta_context removes current_file if unchanged\t","Success\t||\tdelta_context removes mentioned_subagents if unchanged\t","Success\t||\tadd_file/add_selection/add_subagent adds a file if filereadable\t","Success\t||\tadd_file/add_selection/add_subagent does not add file if not filereadable\t","Success\t||\tadd_file/add_selection/add_subagent adds a selection\t","Success\t||\tadd_file/add_selection/add_subagent adds a subagent\t","\t","Success: \t13\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/opencode_server_spec.lua\t","Success\t||\topencode.opencode_server creates a new server object\t","Success\t||\topencode.opencode_server spawn promise resolves when stdout emits server URL\t","Success\t||\topencode.opencode_server shutdown resolves shutdown_promise and clears fields\t","Success\t||\topencode.opencode_server calls on_error when stderr is triggered\t","Success\t||\topencode.opencode_server calls on_exit and clears fields when process exits\t","\t","Success: \t5\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/config_spec.lua\t","Success\t||\topencode.config uses default values when no options are provided\t","Success\t||\topencode.config merges user options with defaults\t","\t","Success: \t2\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/keymap_spec.lua\t","Success\t||\topencode.keymap setup sets up keymap with new format configured keys\t","Success\t||\topencode.keymap setup sets up keymap with old format configured keys (normalized)\t","Success\t||\topencode.keymap setup sets up callbacks that execute the correct commands (new format)\t","Success\t||\topencode.keymap setup sets up callbacks that execute the correct commands (old format normalized)\t","Success\t||\topencode.keymap normalize_keymap normalizes old format keymap to new format correctly\t","Success\t||\topencode.keymap normalize_keymap shows error message for unknown API functions\t","Success\t||\topencode.keymap normalize_keymap uses custom description from config_entry\t","Success\t||\topencode.keymap normalize_keymap falls back to API description when no custom desc provided\t","Success\t||\topencode.keymap setup_window_keymaps handles unknown API functions with error message\t","Success\t||\topencode.keymap setup_window_keymaps uses custom description for window keymaps\t","Success\t||\topencode.keymap setup_permisson_keymap sets up permission keymaps when there is a current permission\t","Success\t||\topencode.keymap setup_permisson_keymap should delete existing permission keymaps if no current permission exists after being set\t","Success\t||\topencode.keymap setup_permisson_keymap does not set permission keymaps when there is no current permission\t","\t","Success: \t13\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/state_spec.lua\t","Success\t||\topencode.state (observable) notifies listeners on key change\t","Success\t||\topencode.state (observable) notifies wildcard listeners on any key change\t","Success\t||\topencode.state (observable) can unregister listeners\t","Success\t||\topencode.state (observable) does not notify if value is unchanged\t","\t","Success: \t4\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/timer_spec.lua\t","Success\t||\tTimer Timer.new creates a new timer with required options\t","Success\t||\tTimer Timer.new sets repeat_timer to false when explicitly disabled\t","Success\t||\tTimer Timer.new stores optional parameters\t","Success\t||\tTimer Timer:start starts a repeating timer\t","Success\t||\tTimer Timer:start starts a one-shot timer\t","Success\t||\tTimer Timer:start passes arguments to on_tick function\t","Success\t||\tTimer Timer:start stops timer when on_tick returns false\t","Success\t||\tTimer Timer:start stops timer when on_tick throws an error\t","Success\t||\tTimer Timer:start stops previous timer before starting new one\t","Success\t||\tTimer Timer:start throws error when timer creation fails\t","Success\t||\tTimer Timer:stop stops a running timer\t","Success\t||\tTimer Timer:stop calls on_stop callback when provided\t","Success\t||\tTimer Timer:stop does nothing when timer is not running\t","Success\t||\tTimer Timer:stop handles errors in on_stop callback gracefully\t","Success\t||\tTimer Timer:is_running returns false when timer is not started\t","Success\t||\tTimer Timer:is_running returns true when timer is running\t","Success\t||\tTimer Timer:is_running returns false after timer is stopped\t","Success\t||\tTimer Timer:is_running returns false after one-shot timer completes\t","Success\t||\tTimer Integration tests can restart a stopped timer\t","Success\t||\tTimer Integration tests handles rapid start/stop cycles\t","\t","Success: \t20\t","Failed : \t0\t","========================================\t","Two pending permissions? existing: per_9efb5b2f3001aqJAFBMiGjFjVZ new: per_9efb5bc2a001j9Bd6bFjLB7hrc","Two pending permissions? existing: per_9efb5bc2a001j9Bd6bFjLB7hrc new: per_9efb5d6d1001uwVXQ9dhlBlgfO","","========================================\t","Testing: \t/Users/cam/Dev/neovim-dev/opencode.nvim/tests/unit/renderer_spec.lua\t","Success\t||\trenderer replays api-error correctly (event-by-event)\t","Success\t||\trenderer replays api-error correctly (session)\t","Success\t||\trenderer replays diff correctly (event-by-event)\t","Success\t||\trenderer replays diff correctly (session)\t","Success\t||\trenderer replays mentions-with-ranges correctly (event-by-event)\t","Success\t||\trenderer replays mentions-with-ranges correctly (session)\t","Success\t||\trenderer replays message-removal correctly (event-by-event)\t","Success\t||\trenderer replays permission-denied correctly (event-by-event)\t","Success\t||\trenderer replays permission-denied correctly (session)\t","Success\t||\trenderer replays permission-prompt correctly (event-by-event)\t","Success\t||\trenderer replays permission correctly (event-by-event)\t","Success\t||\trenderer replays permission correctly (session)\t","Success\t||\trenderer replays planning correctly (event-by-event)\t","Success\t||\trenderer replays planning correctly (session)\t","Success\t||\trenderer replays redo-all correctly (event-by-event)\t","Success\t||\trenderer replays redo-all correctly (session)\t","Success\t||\trenderer replays redo-once correctly (event-by-event)\t","Success\t||\trenderer replays redo-once correctly (session)\t","Success\t||\trenderer replays revert correctly (event-by-event)\t","Success\t||\trenderer replays revert correctly (session)\t","Success\t||\trenderer replays selection correctly (event-by-event)\t","Success\t||\trenderer replays selection correctly (session)\t","Success\t||\trenderer replays shifting-and-multiple-perms correctly (event-by-event)\t","Success\t||\trenderer replays simple-session correctly (event-by-event)\t","Success\t||\trenderer replays simple-session correctly (session)\t","Success\t||\trenderer replays tool-invalid correctly (event-by-event)\t","Success\t||\trenderer replays tool-invalid correctly (session)\t","Success\t||\trenderer replays updating-text correctly (event-by-event)\t","Success\t||\trenderer replays updating-text correctly (session)\t","Success\t||\trenderer unrendered messages is_message_unrendered returns true for unrendered message\t","Success\t||\trenderer unrendered messages is_message_unrendered returns false for rendered message\t","Success\t||\trenderer unrendered messages is_message_unrendered returns false for nil\t","Fail\t||\trenderer unrendered messages _remove_message_from_buffer skips unrendered message\t"," ...ev/neovim-dev/opencode.nvim/tests/unit/renderer_spec.lua:207: Expected objects to not be the same."," Passed in:"," (nil)"," Did not expect:"," type nil"," "," stack traceback:"," \t...ev/neovim-dev/opencode.nvim/tests/unit/renderer_spec.lua:207: in function <...ev/neovim-dev/opencode.nvim/tests/unit/renderer_spec.lua:201>"," \t","Success\t||\trenderer unrendered messages _replace_message_in_buffer returns false for unrendered message\t","Fail\t||\trenderer unrendered messages _rerender_part skips if parent message is unrendered\t"," ...ev/neovim-dev/opencode.nvim/tests/unit/renderer_spec.lua:232: Expected objects to be equal."," Passed in:"," (number) 9"," Expected:"," (number) 15"," "," stack traceback:"," \t...ev/neovim-dev/opencode.nvim/tests/unit/renderer_spec.lua:232: in function <...ev/neovim-dev/opencode.nvim/tests/unit/renderer_spec.lua:222>"," \t","\t","Success: \t33\t","Failed : \t2\t","========================================\t","Tests Failed. Exit: 1\t","✗ Unit tests failed","------------------------------------------------","","======== TEST FAILURES SUMMARY ========","Found 2 failing test(s):","","FAILED TEST: \trenderer unrendered messages _remove_message_from_buffer skips unrendered message\t","FAILED TEST: \trenderer unrendered messages _rerender_part skips if parent message is unrendered\t","","`````","",""],"extmarks":[[1,1,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-23 21:00:24)","OpencodeHint"],[" [msg_a12df6fcc002lSmBoztX2X6eCp]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10,"virt_text_repeat_linebreak":false}],[2,3,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[3,4,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[4,5,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[5,6,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[6,7,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[7,8,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[8,9,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[9,10,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[10,11,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[11,12,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[12,13,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[13,14,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[14,15,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[15,16,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[16,17,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[17,18,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[18,19,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[19,20,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[20,21,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[21,22,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[22,23,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[23,24,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[24,25,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[25,26,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[26,27,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[27,28,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[28,29,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[29,30,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[30,31,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[31,32,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[32,33,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[33,34,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[34,35,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[35,36,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[36,37,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[37,38,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[38,39,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[39,40,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[40,41,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[41,42,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[42,43,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[43,44,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[44,45,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[45,46,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[46,47,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[47,48,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[48,49,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[49,50,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[50,51,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[51,52,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[52,53,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[53,54,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[54,55,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[55,56,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[56,57,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[57,58,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[58,59,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[59,60,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[60,61,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[61,62,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[62,63,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[63,64,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[64,65,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[65,66,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[66,67,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[67,68,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[68,69,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[69,70,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[70,71,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[71,72,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[72,73,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[73,74,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[74,75,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[75,76,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[76,77,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[77,78,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[78,79,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[79,80,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[80,81,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[81,82,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[82,83,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[83,84,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[84,85,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[85,86,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[86,87,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[87,88,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[88,89,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[89,90,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[90,91,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[91,92,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[92,93,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[93,94,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[94,95,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[95,96,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[96,97,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[97,98,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[98,99,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[99,100,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[100,101,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[101,102,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[102,103,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[103,104,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[104,105,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[105,106,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[106,107,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[107,108,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[108,109,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[109,110,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[110,111,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[111,112,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[112,113,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[113,114,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[114,115,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[115,116,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[116,117,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[117,118,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[118,119,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[119,120,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[120,121,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[121,122,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[122,123,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[123,124,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[124,125,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[125,126,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[126,127,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[127,128,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[128,129,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[129,130,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[130,131,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[131,132,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[132,133,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[133,134,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[134,135,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[135,136,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[136,137,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[137,138,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[138,139,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[139,140,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[140,141,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[141,142,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[142,143,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[143,144,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[144,145,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[145,146,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[146,147,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[147,148,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[148,149,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[149,150,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[150,151,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[151,152,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[152,153,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[153,154,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[154,155,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[155,156,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[156,157,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[157,158,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[158,159,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[159,160,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[160,161,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[161,162,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[162,163,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[163,164,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[164,165,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[165,166,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[166,167,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[167,168,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[168,169,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[169,170,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[170,171,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[171,172,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[172,173,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[173,174,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[174,175,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[175,176,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[176,177,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[177,178,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[178,179,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[179,180,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[180,181,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[181,182,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[182,183,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[183,184,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[184,185,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[185,186,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[186,187,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[187,188,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[188,189,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[189,190,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[190,191,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[191,192,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[192,193,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[193,194,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[194,195,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[195,196,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[196,197,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[197,198,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[198,199,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[199,200,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[200,201,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[201,202,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[202,203,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[203,204,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[204,205,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[205,206,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[206,207,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[207,208,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[208,209,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[209,210,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[210,211,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[211,212,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[212,213,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[213,214,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[214,215,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[215,216,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[216,217,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[217,218,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[218,219,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[219,220,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[220,221,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[221,222,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[222,223,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[223,224,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[224,225,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[225,226,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[226,227,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[227,228,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[228,229,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[229,230,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[230,231,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[231,232,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[232,233,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[233,234,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[234,235,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[235,236,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[236,237,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[237,238,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[238,239,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[239,240,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[240,241,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[241,242,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[242,243,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[243,244,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[244,245,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[245,246,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[246,247,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[247,248,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[248,249,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[249,250,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[250,251,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[251,252,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[252,253,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[253,254,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[254,255,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[255,256,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[256,257,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[257,258,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[258,259,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[259,260,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[260,261,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[261,262,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[262,263,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[263,264,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[264,265,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[265,266,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[266,267,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[267,268,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[268,269,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[269,270,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[270,271,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[271,272,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[272,273,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[273,274,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[274,275,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[275,276,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[276,277,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[277,278,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[278,279,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[279,280,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[280,281,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[281,282,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[282,283,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[283,284,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[284,285,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[285,286,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[286,287,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[287,288,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[288,289,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[289,290,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[290,291,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[291,292,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[292,293,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[293,294,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[294,295,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[295,296,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[296,297,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[297,298,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[298,299,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[299,300,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[300,301,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[301,302,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[302,303,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[303,304,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[304,305,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[305,306,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[306,307,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[307,308,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[308,309,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[309,310,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[310,311,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[311,312,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[312,313,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[313,314,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[314,315,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[315,316,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[316,317,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[317,318,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[318,319,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[319,320,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[320,321,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[321,322,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[322,323,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[323,324,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[324,325,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[325,326,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[326,327,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[327,328,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[328,329,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[329,330,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[330,331,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[331,332,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[332,333,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[333,334,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[334,335,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[335,336,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[336,337,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[337,338,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[338,339,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[339,340,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[340,341,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[341,342,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[342,343,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[343,344,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[344,345,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[345,346,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[346,347,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[347,348,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[348,349,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[349,350,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[350,351,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[351,352,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[352,353,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[353,354,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[354,355,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[355,356,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[356,357,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[357,358,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[358,359,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[359,360,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[360,361,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[361,362,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[362,363,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[363,364,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[364,365,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[365,366,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[366,367,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[367,368,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[368,369,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[369,370,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[370,371,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[371,372,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[372,373,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[373,374,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[374,375,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[375,376,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[376,377,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[377,378,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[378,379,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[379,380,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[380,381,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[381,382,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[382,383,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[383,384,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[384,385,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[385,386,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[386,387,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[387,388,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[388,389,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[389,390,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[390,391,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[391,392,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[392,393,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[393,394,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[394,395,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[395,396,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[396,397,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[397,398,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[398,399,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[399,400,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[400,401,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[401,402,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[402,403,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[403,404,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[404,405,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[405,406,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}],[406,407,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true}]],"timestamp":1766432122,"actions":[]} \ No newline at end of file diff --git a/tests/data/api-abort.expected.json b/tests/data/api-abort.expected.json index d0e7becd..fec9e9bf 100644 --- a/tests/data/api-abort.expected.json +++ b/tests/data/api-abort.expected.json @@ -1 +1 @@ -{"actions":[],"extmarks":[[1,1,0,{"virt_text_pos":"win_col","virt_text_win_col":-3,"ns_id":3,"priority":10,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-27 22:44:29)","OpencodeHint"],[" [msg_a27d8299d001nchmBunYlZcPyL]","OpencodeHint"]]}],[2,2,0,{"virt_text_pos":"win_col","virt_text_win_col":-3,"ns_id":3,"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[3,3,0,{"virt_text_pos":"win_col","virt_text_win_col":-3,"ns_id":3,"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[4,4,0,{"virt_text_pos":"win_col","virt_text_win_col":-3,"ns_id":3,"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[5,5,0,{"virt_text_pos":"win_col","virt_text_win_col":-3,"ns_id":3,"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[6,8,0,{"virt_text_pos":"win_col","virt_text_win_col":-3,"ns_id":3,"priority":10,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" gpt-4.1","OpencodeHint"],[" (2025-10-27 22:44:29)","OpencodeHint"],[" [msg_a27d829f9002sfUFPslHq5P2b4]","OpencodeHint"]]}]],"lines":["----","","","can generate 10 numbers?","","[a-empty.txt](a-empty.txt)","","----","","","You asked if I can generate 10 numbers, and you referenced reading an empty file (`a-empty.txt`). However, I'm currently in \"plan mode,\" which means I cannot write or modify any files—I'm only allowed to read, observe,","","> [!ERROR] The operation was aborted.","",""],"timestamp":1766431561} \ No newline at end of file +{"timestamp":1766432123,"extmarks":[[1,1,0,{"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-27 22:44:29)","OpencodeHint"],[" [msg_a27d8299d001nchmBunYlZcPyL]","OpencodeHint"]],"virt_text_repeat_linebreak":false,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10}],[2,2,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_repeat_linebreak":true,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[3,3,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_repeat_linebreak":true,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[4,4,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_repeat_linebreak":true,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[5,5,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_repeat_linebreak":true,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[6,8,0,{"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" gpt-4.1","OpencodeHint"],[" (2025-10-27 22:44:29)","OpencodeHint"],[" [msg_a27d829f9002sfUFPslHq5P2b4]","OpencodeHint"]],"virt_text_repeat_linebreak":false,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10}]],"actions":[],"lines":["----","","","can generate 10 numbers?","","[a-empty.txt](a-empty.txt)","","----","","","You asked if I can generate 10 numbers, and you referenced reading an empty file (`a-empty.txt`). However, I'm currently in \"plan mode,\" which means I cannot write or modify any files—I'm only allowed to read, observe,","","> [!ERROR] The operation was aborted.","",""]} \ No newline at end of file diff --git a/tests/data/api-error.expected.json b/tests/data/api-error.expected.json index 62f9b3a8..b70b7c56 100644 --- a/tests/data/api-error.expected.json +++ b/tests/data/api-error.expected.json @@ -1 +1 @@ -{"lines":["----","","","test 3","","[diff-test.txt](diff-test.txt)","","----","","","This is some sample text","","> [!ERROR] Simulated: tool/file read failed for earlier assistant message","","----","","","> [!ERROR] AI_APICallError: Your credit balance is too low to access the Anthropic API. Please go to Plans & Billing to upgrade or purchase credits.","",""],"extmarks":[[1,1,0,{"priority":10,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-20 04:44:37)","OpencodeHint"],[" [msg_9ffef0129001CoCrBKemk7DqcU]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[2,2,0,{"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[3,3,0,{"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[4,4,0,{"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[5,5,0,{"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[6,8,0,{"priority":10,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" claude-sonnet-4-5-20250929","OpencodeHint"],[" (2025-10-20 04:44:37)","OpencodeHint"],[" [msg_9ffef0160001eArLyAssT]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[7,15,0,{"priority":10,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" claude-sonnet-4-5-20250929","OpencodeHint"],[" (2025-10-20 04:44:37)","OpencodeHint"],[" [msg_9ffef0170001s2OM00h2cDa94A]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3}]],"timestamp":1766431562,"actions":[]} \ No newline at end of file +{"lines":["----","","","test 3","","[diff-test.txt](diff-test.txt)","","----","","","This is some sample text","","> [!ERROR] Simulated: tool/file read failed for earlier assistant message","","----","","","> [!ERROR] AI_APICallError: Your credit balance is too low to access the Anthropic API. Please go to Plans & Billing to upgrade or purchase credits.","",""],"timestamp":1766432123,"actions":[],"extmarks":[[1,1,0,{"virt_text_hide":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-20 04:44:37)","OpencodeHint"],[" [msg_9ffef0129001CoCrBKemk7DqcU]","OpencodeHint"]],"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"priority":10,"virt_text_pos":"win_col","ns_id":3,"right_gravity":true}],[2,2,0,{"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"priority":4096,"virt_text_pos":"win_col","ns_id":3,"right_gravity":true}],[3,3,0,{"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"priority":4096,"virt_text_pos":"win_col","ns_id":3,"right_gravity":true}],[4,4,0,{"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"priority":4096,"virt_text_pos":"win_col","ns_id":3,"right_gravity":true}],[5,5,0,{"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"priority":4096,"virt_text_pos":"win_col","ns_id":3,"right_gravity":true}],[6,8,0,{"virt_text_hide":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" claude-sonnet-4-5-20250929","OpencodeHint"],[" (2025-10-20 04:44:37)","OpencodeHint"],[" [msg_9ffef0160001eArLyAssT]","OpencodeHint"]],"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"priority":10,"virt_text_pos":"win_col","ns_id":3,"right_gravity":true}],[7,15,0,{"virt_text_hide":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" claude-sonnet-4-5-20250929","OpencodeHint"],[" (2025-10-20 04:44:37)","OpencodeHint"],[" [msg_9ffef0170001s2OM00h2cDa94A]","OpencodeHint"]],"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"priority":10,"virt_text_pos":"win_col","ns_id":3,"right_gravity":true}]]} \ No newline at end of file diff --git a/tests/data/cursor_data.expected.json b/tests/data/cursor_data.expected.json index 58861a1b..96085f7c 100644 --- a/tests/data/cursor_data.expected.json +++ b/tests/data/cursor_data.expected.json @@ -1 +1 @@ -{"extmarks":[[1,1,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":false,"priority":10,"virt_text_win_col":-3,"ns_id":3,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-30 17:42:54)","OpencodeHint"],[" [msg_a3637244a001FDRDfoBYVPEGpd]","OpencodeHint"]],"virt_text_pos":"win_col"}],[2,2,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"priority":4096,"virt_text_win_col":-3,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col"}],[3,3,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"priority":4096,"virt_text_win_col":-3,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col"}],[4,4,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"priority":4096,"virt_text_win_col":-3,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col"}],[5,5,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"priority":4096,"virt_text_win_col":-3,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col"}],[6,6,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"priority":4096,"virt_text_win_col":-3,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col"}],[7,7,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"priority":4096,"virt_text_win_col":-3,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col"}],[8,8,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"priority":4096,"virt_text_win_col":-3,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col"}],[9,9,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"priority":4096,"virt_text_win_col":-3,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col"}],[10,10,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"priority":4096,"virt_text_win_col":-3,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col"}],[11,11,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"priority":4096,"virt_text_win_col":-3,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col"}],[12,13,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":false,"priority":10,"virt_text_win_col":-3,"ns_id":3,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-30 17:42:56)","OpencodeHint"],[" [msg_a36372b9a001M1lQEix4SK5QE5]","OpencodeHint"]],"virt_text_pos":"win_col"}]],"timestamp":1766431562,"lines":["----","","","what is this doing","","[lua/opencode/context.lua](lua/opencode/context.lua)","","Line 59:","`````lua","local is_enabled = vim.tbl_get(config, 'context', context_key, 'enabled')","`````","","----","","","**Explanation**","","- The line `local is_enabled = vim.tbl_get(config, 'context', context_key, 'enabled')` (in `lua/opencode/context.lua:58`) uses `vim.tbl_get` to safely read a nested field from a table.","- Concretely it attempts to read `config.context[context_key].enabled` but without throwing an error if `config.context` or `config.context[context_key]` is nil. If any intermediate key is missing it returns `nil`.","- In the surrounding function `M.is_context_enabled`, that value is the default config value for the given context key. The function then checks the state override:"," - If `state.current_context_config[context_key].enabled` is not `nil`, that state value (true/false) is returned."," - Otherwise the `is_enabled` value (from `config`) is returned.","- Example: if `config.context.selection.enabled == true` but `state.current_context_config.selection.enabled == false`, the function returns `false` (state overrides config). If the state value is `nil`, the config value is used.","- Why this matters: `vim.tbl_get` provides safe nested access; using it avoids runtime errors when some parts of the nested config are absent.","",""],"actions":[]} \ No newline at end of file +{"actions":[],"extmarks":[[1,1,0,{"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"priority":10,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-30 17:42:54)","OpencodeHint"],[" [msg_a3637244a001FDRDfoBYVPEGpd]","OpencodeHint"]],"virt_text_pos":"win_col"}],[2,2,0,{"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"priority":4096,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col"}],[3,3,0,{"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"priority":4096,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col"}],[4,4,0,{"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"priority":4096,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col"}],[5,5,0,{"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"priority":4096,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col"}],[6,6,0,{"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"priority":4096,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col"}],[7,7,0,{"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"priority":4096,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col"}],[8,8,0,{"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"priority":4096,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col"}],[9,9,0,{"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"priority":4096,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col"}],[10,10,0,{"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"priority":4096,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col"}],[11,11,0,{"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"priority":4096,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col"}],[12,13,0,{"ns_id":3,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"priority":10,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-30 17:42:56)","OpencodeHint"],[" [msg_a36372b9a001M1lQEix4SK5QE5]","OpencodeHint"]],"virt_text_pos":"win_col"}]],"lines":["----","","","what is this doing","","[lua/opencode/context.lua](lua/opencode/context.lua)","","Line 59:","`````lua","local is_enabled = vim.tbl_get(config, 'context', context_key, 'enabled')","`````","","----","","","**Explanation**","","- The line `local is_enabled = vim.tbl_get(config, 'context', context_key, 'enabled')` (in `lua/opencode/context.lua:58`) uses `vim.tbl_get` to safely read a nested field from a table.","- Concretely it attempts to read `config.context[context_key].enabled` but without throwing an error if `config.context` or `config.context[context_key]` is nil. If any intermediate key is missing it returns `nil`.","- In the surrounding function `M.is_context_enabled`, that value is the default config value for the given context key. The function then checks the state override:"," - If `state.current_context_config[context_key].enabled` is not `nil`, that state value (true/false) is returned."," - Otherwise the `is_enabled` value (from `config`) is returned.","- Example: if `config.context.selection.enabled == true` but `state.current_context_config.selection.enabled == false`, the function returns `false` (state overrides config). If the state value is `nil`, the config value is used.","- Why this matters: `vim.tbl_get` provides safe nested access; using it avoids runtime errors when some parts of the nested config are absent.","",""],"timestamp":1766432123} \ No newline at end of file diff --git a/tests/data/diagnostics.expected.json b/tests/data/diagnostics.expected.json index f984916d..9b396fa0 100644 --- a/tests/data/diagnostics.expected.json +++ b/tests/data/diagnostics.expected.json @@ -1 +1 @@ -{"lines":["----","","","help me fix the file","","[lua/opencode/core.lua](lua/opencode/core.lua)","","**Diagnostics:** (3)","","----","","","Let's address the three EmmyLua diagnostics at line 130 in `lua/opencode/core.lua`:","","### 1. `param-type-not-match`: expected `string` but found `string?`","- **Location:** `state.active_session.id` (line 130, col 20)","- **Cause:** `state.active_session` may be `nil`, so `state.active_session.id` could error or be `nil`. The function expects a `string`, not a nullable string.","- **Fix:** Add a nil check for `state.active_session` before accessing `.id`.","","### 2. `param-type-not-match`: expected `{ agent: string?, messageID: string?, model: {...}?, parts: Part[], system: string?, tools: table<...>? }` but found `{ model = table, agent = any, parts = OpencodeMessagePart[], ... }`","- **Location:** `params` argument to `:create_message` (line 130, col 45)","- **Cause:** The `model` field in `params` is `{ providerID = string?, modelID = string? }`, but the expected type is `{ modelID: string, providerID: string }?`. The order and possibly the optionality are mismatched.","- **Fix:** Ensure the `model` field matches the expected type exactly: `{ modelID: string, providerID: string }`.","","### 3. `need-check-nil`: `state.active_session may be nil`","- **Location:** Same as #1. This is a reminder to check for nil before accessing `state.active_session.id`.","","---","","## Step-by-step Fix Plan","","```markdown","- [ ] 1. Add a nil check for `state.active_session` before accessing `.id` in `M.send_message`.","- [ ] 2. Ensure the `model` field in `params` matches the expected type `{ modelID: string, providerID: string }`.","- [ ] 3. Test the changes to ensure the diagnostics are resolved and the function works as expected.","```","","Let's start with step 1: Add a nil check for `state.active_session` before accessing `.id`.","","** edit** `core.lua`","","`````lua"," "," params.parts = context.format_message(prompt, opts.context)"," M.before_run(opts)"," "," if not state.active_session or not state.active_session.id then"," vim.notify('No active session to send message to', vim.log.levels.ERROR)"," return"," end"," state.api_client"," :create_message(state.active_session.id, params)"," :and_then(function(response)"," if not response or not response.info or not response.parts then","","`````","","**󰻛 Created Snapshot** `8e790371`","","----","","","Step 1 is complete: nil check for `state.active_session` before accessing `.id` is added.","","Now, let's address step 2: Ensure the `model` field in `params` matches the expected type `{ modelID: string, providerID: string }`.","","Currently, the code is:","```lua","if opts.model then"," local provider, model = opts.model:match('^(.-)/(.+)$')"," params.model = { providerID = provider, modelID = model }"," state.current_model = opts.model","end","```","The expected type is `{ modelID: string, providerID: string }`, but EmmyLua expects the order to be `modelID` first, then `providerID`. Let's update the assignment to match the expected order.","","I'll fix this now.","","** edit** `core.lua`","","`````lua"," local params = {}"," "," if opts.model then"," local provider, model = opts.model:match('^(.-)/(.+)$')"," params.model = { providerID = provider, modelID = model }"," params.model = { modelID = model, providerID = provider }"," state.current_model = opts.model"," end"," "," if opts.agent then","","`````","","**󰻛 Created Snapshot** `f33f38a7`","","----","","","Step 2 is complete: the `model` field in `params` now matches the expected type `{ modelID = model, providerID = provider }`.","","Now, let's move to step 3: Test the changes to ensure the diagnostics are resolved and the function works as expected.","","I'll run the test suite using the provided script to verify everything is working.","","** run** `Run all tests to verify code changes`","","`````bash","> ./run_tests.sh","","Running tests for opencode.nvim","------------------------------------------------","Starting...Scheduling: ./tests/minimal/plugin_spec.lua","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/minimal/plugin_spec.lua\t","Success\t||\topencode.nvim plugin loads the plugin without errors\t","Success\t||\topencode.nvim plugin can be set up with custom config\t","\t","Success: \t2\t","Failed : \t0\t","========================================\t","✓ Minimal tests passed","------------------------------------------------","Starting...Scheduling: ./tests/unit/keymap_spec.lua","Scheduling: ./tests/unit/opencode_server_spec.lua","Scheduling: ./tests/unit/context_completion_spec.lua","Scheduling: ./tests/unit/config_file_spec.lua","Scheduling: ./tests/unit/init_spec.lua","Scheduling: ./tests/unit/state_spec.lua","Scheduling: ./tests/unit/render_state_spec.lua","Scheduling: ./tests/unit/server_job_spec.lua","Scheduling: ./tests/unit/config_spec.lua","Scheduling: ./tests/unit/context_bar_spec.lua","Scheduling: ./tests/unit/renderer_spec.lua","Scheduling: ./tests/unit/api_client_spec.lua","Scheduling: ./tests/unit/core_spec.lua","Scheduling: ./tests/unit/session_spec.lua","Scheduling: ./tests/unit/event_manager_spec.lua","Scheduling: ./tests/unit/api_spec.lua","Scheduling: ./tests/unit/context_spec.lua","Scheduling: ./tests/unit/timer_spec.lua","Scheduling: ./tests/unit/util_spec.lua","Scheduling: ./tests/unit/snapshot_spec.lua","Scheduling: ./tests/unit/id_spec.lua","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/context_completion_spec.lua\t","Success\t||\tcontext completion get_source should return a completion source\t","Success\t||\tcontext completion complete function should return empty table when trigger char does not match\t","Success\t||\tcontext completion complete function should return context items when trigger char matches\t","Success\t||\tcontext completion complete function should include selection items when selections exist\t","Success\t||\tcontext completion complete function should include mentioned files when they exist\t","Success\t||\tcontext completion complete function should include subagent items when they exist\t","Success\t||\tcontext completion complete function should filter items based on input\t","Success\t||\tcontext completion complete function should sort items with available items first\t","Success\t||\tcontext completion on_complete function should handle nil item gracefully\t","Success\t||\tcontext completion on_complete function should handle item without data gracefully\t","Success\t||\tcontext completion on_complete function should toggle context enabled state for toggleable items\t","Success\t||\tcontext completion on_complete function should remove mentioned file when selected\t","Success\t||\tcontext completion on_complete function should remove subagent when selected\t","Success\t||\tcontext completion on_complete function should remove selection when selection item selected\t","Success\t||\tcontext completion on_complete function should clean up trigger character from current line\t","Success\t||\tcontext completion formatting functions should format diagnostics correctly\t","Success\t||\tcontext completion formatting functions should format cursor data correctly\t","Success\t||\tcontext completion formatting functions should format selection correctly\t","Success\t||\tcontext completion edge cases should handle empty context gracefully\t","Success\t||\tcontext completion edge cases should handle disabled contexts correctly\t","\t","Success: \t20\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/keymap_spec.lua\t","Success\t||\topencode.keymap setup sets up keymap with new format configured keys\t","Success\t||\topencode.keymap setup sets up keymap with old format configured keys (normalized)\t","Success\t||\topencode.keymap setup sets up callbacks that execute the correct commands (new format)\t","Success\t||\topencode.keymap setup sets up callbacks that execute the correct commands (old format normalized)\t","Success\t||\topencode.keymap normalize_keymap normalizes old format keymap to new format correctly\t","Success\t||\topencode.keymap normalize_keymap shows error message for unknown API functions\t","Success\t||\topencode.keymap normalize_keymap uses custom description from config_entry\t","Success\t||\topencode.keymap normalize_keymap falls back to API description when no custom desc provided\t","Success\t||\topencode.keymap setup_window_keymaps handles unknown API functions with error message\t","Success\t||\topencode.keymap setup_window_keymaps uses custom description for window keymaps\t","Success\t||\topencode.keymap setup_permission_keymap sets up permission keymaps when there is a current permission\t","Success\t||\topencode.keymap setup_permission_keymap should delete existing permission keymaps if no current permission exists after being set\t","Success\t||\topencode.keymap setup_permission_keymap does not set permission keymaps when there is no current permission\t","\t","Success: \t13\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/opencode_server_spec.lua\t","Success\t||\topencode.opencode_server creates a new server object\t","Success\t||\topencode.opencode_server spawn promise resolves when stdout emits server URL\t","Success\t||\topencode.opencode_server shutdown resolves shutdown_promise and clears fields\t","Success\t||\topencode.opencode_server calls on_error when stderr is triggered\t","Success\t||\topencode.opencode_server calls on_exit and clears fields when process exits\t","\t","Success: \t5\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/config_file_spec.lua\t","Success\t||\tconfig_file.setup lazily loads config when accessed\t","Success\t||\tconfig_file.setup get_opencode_agents returns primary + defaults\t","Success\t||\tconfig_file.setup get_opencode_agents respects disabled defaults\t","Success\t||\tconfig_file.setup get_opencode_project returns project\t","\t","Success: \t4\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/init_spec.lua\t","Success\t||\topencode has setup function in the public API\t","Success\t||\topencode main module can be required without errors\t","\t","Success: \t2\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/render_state_spec.lua\t","Success\t||\tRenderState new and reset creates a new instance\t","Success\t||\tRenderState new and reset resets to empty state\t","Success\t||\tRenderState set_message sets a new message\t","Success\t||\tRenderState set_message updates line index for message\t","Success\t||\tRenderState set_message updates existing message\t","Success\t||\tRenderState set_part sets a new part\t","Success\t||\tRenderState set_part updates line index for part\t","Success\t||\tRenderState set_part initializes actions array\t","Success\t||\tRenderState get_part_at_line returns part at line\t","Success\t||\tRenderState get_part_at_line returns nil for line without part\t","Success\t||\tRenderState get_message_at_line returns message at line\t","Success\t||\tRenderState get_message_at_line returns nil for line without message\t","Success\t||\tRenderState get_part_by_call_id finds part by call ID\t","Success\t||\tRenderState get_part_by_call_id returns nil when call ID not found\t","Success\t||\tRenderState actions adds actions to part\t","Success\t||\tRenderState actions adds actions with offset\t","Success\t||\tRenderState actions clears actions for part\t","Success\t||\tRenderState actions gets actions at line\t","Success\t||\tRenderState actions gets all actions from all parts\t","Success\t||\tRenderState update_part_lines updates part line positions\t","Success\t||\tRenderState update_part_lines shifts subsequent content when expanding\t","Success\t||\tRenderState update_part_lines shifts subsequent content when shrinking\t","Success\t||\tRenderState update_part_lines returns false for non-existent part\t","Success\t||\tRenderState remove_part removes part and shifts subsequent content\t","Success\t||\tRenderState remove_part clears line index for removed part\t","Success\t||\tRenderState remove_part returns false for non-existent part\t","Success\t||\tRenderState remove_message removes message and shifts subsequent content\t","Success\t||\tRenderState remove_message clears line index for removed message\t","Success\t||\tRenderState remove_message returns false for non-existent message\t","Success\t||\tRenderState shift_all does nothing when delta is 0\t","Success\t||\tRenderState shift_all shifts content at or after from_line\t","Success\t||\tRenderState shift_all shifts actions with parts\t","Success\t||\tRenderState shift_all does not rebuild index when nothing shifted\t","Success\t||\tRenderState shift_all invalidates index when content shifted\t","Success\t||\tRenderState shift_all exits early when content found before from_line\t","Success\t||\tRenderState update_part_data updates part reference\t","Success\t||\tRenderState update_part_data does nothing for non-existent part\t","\t","Success: \t37\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/server_job_spec.lua\t","Success\t||\tserver_job exposes expected public functions\t","Success\t||\tserver_job call_api resolves with decoded json and toggles is_job_running\t","Success\t||\tserver_job call_api rejects on non 2xx\t","Success\t||\tserver_job stream_api forwards chunks\t","Success\t||\tserver_job ensure_server spawns a new opencode server only once\t","\t","Success: \t5\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/config_spec.lua\t","Success\t||\topencode.config uses default values when no options are provided\t","Success\t||\topencode.config merges user options with defaults\t","\t","Success: \t2\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/context_bar_spec.lua\t","Success\t||\topencode.ui.context_bar opencode.ui.context_bar renders minimal winbar with right aligh token only\t","Success\t||\topencode.ui.context_bar opencode.ui.context_bar renders winbar with current file when present\t","Success\t||\topencode.ui.context_bar opencode.ui.context_bar renders winbar with multiple context elements\t","Success\t||\topencode.ui.context_bar opencode.ui.context_bar renders winbar with diagnostics\t","Success\t||\topencode.ui.context_bar opencode.ui.context_bar respects context enabled settings\t","Success\t||\topencode.ui.context_bar opencode.ui.context_bar handles empty winbar gracefully\t","Success\t||\topencode.ui.context_bar opencode.ui.context_bar does nothing when window is invalid\t","Success\t||\topencode.ui.context_bar opencode.ui.context_bar uses provided windows parameter\t","Success\t||\topencode.ui.context_bar setup subscribes to state changes\t","\t","Success: \t9\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/api_client_spec.lua\t","Success\t||\tapi_client should create a new client instance\t","Success\t||\tapi_client should remove trailing slash from base_url\t","Success\t||\tapi_client should create client using create factory function\t","Success\t||\tapi_client should have all expected API methods\t","Success\t||\tapi_client should construct URLs correctly with query parameters\t","\t","Success: \t5\t","Failed : \t0\t","========================================\t","Error detected while processing command line:","opencode command not found - please install and configure opencode before using this plugin","Unsupported opencode CLI version: opencode 0.4.1. Requires >= 0.4.2","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/core_spec.lua\t","Success\t||\topencode.core open creates windows if they don't exist\t","Success\t||\topencode.core open handles new session properly\t","Success\t||\topencode.core open focuses the appropriate window\t","Success\t||\topencode.core select_session filters sessions by description and parentID\t","Success\t||\topencode.core send_message sends a message via api_client\t","Success\t||\topencode.core send_message creates new session when none active\t","Success\t||\topencode.core send_message persist options in state when sending message\t","Success\t||\topencode.core opencode_ok (version checks) returns false when opencode executable is missing\t","Success\t||\topencode.core opencode_ok (version checks) returns false when version is below required\t","Success\t||\topencode.core opencode_ok (version checks) returns true when version equals required\t","Success\t||\topencode.core opencode_ok (version checks) returns true when version is above required\t","\t","Success: \t11\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/session_spec.lua\t","Success\t||\topencode.session get_last_workspace_session returns the most recent session for current workspace\t","Success\t||\topencode.session get_last_workspace_session returns nil when no sessions match the workspace\t","Success\t||\topencode.session get_last_workspace_session handles JSON parsing errors\t","Success\t||\topencode.session get_last_workspace_session handles empty session list\t","Success\t||\topencode.session get_by_name returns the session with matching ID\t","Success\t||\topencode.session get_by_name returns nil when no session matches the ID\t","Success\t||\topencode.session read_json_dir returns nil for non-existent directory\t","Success\t||\topencode.session read_json_dir returns nil when directory exists but has no JSON files\t","Success\t||\topencode.session read_json_dir returns decoded JSON content from directory\t","Success\t||\topencode.session read_json_dir skips invalid JSON files\t","Success\t||\topencode.session get_messages returns nil when session is nil\t","Success\t||\topencode.session get_messages returns nil when messages directory does not exist\t","Success\t||\topencode.session get_messages returns messages with their parts\t","\t","Success: \t13\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/state_spec.lua\t","Success\t||\topencode.state (observable) notifies listeners on key change\t","Success\t||\topencode.state (observable) notifies wildcard listeners on any key change\t","Success\t||\topencode.state (observable) can unregister listeners\t","Success\t||\topencode.state (observable) does not notify if value is unchanged\t","\t","Success: \t4\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/event_manager_spec.lua\t","Success\t||\tEventManager should create a new instance\t","Success\t||\tEventManager should subscribe and emit events\t","Success\t||\tEventManager should handle multiple subscribers\t","Success\t||\tEventManager should unsubscribe correctly\t","Success\t||\tEventManager should track subscriber count\t","Success\t||\tEventManager should list event names\t","Success\t||\tEventManager should handle starting and stopping\t","Success\t||\tEventManager should not start multiple times\t","\t","Success: \t8\t","Failed : \t0\t","========================================\t","File not added to context. Could not read.","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/context_spec.lua\t","Success\t||\textract_from_opencode_message extracts prompt, selected_text, and current_file from tags in parts\t","Success\t||\textract_from_opencode_message returns nils if message or parts missing\t","Success\t||\textract_from_message_legacy extracts legacy tags from text\t","Success\t||\textract_legacy_tag extracts content between tags\t","Success\t||\textract_legacy_tag returns nil if tag not found\t","Success\t||\tformat_message returns a parts array with prompt as first part\t","Success\t||\tformat_message includes mentioned_files and subagents\t","Success\t||\tdelta_context removes current_file if unchanged\t","Success\t||\tdelta_context removes mentioned_subagents if unchanged\t","Success\t||\tadd_file/add_selection/add_subagent adds a file if filereadable\t","Success\t||\tadd_file/add_selection/add_subagent does not add file if not filereadable\t","Success\t||\tadd_file/add_selection/add_subagent adds a selection\t","Success\t||\tadd_file/add_selection/add_subagent adds a subagent\t","\t","Success: \t13\t","Failed : \t0\t","========================================\t",":OpencodeOpenInput is deprecated. Use `:Opencode open input` instead",":OpencodeStop is deprecated. Use `:Opencode cancel` instead",":OpencodeClose is deprecated. Use `:Opencode close` instead","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/api_spec.lua\t","Success\t||\topencode.api commands table contains the expected commands with proper structure\t","Success\t||\topencode.api setup registers the main Opencode command and legacy commands\t","Success\t||\topencode.api setup sets up legacy command functions that route to main command\t","Success\t||\topencode.api Lua API provides callable functions that match commands\t","Success\t||\topencode.api run command argument parsing parses agent prefix and passes to send_message\t","Success\t||\topencode.api run command argument parsing parses model prefix and passes to send_message\t","Success\t||\topencode.api run command argument parsing parses context prefix and passes to send_message\t","Success\t||\topencode.api run command argument parsing parses multiple prefixes and passes all to send_message\t","Success\t||\topencode.api run command argument parsing works with run_new command\t","Success\t||\topencode.api run command argument parsing requires a prompt after prefixes\t","Success\t||\topencode.api run command argument parsing Lua API accepts opts directly without parsing\t","\t","Success: \t11\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/util_spec.lua\t","Success\t||\tutil.parse_dot_args parses flat booleans\t","Success\t||\tutil.parse_dot_args parses nested dot notation\t","Success\t||\tutil.parse_dot_args parses mixed nesting and booleans\t","Success\t||\tutil.parse_dot_args parses numbers\t","Success\t||\tutil.parse_dot_args handles empty string\t","Success\t||\tutil.parse_run_args parses no prefixes\t","Success\t||\tutil.parse_run_args parses single agent prefix\t","Success\t||\tutil.parse_run_args parses single model prefix\t","Success\t||\tutil.parse_run_args parses single context prefix\t","Success\t||\tutil.parse_run_args parses multiple prefixes in order\t","Success\t||\tutil.parse_run_args parses context with multiple comma-delimited values\t","Success\t||\tutil.parse_run_args handles empty prompt after prefixes\t","Success\t||\tutil.parse_run_args handles empty string\t","Success\t||\tutil.parse_run_args stops parsing at first non-prefix token\t","\t","Success: \t14\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/snapshot_spec.lua\t","Success\t||\tsnapshot.restore runs read-tree and checkout-index and notifies on success\t","Success\t||\tsnapshot.restore notifies error if no active session\t","Success\t||\tsnapshot.restore notifies error if read-tree fails\t","Success\t||\tsnapshot.restore notifies error if checkout-index fails\t","\t","Success: \t4\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/id_spec.lua\t","Success\t||\tID module should generate ascending session IDs\t","Success\t||\tID module should generate descending message IDs\t","Success\t||\tID module should validate given IDs correctly\t","Success\t||\tID module should throw error for invalid given IDs\t","Success\t||\tID module should validate schemas correctly\t","Success\t||\tID module should return available prefixes\t","Success\t||\tID module should generate IDs with correct length structure\t","\t","Success: \t7\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/timer_spec.lua\t","Success\t||\tTimer Timer.new creates a new timer with required options\t","Success\t||\tTimer Timer.new sets repeat_timer to false when explicitly disabled\t","Success\t||\tTimer Timer.new stores optional parameters\t","Success\t||\tTimer Timer:start starts a repeating timer\t","Success\t||\tTimer Timer:start starts a one-shot timer\t","Success\t||\tTimer Timer:start passes arguments to on_tick function\t","Success\t||\tTimer Timer:start stops timer when on_tick returns false\t","Success\t||\tTimer Timer:start stops timer when on_tick throws an error\t","Success\t||\tTimer Timer:start stops previous timer before starting new one\t","Success\t||\tTimer Timer:start throws error when timer creation fails\t","Success\t||\tTimer Timer:stop stops a running timer\t","Success\t||\tTimer Timer:stop calls on_stop callback when provided\t","Success\t||\tTimer Timer:stop does nothing when timer is not running\t","Success\t||\tTimer Timer:stop handles errors in on_stop callback gracefully\t","Success\t||\tTimer Timer:is_running returns false when timer is not started\t","Success\t||\tTimer Timer:is_running returns true when timer is running\t","Success\t||\tTimer Timer:is_running returns false after timer is stopped\t","Success\t||\tTimer Timer:is_running returns false after one-shot timer completes\t","Success\t||\tTimer Integration tests can restart a stopped timer\t","Success\t||\tTimer Integration tests handles rapid start/stop cycles\t","\t","Success: \t20\t","Failed : \t0\t","========================================\t","Two pending permissions? existing: per_9efb5b2f3001aqJAFBMiGjFjVZ new: per_9efb5bc2a001j9Bd6bFjLB7hrc","Two pending permissions? existing: per_9efb5bc2a001j9Bd6bFjLB7hrc new: per_9efb5d6d1001uwVXQ9dhlBlgfO","Two pending permissions? existing: per_9efb5b2f3001aqJAFBMiGjFjVZ new: per_9efb5bc2a001j9Bd6bFjLB7hrc","Two pending permissions? existing: per_9efb5bc2a001j9Bd6bFjLB7hrc new: per_9efb5d6d1001uwVXQ9dhlBlgfO","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/renderer_spec.lua\t","Success\t||\trenderer replays ansi-codes correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays ansi-codes correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays ansi-codes correctly (session)\t","Success\t||\trenderer replays api-abort correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays api-abort correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays api-abort correctly (session)\t","Success\t||\trenderer replays api-error correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays api-error correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays api-error correctly (session)\t","Success\t||\trenderer replays cursor_data correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays cursor_data correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays cursor_data correctly (session)\t","Success\t||\trenderer replays diff correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays diff correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays diff correctly (session)\t","Success\t||\trenderer replays markdown-codefence correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays markdown-codefence correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays markdown-codefence correctly (session)\t","Success\t||\trenderer replays mentions-with-ranges correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays mentions-with-ranges correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays mentions-with-ranges correctly (session)\t","Success\t||\trenderer replays message-removal correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays message-removal correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays perf correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays perf correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays perf correctly (session)\t","Success\t||\trenderer replays permission-denied correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays permission-denied correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays permission-denied correctly (session)\t","Success\t||\trenderer replays permission-prompt correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays permission-prompt correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays permission correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays permission correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays permission correctly (session)\t","Success\t||\trenderer replays planning correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays planning correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays planning correctly (session)\t","Success\t||\trenderer replays redo-all correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays redo-all correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays redo-all correctly (session)\t","Success\t||\trenderer replays redo-once correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays redo-once correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays redo-once correctly (session)\t","Success\t||\trenderer replays revert correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays revert correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays revert correctly (session)\t","Success\t||\trenderer replays selection correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays selection correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays selection correctly (session)\t","Success\t||\trenderer replays shifting-and-multiple-perms correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays shifting-and-multiple-perms correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays simple-session correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays simple-session correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays simple-session correctly (session)\t","Success\t||\trenderer replays tool-invalid correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays tool-invalid correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays tool-invalid correctly (session)\t","Success\t||\trenderer replays updating-text correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays updating-text correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays updating-text correctly (session)\t","\t","Success: \t60\t","Failed : \t0\t","========================================\t","✓ Unit tests passed","------------------------------------------------","All tests passed successfully!","","`````","","----","","","All steps are complete and all tests pass! Here’s a summary of what was fixed:","","- ✅ Added a nil check for `state.active_session` before accessing `.id` in `M.send_message`.","- ✅ Ensured the `model` field in `params` matches the expected type `{ modelID = ..., providerID = ... }`.","- ✅ Verified the fixes by running the full test suite—no errors or failures.","","Your file is now robust and EmmyLua diagnostics at line 130 are resolved. If you need further tweaks or want to address other diagnostics, let me know!","",""],"timestamp":1766431562,"actions":[{"key":"R","range":{"to":94,"from":94},"type":"diff_revert_selected_file","args":["f33f38a70b284207e092c2c578a24e96fdd1bd4d"],"text":"[R]evert file","display_line":94},{"key":"A","range":{"to":94,"from":94},"type":"diff_revert_all","args":["f33f38a70b284207e092c2c578a24e96fdd1bd4d"],"text":"Revert [A]ll","display_line":94},{"key":"D","range":{"to":94,"from":94},"type":"diff_open","args":["f33f38a70b284207e092c2c578a24e96fdd1bd4d"],"text":"[D]iff","display_line":94},{"key":"R","range":{"to":57,"from":57},"type":"diff_revert_selected_file","args":["8e7903714919009004aad8754db0035fb47ecb24"],"text":"[R]evert file","display_line":57},{"key":"A","range":{"to":57,"from":57},"type":"diff_revert_all","args":["8e7903714919009004aad8754db0035fb47ecb24"],"text":"Revert [A]ll","display_line":57},{"key":"D","range":{"to":57,"from":57},"type":"diff_open","args":["8e7903714919009004aad8754db0035fb47ecb24"],"text":"[D]iff","display_line":57}],"extmarks":[[1,1,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-11-03 13:34:57)","OpencodeHint"],[" [msg_a49ed91d6001coTsjFq9x6FF5W]","OpencodeHint"]],"virt_text_win_col":-3,"virt_text_pos":"win_col","priority":10}],[2,2,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_win_col":-3,"virt_text_pos":"win_col","priority":4096}],[3,3,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_win_col":-3,"virt_text_pos":"win_col","priority":4096}],[4,4,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_win_col":-3,"virt_text_pos":"win_col","priority":4096}],[5,5,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_win_col":-3,"virt_text_pos":"win_col","priority":4096}],[6,6,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_win_col":-3,"virt_text_pos":"win_col","priority":4096}],[7,7,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_win_col":-3,"virt_text_pos":"win_col","priority":4096}],[8,8,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_win_col":-3,"virt_text_pos":"win_col","priority":4096}],[9,10,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-4.1","OpencodeHint"],[" (2025-11-03 13:34:59)","OpencodeHint"],[" [msg_a49ed9828001mN6CDcWPnGnpHS]","OpencodeHint"]],"virt_text_win_col":-3,"virt_text_pos":"win_col","priority":10}],[10,39,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[11,40,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[12,41,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[13,42,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[14,43,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[15,44,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[16,45,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[17,46,0,{"end_right_gravity":false,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"hl_group":"OpencodeDiffAdd","right_gravity":true,"virt_text_pos":"overlay","priority":5000,"virt_text":[["+","OpencodeDiffAdd"]],"end_col":0,"end_row":47,"hl_eol":true}],[18,46,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[19,47,0,{"end_right_gravity":false,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"hl_group":"OpencodeDiffAdd","right_gravity":true,"virt_text_pos":"overlay","priority":5000,"virt_text":[["+","OpencodeDiffAdd"]],"end_col":0,"end_row":48,"hl_eol":true}],[20,47,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[21,48,0,{"end_right_gravity":false,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"hl_group":"OpencodeDiffAdd","right_gravity":true,"virt_text_pos":"overlay","priority":5000,"virt_text":[["+","OpencodeDiffAdd"]],"end_col":0,"end_row":49,"hl_eol":true}],[22,48,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[23,49,0,{"end_right_gravity":false,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"hl_group":"OpencodeDiffAdd","right_gravity":true,"virt_text_pos":"overlay","priority":5000,"virt_text":[["+","OpencodeDiffAdd"]],"end_col":0,"end_row":50,"hl_eol":true}],[24,49,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[25,50,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[26,51,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[27,52,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[28,53,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[29,54,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[30,55,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[31,60,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-4.1","OpencodeHint"],[" (2025-11-03 13:35:06)","OpencodeHint"],[" [msg_a49edb694001syExFxMUW1ik3n]","OpencodeHint"]],"virt_text_win_col":-3,"virt_text_pos":"win_col","priority":10}],[32,78,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[33,79,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[34,80,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[35,81,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[36,82,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[37,83,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[38,84,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[39,85,0,{"end_right_gravity":false,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"hl_group":"OpencodeDiffDelete","right_gravity":true,"virt_text_pos":"overlay","priority":5000,"virt_text":[["-","OpencodeDiffDelete"]],"end_col":0,"end_row":86,"hl_eol":true}],[40,85,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[41,86,0,{"end_right_gravity":false,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"hl_group":"OpencodeDiffAdd","right_gravity":true,"virt_text_pos":"overlay","priority":5000,"virt_text":[["+","OpencodeDiffAdd"]],"end_col":0,"end_row":87,"hl_eol":true}],[42,86,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[43,87,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[44,88,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[45,89,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[46,90,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[47,91,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[48,92,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[49,97,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-4.1","OpencodeHint"],[" (2025-11-03 13:35:10)","OpencodeHint"],[" [msg_a49edc4640017DZPFVUPHCm7Ji]","OpencodeHint"]],"virt_text_win_col":-3,"virt_text_pos":"win_col","priority":10}],[50,105,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[51,106,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[52,107,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[53,108,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[54,109,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[55,110,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[56,111,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[57,112,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[58,113,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[59,114,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[60,115,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[61,116,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[62,117,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[63,118,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[64,119,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[65,120,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[66,121,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[67,122,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[68,123,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[69,124,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[70,125,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[71,126,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[72,127,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[73,128,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[74,129,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[75,130,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[76,131,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[77,132,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[78,133,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[79,134,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[80,135,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[81,136,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[82,137,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[83,138,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[84,139,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[85,140,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[86,141,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[87,142,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[88,143,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[89,144,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[90,145,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[91,146,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[92,147,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[93,148,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[94,149,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[95,150,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[96,151,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[97,152,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[98,153,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[99,154,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[100,155,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[101,156,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[102,157,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[103,158,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[104,159,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[105,160,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[106,161,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[107,162,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[108,163,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[109,164,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[110,165,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[111,166,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[112,167,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[113,168,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[114,169,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[115,170,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[116,171,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[117,172,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[118,173,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[119,174,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[120,175,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[121,176,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[122,177,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[123,178,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[124,179,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[125,180,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[126,181,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[127,182,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[128,183,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[129,184,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[130,185,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[131,186,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[132,187,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[133,188,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[134,189,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[135,190,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[136,191,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[137,192,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[138,193,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[139,194,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[140,195,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[141,196,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[142,197,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[143,198,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[144,199,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[145,200,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[146,201,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[147,202,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[148,203,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[149,204,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[150,205,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[151,206,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[152,207,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[153,208,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[154,209,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[155,210,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[156,211,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[157,212,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[158,213,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[159,214,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[160,215,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[161,216,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[162,217,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[163,218,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[164,219,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[165,220,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[166,221,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[167,222,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[168,223,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[169,224,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[170,225,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[171,226,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[172,227,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[173,228,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[174,229,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[175,230,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[176,231,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[177,232,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[178,233,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[179,234,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[180,235,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[181,236,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[182,237,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[183,238,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[184,239,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[185,240,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[186,241,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[187,242,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[188,243,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[189,244,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[190,245,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[191,246,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[192,247,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[193,248,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[194,249,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[195,250,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[196,251,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[197,252,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[198,253,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[199,254,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[200,255,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[201,256,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[202,257,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[203,258,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[204,259,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[205,260,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[206,261,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[207,262,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[208,263,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[209,264,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[210,265,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[211,266,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[212,267,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[213,268,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[214,269,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[215,270,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[216,271,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[217,272,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[218,273,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[219,274,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[220,275,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[221,276,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[222,277,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[223,278,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[224,279,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[225,280,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[226,281,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[227,282,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[228,283,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[229,284,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[230,285,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[231,286,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[232,287,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[233,288,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[234,289,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[235,290,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[236,291,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[237,292,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[238,293,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[239,294,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[240,295,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[241,296,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[242,297,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[243,298,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[244,299,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[245,300,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[246,301,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[247,302,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[248,303,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[249,304,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[250,305,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[251,306,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[252,307,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[253,308,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[254,309,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[255,310,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[256,311,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[257,312,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[258,313,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[259,314,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[260,315,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[261,316,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[262,317,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[263,318,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[264,319,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[265,320,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[266,321,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[267,322,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[268,323,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[269,324,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[270,325,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[271,326,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[272,327,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[273,328,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[274,329,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[275,330,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[276,331,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[277,332,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[278,333,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[279,334,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[280,335,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[281,336,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[282,337,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[283,338,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[284,339,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[285,340,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[286,341,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[287,342,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[288,343,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[289,344,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[290,345,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[291,346,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[292,347,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[293,348,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[294,349,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[295,350,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[296,351,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[297,352,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[298,353,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[299,354,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[300,355,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[301,356,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[302,357,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[303,358,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[304,359,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[305,360,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[306,361,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[307,362,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[308,363,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[309,364,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[310,365,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[311,366,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[312,367,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[313,368,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[314,369,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[315,370,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[316,371,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[317,372,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[318,373,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[319,374,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[320,375,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[321,376,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[322,377,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[323,378,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[324,379,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[325,380,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[326,381,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[327,382,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[328,383,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[329,384,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[330,385,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[331,386,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[332,387,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[333,388,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[334,389,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[335,390,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[336,391,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[337,392,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[338,393,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[339,394,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[340,395,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[341,396,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[342,397,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[343,398,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[344,399,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[345,400,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[346,401,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[347,402,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[348,403,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[349,404,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[350,405,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[351,406,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[352,407,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[353,408,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[354,409,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[355,410,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[356,411,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[357,412,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[358,413,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[359,414,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[360,415,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[361,416,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[362,417,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[363,418,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[364,419,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[365,420,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[366,421,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[367,422,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[368,423,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[369,424,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[370,425,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[371,426,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[372,427,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[373,428,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[374,429,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[375,430,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[376,431,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[377,432,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[378,433,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[379,434,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[380,435,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[381,436,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[382,437,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[383,438,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[384,439,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[385,440,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[386,441,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[387,442,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[388,443,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[389,444,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[390,445,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[391,446,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[392,447,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[393,448,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[394,449,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[395,450,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[396,451,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[397,452,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[398,453,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[399,454,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[400,455,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[401,456,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[402,457,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[403,458,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[404,459,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[405,460,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[406,461,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[407,462,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[408,463,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[409,464,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[410,465,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[411,466,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[412,467,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[413,468,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[414,469,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[415,470,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[416,471,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[417,472,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[418,473,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[419,474,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[420,475,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[421,476,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[422,477,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[423,478,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[424,479,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[425,480,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[426,481,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[427,482,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[428,483,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[429,484,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[430,485,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[431,486,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[432,487,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[433,488,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[434,489,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[435,490,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[436,491,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[437,492,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[438,493,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[439,494,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[440,495,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[441,496,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[442,497,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[443,498,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[444,499,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[445,500,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[446,501,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[447,502,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[448,503,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[449,504,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[450,505,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[451,506,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[452,507,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[453,508,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[454,509,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[455,510,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[456,511,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[457,512,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[458,513,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[459,514,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[460,515,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[461,516,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[462,517,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[463,518,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[464,519,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[465,520,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[466,521,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[467,522,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[468,523,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[469,524,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[470,525,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[471,526,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[472,527,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[473,528,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[474,529,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[475,530,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[476,531,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[477,532,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[478,533,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[479,534,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[480,535,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[481,536,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[482,537,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[483,538,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[484,539,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[485,540,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[486,541,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[487,542,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[488,543,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[489,544,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[490,545,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[491,546,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[492,547,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[493,548,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[494,549,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[495,550,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[496,551,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[497,552,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[498,553,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[499,554,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[500,555,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[501,556,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[502,557,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[503,558,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[504,559,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[505,560,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[506,561,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[507,562,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[508,563,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[509,564,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[510,565,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[511,566,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[512,567,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[513,568,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[514,569,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[515,570,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[516,571,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[517,572,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[518,573,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[519,574,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[520,577,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-4.1","OpencodeHint"],[" (2025-11-03 13:35:15)","OpencodeHint"],[" [msg_a49edd87f001eOJDDoq5Vb5hra]","OpencodeHint"]],"virt_text_win_col":-3,"virt_text_pos":"win_col","priority":10}]]} \ No newline at end of file +{"extmarks":[[1,1,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":false,"priority":10,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-11-03 13:34:57)","OpencodeHint"],[" [msg_a49ed91d6001coTsjFq9x6FF5W]","OpencodeHint"]],"ns_id":3,"virt_text_win_col":-3,"right_gravity":true,"virt_text_hide":false}],[2,2,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3,"virt_text_win_col":-3,"right_gravity":true,"virt_text_hide":false}],[3,3,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3,"virt_text_win_col":-3,"right_gravity":true,"virt_text_hide":false}],[4,4,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3,"virt_text_win_col":-3,"right_gravity":true,"virt_text_hide":false}],[5,5,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3,"virt_text_win_col":-3,"right_gravity":true,"virt_text_hide":false}],[6,6,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3,"virt_text_win_col":-3,"right_gravity":true,"virt_text_hide":false}],[7,7,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3,"virt_text_win_col":-3,"right_gravity":true,"virt_text_hide":false}],[8,8,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3,"virt_text_win_col":-3,"right_gravity":true,"virt_text_hide":false}],[9,10,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":false,"priority":10,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-4.1","OpencodeHint"],[" (2025-11-03 13:34:59)","OpencodeHint"],[" [msg_a49ed9828001mN6CDcWPnGnpHS]","OpencodeHint"]],"ns_id":3,"virt_text_win_col":-3,"right_gravity":true,"virt_text_hide":false}],[10,39,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[11,40,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[12,41,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[13,42,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[14,43,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[15,44,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[16,45,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[17,46,0,{"virt_text_repeat_linebreak":false,"end_right_gravity":false,"hl_group":"OpencodeDiffAdd","virt_text":[["+","OpencodeDiffAdd"]],"virt_text_pos":"overlay","ns_id":3,"priority":5000,"end_col":0,"end_row":47,"hl_eol":true,"right_gravity":true,"virt_text_hide":false}],[18,46,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[19,47,0,{"virt_text_repeat_linebreak":false,"end_right_gravity":false,"hl_group":"OpencodeDiffAdd","virt_text":[["+","OpencodeDiffAdd"]],"virt_text_pos":"overlay","ns_id":3,"priority":5000,"end_col":0,"end_row":48,"hl_eol":true,"right_gravity":true,"virt_text_hide":false}],[20,47,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[21,48,0,{"virt_text_repeat_linebreak":false,"end_right_gravity":false,"hl_group":"OpencodeDiffAdd","virt_text":[["+","OpencodeDiffAdd"]],"virt_text_pos":"overlay","ns_id":3,"priority":5000,"end_col":0,"end_row":49,"hl_eol":true,"right_gravity":true,"virt_text_hide":false}],[22,48,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[23,49,0,{"virt_text_repeat_linebreak":false,"end_right_gravity":false,"hl_group":"OpencodeDiffAdd","virt_text":[["+","OpencodeDiffAdd"]],"virt_text_pos":"overlay","ns_id":3,"priority":5000,"end_col":0,"end_row":50,"hl_eol":true,"right_gravity":true,"virt_text_hide":false}],[24,49,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[25,50,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[26,51,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[27,52,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[28,53,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[29,54,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[30,55,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[31,60,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":false,"priority":10,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-4.1","OpencodeHint"],[" (2025-11-03 13:35:06)","OpencodeHint"],[" [msg_a49edb694001syExFxMUW1ik3n]","OpencodeHint"]],"ns_id":3,"virt_text_win_col":-3,"right_gravity":true,"virt_text_hide":false}],[32,78,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[33,79,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[34,80,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[35,81,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[36,82,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[37,83,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[38,84,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[39,85,0,{"virt_text_repeat_linebreak":false,"end_right_gravity":false,"hl_group":"OpencodeDiffDelete","virt_text":[["-","OpencodeDiffDelete"]],"virt_text_pos":"overlay","ns_id":3,"priority":5000,"end_col":0,"end_row":86,"hl_eol":true,"right_gravity":true,"virt_text_hide":false}],[40,85,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[41,86,0,{"virt_text_repeat_linebreak":false,"end_right_gravity":false,"hl_group":"OpencodeDiffAdd","virt_text":[["+","OpencodeDiffAdd"]],"virt_text_pos":"overlay","ns_id":3,"priority":5000,"end_col":0,"end_row":87,"hl_eol":true,"right_gravity":true,"virt_text_hide":false}],[42,86,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[43,87,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[44,88,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[45,89,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[46,90,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[47,91,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[48,92,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[49,97,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":false,"priority":10,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-4.1","OpencodeHint"],[" (2025-11-03 13:35:10)","OpencodeHint"],[" [msg_a49edc4640017DZPFVUPHCm7Ji]","OpencodeHint"]],"ns_id":3,"virt_text_win_col":-3,"right_gravity":true,"virt_text_hide":false}],[50,105,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[51,106,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[52,107,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[53,108,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[54,109,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[55,110,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[56,111,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[57,112,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[58,113,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[59,114,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[60,115,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[61,116,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[62,117,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[63,118,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[64,119,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[65,120,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[66,121,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[67,122,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[68,123,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[69,124,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[70,125,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[71,126,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[72,127,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[73,128,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[74,129,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[75,130,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[76,131,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[77,132,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[78,133,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[79,134,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[80,135,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[81,136,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[82,137,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[83,138,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[84,139,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[85,140,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[86,141,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[87,142,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[88,143,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[89,144,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[90,145,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[91,146,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[92,147,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[93,148,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[94,149,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[95,150,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[96,151,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[97,152,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[98,153,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[99,154,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[100,155,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[101,156,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[102,157,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[103,158,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[104,159,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[105,160,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[106,161,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[107,162,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[108,163,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[109,164,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[110,165,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[111,166,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[112,167,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[113,168,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[114,169,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[115,170,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[116,171,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[117,172,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[118,173,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[119,174,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[120,175,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[121,176,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[122,177,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[123,178,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[124,179,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[125,180,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[126,181,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[127,182,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[128,183,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[129,184,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[130,185,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[131,186,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[132,187,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[133,188,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[134,189,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[135,190,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[136,191,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[137,192,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[138,193,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[139,194,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[140,195,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[141,196,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[142,197,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[143,198,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[144,199,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[145,200,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[146,201,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[147,202,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[148,203,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[149,204,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[150,205,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[151,206,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[152,207,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[153,208,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[154,209,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[155,210,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[156,211,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[157,212,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[158,213,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[159,214,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[160,215,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[161,216,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[162,217,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[163,218,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[164,219,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[165,220,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[166,221,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[167,222,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[168,223,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[169,224,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[170,225,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[171,226,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[172,227,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[173,228,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[174,229,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[175,230,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[176,231,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[177,232,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[178,233,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[179,234,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[180,235,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[181,236,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[182,237,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[183,238,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[184,239,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[185,240,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[186,241,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[187,242,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[188,243,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[189,244,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[190,245,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[191,246,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[192,247,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[193,248,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[194,249,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[195,250,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[196,251,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[197,252,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[198,253,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[199,254,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[200,255,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[201,256,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[202,257,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[203,258,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[204,259,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[205,260,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[206,261,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[207,262,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[208,263,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[209,264,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[210,265,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[211,266,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[212,267,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[213,268,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[214,269,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[215,270,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[216,271,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[217,272,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[218,273,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[219,274,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[220,275,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[221,276,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[222,277,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[223,278,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[224,279,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[225,280,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[226,281,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[227,282,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[228,283,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[229,284,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[230,285,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[231,286,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[232,287,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[233,288,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[234,289,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[235,290,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[236,291,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[237,292,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[238,293,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[239,294,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[240,295,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[241,296,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[242,297,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[243,298,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[244,299,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[245,300,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[246,301,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[247,302,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[248,303,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[249,304,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[250,305,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[251,306,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[252,307,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[253,308,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[254,309,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[255,310,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[256,311,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[257,312,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[258,313,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[259,314,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[260,315,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[261,316,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[262,317,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[263,318,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[264,319,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[265,320,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[266,321,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[267,322,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[268,323,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[269,324,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[270,325,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[271,326,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[272,327,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[273,328,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[274,329,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[275,330,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[276,331,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[277,332,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[278,333,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[279,334,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[280,335,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[281,336,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[282,337,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[283,338,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[284,339,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[285,340,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[286,341,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[287,342,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[288,343,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[289,344,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[290,345,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[291,346,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[292,347,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[293,348,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[294,349,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[295,350,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[296,351,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[297,352,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[298,353,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[299,354,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[300,355,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[301,356,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[302,357,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[303,358,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[304,359,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[305,360,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[306,361,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[307,362,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[308,363,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[309,364,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[310,365,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[311,366,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[312,367,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[313,368,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[314,369,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[315,370,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[316,371,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[317,372,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[318,373,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[319,374,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[320,375,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[321,376,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[322,377,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[323,378,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[324,379,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[325,380,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[326,381,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[327,382,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[328,383,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[329,384,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[330,385,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[331,386,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[332,387,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[333,388,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[334,389,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[335,390,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[336,391,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[337,392,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[338,393,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[339,394,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[340,395,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[341,396,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[342,397,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[343,398,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[344,399,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[345,400,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[346,401,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[347,402,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[348,403,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[349,404,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[350,405,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[351,406,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[352,407,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[353,408,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[354,409,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[355,410,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[356,411,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[357,412,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[358,413,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[359,414,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[360,415,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[361,416,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[362,417,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[363,418,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[364,419,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[365,420,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[366,421,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[367,422,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[368,423,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[369,424,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[370,425,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[371,426,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[372,427,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[373,428,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[374,429,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[375,430,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[376,431,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[377,432,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[378,433,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[379,434,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[380,435,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[381,436,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[382,437,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[383,438,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[384,439,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[385,440,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[386,441,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[387,442,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[388,443,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[389,444,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[390,445,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[391,446,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[392,447,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[393,448,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[394,449,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[395,450,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[396,451,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[397,452,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[398,453,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[399,454,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[400,455,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[401,456,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[402,457,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[403,458,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[404,459,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[405,460,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[406,461,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[407,462,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[408,463,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[409,464,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[410,465,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[411,466,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[412,467,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[413,468,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[414,469,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[415,470,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[416,471,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[417,472,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[418,473,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[419,474,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[420,475,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[421,476,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[422,477,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[423,478,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[424,479,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[425,480,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[426,481,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[427,482,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[428,483,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[429,484,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[430,485,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[431,486,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[432,487,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[433,488,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[434,489,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[435,490,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[436,491,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[437,492,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[438,493,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[439,494,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[440,495,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[441,496,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[442,497,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[443,498,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[444,499,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[445,500,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[446,501,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[447,502,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[448,503,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[449,504,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[450,505,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[451,506,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[452,507,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[453,508,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[454,509,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[455,510,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[456,511,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[457,512,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[458,513,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[459,514,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[460,515,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[461,516,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[462,517,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[463,518,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[464,519,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[465,520,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[466,521,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[467,522,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[468,523,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[469,524,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[470,525,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[471,526,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[472,527,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[473,528,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[474,529,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[475,530,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[476,531,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[477,532,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[478,533,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[479,534,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[480,535,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[481,536,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[482,537,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[483,538,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[484,539,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[485,540,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[486,541,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[487,542,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[488,543,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[489,544,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[490,545,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[491,546,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[492,547,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[493,548,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[494,549,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[495,550,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[496,551,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[497,552,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[498,553,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[499,554,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[500,555,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[501,556,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[502,557,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[503,558,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[504,559,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[505,560,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[506,561,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[507,562,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[508,563,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[509,564,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[510,565,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[511,566,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[512,567,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[513,568,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[514,569,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[515,570,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[516,571,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[517,572,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[518,573,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[519,574,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"right_gravity":true,"virt_text_hide":false}],[520,577,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":false,"priority":10,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-4.1","OpencodeHint"],[" (2025-11-03 13:35:15)","OpencodeHint"],[" [msg_a49edd87f001eOJDDoq5Vb5hra]","OpencodeHint"]],"ns_id":3,"virt_text_win_col":-3,"right_gravity":true,"virt_text_hide":false}]],"timestamp":1766432123,"lines":["----","","","help me fix the file","","[lua/opencode/core.lua](lua/opencode/core.lua)","","**Diagnostics:**  (3)","","----","","","Let's address the three EmmyLua diagnostics at line 130 in `lua/opencode/core.lua`:","","### 1. `param-type-not-match`: expected `string` but found `string?`","- **Location:** `state.active_session.id` (line 130, col 20)","- **Cause:** `state.active_session` may be `nil`, so `state.active_session.id` could error or be `nil`. The function expects a `string`, not a nullable string.","- **Fix:** Add a nil check for `state.active_session` before accessing `.id`.","","### 2. `param-type-not-match`: expected `{ agent: string?, messageID: string?, model: {...}?, parts: Part[], system: string?, tools: table<...>? }` but found `{ model = table, agent = any, parts = OpencodeMessagePart[], ... }`","- **Location:** `params` argument to `:create_message` (line 130, col 45)","- **Cause:** The `model` field in `params` is `{ providerID = string?, modelID = string? }`, but the expected type is `{ modelID: string, providerID: string }?`. The order and possibly the optionality are mismatched.","- **Fix:** Ensure the `model` field matches the expected type exactly: `{ modelID: string, providerID: string }`.","","### 3. `need-check-nil`: `state.active_session may be nil`","- **Location:** Same as #1. This is a reminder to check for nil before accessing `state.active_session.id`.","","---","","## Step-by-step Fix Plan","","```markdown","- [ ] 1. Add a nil check for `state.active_session` before accessing `.id` in `M.send_message`.","- [ ] 2. Ensure the `model` field in `params` matches the expected type `{ modelID: string, providerID: string }`.","- [ ] 3. Test the changes to ensure the diagnostics are resolved and the function works as expected.","```","","Let's start with step 1: Add a nil check for `state.active_session` before accessing `.id`.","","** edit** `core.lua`","","`````lua"," "," params.parts = context.format_message(prompt, opts.context)"," M.before_run(opts)"," "," if not state.active_session or not state.active_session.id then"," vim.notify('No active session to send message to', vim.log.levels.ERROR)"," return"," end"," state.api_client"," :create_message(state.active_session.id, params)"," :and_then(function(response)"," if not response or not response.info or not response.parts then","","`````","","**󰻛 Created Snapshot** `8e790371`","","----","","","Step 1 is complete: nil check for `state.active_session` before accessing `.id` is added.","","Now, let's address step 2: Ensure the `model` field in `params` matches the expected type `{ modelID: string, providerID: string }`.","","Currently, the code is:","```lua","if opts.model then"," local provider, model = opts.model:match('^(.-)/(.+)$')"," params.model = { providerID = provider, modelID = model }"," state.current_model = opts.model","end","```","The expected type is `{ modelID: string, providerID: string }`, but EmmyLua expects the order to be `modelID` first, then `providerID`. Let's update the assignment to match the expected order.","","I'll fix this now.","","** edit** `core.lua`","","`````lua"," local params = {}"," "," if opts.model then"," local provider, model = opts.model:match('^(.-)/(.+)$')"," params.model = { providerID = provider, modelID = model }"," params.model = { modelID = model, providerID = provider }"," state.current_model = opts.model"," end"," "," if opts.agent then","","`````","","**󰻛 Created Snapshot** `f33f38a7`","","----","","","Step 2 is complete: the `model` field in `params` now matches the expected type `{ modelID = model, providerID = provider }`.","","Now, let's move to step 3: Test the changes to ensure the diagnostics are resolved and the function works as expected.","","I'll run the test suite using the provided script to verify everything is working.","","** run** `Run all tests to verify code changes`","","`````bash","> ./run_tests.sh","","Running tests for opencode.nvim","------------------------------------------------","Starting...Scheduling: ./tests/minimal/plugin_spec.lua","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/minimal/plugin_spec.lua\t","Success\t||\topencode.nvim plugin loads the plugin without errors\t","Success\t||\topencode.nvim plugin can be set up with custom config\t","\t","Success: \t2\t","Failed : \t0\t","========================================\t","✓ Minimal tests passed","------------------------------------------------","Starting...Scheduling: ./tests/unit/keymap_spec.lua","Scheduling: ./tests/unit/opencode_server_spec.lua","Scheduling: ./tests/unit/context_completion_spec.lua","Scheduling: ./tests/unit/config_file_spec.lua","Scheduling: ./tests/unit/init_spec.lua","Scheduling: ./tests/unit/state_spec.lua","Scheduling: ./tests/unit/render_state_spec.lua","Scheduling: ./tests/unit/server_job_spec.lua","Scheduling: ./tests/unit/config_spec.lua","Scheduling: ./tests/unit/context_bar_spec.lua","Scheduling: ./tests/unit/renderer_spec.lua","Scheduling: ./tests/unit/api_client_spec.lua","Scheduling: ./tests/unit/core_spec.lua","Scheduling: ./tests/unit/session_spec.lua","Scheduling: ./tests/unit/event_manager_spec.lua","Scheduling: ./tests/unit/api_spec.lua","Scheduling: ./tests/unit/context_spec.lua","Scheduling: ./tests/unit/timer_spec.lua","Scheduling: ./tests/unit/util_spec.lua","Scheduling: ./tests/unit/snapshot_spec.lua","Scheduling: ./tests/unit/id_spec.lua","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/context_completion_spec.lua\t","Success\t||\tcontext completion get_source should return a completion source\t","Success\t||\tcontext completion complete function should return empty table when trigger char does not match\t","Success\t||\tcontext completion complete function should return context items when trigger char matches\t","Success\t||\tcontext completion complete function should include selection items when selections exist\t","Success\t||\tcontext completion complete function should include mentioned files when they exist\t","Success\t||\tcontext completion complete function should include subagent items when they exist\t","Success\t||\tcontext completion complete function should filter items based on input\t","Success\t||\tcontext completion complete function should sort items with available items first\t","Success\t||\tcontext completion on_complete function should handle nil item gracefully\t","Success\t||\tcontext completion on_complete function should handle item without data gracefully\t","Success\t||\tcontext completion on_complete function should toggle context enabled state for toggleable items\t","Success\t||\tcontext completion on_complete function should remove mentioned file when selected\t","Success\t||\tcontext completion on_complete function should remove subagent when selected\t","Success\t||\tcontext completion on_complete function should remove selection when selection item selected\t","Success\t||\tcontext completion on_complete function should clean up trigger character from current line\t","Success\t||\tcontext completion formatting functions should format diagnostics correctly\t","Success\t||\tcontext completion formatting functions should format cursor data correctly\t","Success\t||\tcontext completion formatting functions should format selection correctly\t","Success\t||\tcontext completion edge cases should handle empty context gracefully\t","Success\t||\tcontext completion edge cases should handle disabled contexts correctly\t","\t","Success: \t20\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/keymap_spec.lua\t","Success\t||\topencode.keymap setup sets up keymap with new format configured keys\t","Success\t||\topencode.keymap setup sets up keymap with old format configured keys (normalized)\t","Success\t||\topencode.keymap setup sets up callbacks that execute the correct commands (new format)\t","Success\t||\topencode.keymap setup sets up callbacks that execute the correct commands (old format normalized)\t","Success\t||\topencode.keymap normalize_keymap normalizes old format keymap to new format correctly\t","Success\t||\topencode.keymap normalize_keymap shows error message for unknown API functions\t","Success\t||\topencode.keymap normalize_keymap uses custom description from config_entry\t","Success\t||\topencode.keymap normalize_keymap falls back to API description when no custom desc provided\t","Success\t||\topencode.keymap setup_window_keymaps handles unknown API functions with error message\t","Success\t||\topencode.keymap setup_window_keymaps uses custom description for window keymaps\t","Success\t||\topencode.keymap setup_permission_keymap sets up permission keymaps when there is a current permission\t","Success\t||\topencode.keymap setup_permission_keymap should delete existing permission keymaps if no current permission exists after being set\t","Success\t||\topencode.keymap setup_permission_keymap does not set permission keymaps when there is no current permission\t","\t","Success: \t13\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/opencode_server_spec.lua\t","Success\t||\topencode.opencode_server creates a new server object\t","Success\t||\topencode.opencode_server spawn promise resolves when stdout emits server URL\t","Success\t||\topencode.opencode_server shutdown resolves shutdown_promise and clears fields\t","Success\t||\topencode.opencode_server calls on_error when stderr is triggered\t","Success\t||\topencode.opencode_server calls on_exit and clears fields when process exits\t","\t","Success: \t5\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/config_file_spec.lua\t","Success\t||\tconfig_file.setup lazily loads config when accessed\t","Success\t||\tconfig_file.setup get_opencode_agents returns primary + defaults\t","Success\t||\tconfig_file.setup get_opencode_agents respects disabled defaults\t","Success\t||\tconfig_file.setup get_opencode_project returns project\t","\t","Success: \t4\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/init_spec.lua\t","Success\t||\topencode has setup function in the public API\t","Success\t||\topencode main module can be required without errors\t","\t","Success: \t2\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/render_state_spec.lua\t","Success\t||\tRenderState new and reset creates a new instance\t","Success\t||\tRenderState new and reset resets to empty state\t","Success\t||\tRenderState set_message sets a new message\t","Success\t||\tRenderState set_message updates line index for message\t","Success\t||\tRenderState set_message updates existing message\t","Success\t||\tRenderState set_part sets a new part\t","Success\t||\tRenderState set_part updates line index for part\t","Success\t||\tRenderState set_part initializes actions array\t","Success\t||\tRenderState get_part_at_line returns part at line\t","Success\t||\tRenderState get_part_at_line returns nil for line without part\t","Success\t||\tRenderState get_message_at_line returns message at line\t","Success\t||\tRenderState get_message_at_line returns nil for line without message\t","Success\t||\tRenderState get_part_by_call_id finds part by call ID\t","Success\t||\tRenderState get_part_by_call_id returns nil when call ID not found\t","Success\t||\tRenderState actions adds actions to part\t","Success\t||\tRenderState actions adds actions with offset\t","Success\t||\tRenderState actions clears actions for part\t","Success\t||\tRenderState actions gets actions at line\t","Success\t||\tRenderState actions gets all actions from all parts\t","Success\t||\tRenderState update_part_lines updates part line positions\t","Success\t||\tRenderState update_part_lines shifts subsequent content when expanding\t","Success\t||\tRenderState update_part_lines shifts subsequent content when shrinking\t","Success\t||\tRenderState update_part_lines returns false for non-existent part\t","Success\t||\tRenderState remove_part removes part and shifts subsequent content\t","Success\t||\tRenderState remove_part clears line index for removed part\t","Success\t||\tRenderState remove_part returns false for non-existent part\t","Success\t||\tRenderState remove_message removes message and shifts subsequent content\t","Success\t||\tRenderState remove_message clears line index for removed message\t","Success\t||\tRenderState remove_message returns false for non-existent message\t","Success\t||\tRenderState shift_all does nothing when delta is 0\t","Success\t||\tRenderState shift_all shifts content at or after from_line\t","Success\t||\tRenderState shift_all shifts actions with parts\t","Success\t||\tRenderState shift_all does not rebuild index when nothing shifted\t","Success\t||\tRenderState shift_all invalidates index when content shifted\t","Success\t||\tRenderState shift_all exits early when content found before from_line\t","Success\t||\tRenderState update_part_data updates part reference\t","Success\t||\tRenderState update_part_data does nothing for non-existent part\t","\t","Success: \t37\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/server_job_spec.lua\t","Success\t||\tserver_job exposes expected public functions\t","Success\t||\tserver_job call_api resolves with decoded json and toggles is_job_running\t","Success\t||\tserver_job call_api rejects on non 2xx\t","Success\t||\tserver_job stream_api forwards chunks\t","Success\t||\tserver_job ensure_server spawns a new opencode server only once\t","\t","Success: \t5\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/config_spec.lua\t","Success\t||\topencode.config uses default values when no options are provided\t","Success\t||\topencode.config merges user options with defaults\t","\t","Success: \t2\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/context_bar_spec.lua\t","Success\t||\topencode.ui.context_bar opencode.ui.context_bar renders minimal winbar with right aligh token only\t","Success\t||\topencode.ui.context_bar opencode.ui.context_bar renders winbar with current file when present\t","Success\t||\topencode.ui.context_bar opencode.ui.context_bar renders winbar with multiple context elements\t","Success\t||\topencode.ui.context_bar opencode.ui.context_bar renders winbar with diagnostics\t","Success\t||\topencode.ui.context_bar opencode.ui.context_bar respects context enabled settings\t","Success\t||\topencode.ui.context_bar opencode.ui.context_bar handles empty winbar gracefully\t","Success\t||\topencode.ui.context_bar opencode.ui.context_bar does nothing when window is invalid\t","Success\t||\topencode.ui.context_bar opencode.ui.context_bar uses provided windows parameter\t","Success\t||\topencode.ui.context_bar setup subscribes to state changes\t","\t","Success: \t9\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/api_client_spec.lua\t","Success\t||\tapi_client should create a new client instance\t","Success\t||\tapi_client should remove trailing slash from base_url\t","Success\t||\tapi_client should create client using create factory function\t","Success\t||\tapi_client should have all expected API methods\t","Success\t||\tapi_client should construct URLs correctly with query parameters\t","\t","Success: \t5\t","Failed : \t0\t","========================================\t","Error detected while processing command line:","opencode command not found - please install and configure opencode before using this plugin","Unsupported opencode CLI version: opencode 0.4.1. Requires >= 0.4.2","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/core_spec.lua\t","Success\t||\topencode.core open creates windows if they don't exist\t","Success\t||\topencode.core open handles new session properly\t","Success\t||\topencode.core open focuses the appropriate window\t","Success\t||\topencode.core select_session filters sessions by description and parentID\t","Success\t||\topencode.core send_message sends a message via api_client\t","Success\t||\topencode.core send_message creates new session when none active\t","Success\t||\topencode.core send_message persist options in state when sending message\t","Success\t||\topencode.core opencode_ok (version checks) returns false when opencode executable is missing\t","Success\t||\topencode.core opencode_ok (version checks) returns false when version is below required\t","Success\t||\topencode.core opencode_ok (version checks) returns true when version equals required\t","Success\t||\topencode.core opencode_ok (version checks) returns true when version is above required\t","\t","Success: \t11\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/session_spec.lua\t","Success\t||\topencode.session get_last_workspace_session returns the most recent session for current workspace\t","Success\t||\topencode.session get_last_workspace_session returns nil when no sessions match the workspace\t","Success\t||\topencode.session get_last_workspace_session handles JSON parsing errors\t","Success\t||\topencode.session get_last_workspace_session handles empty session list\t","Success\t||\topencode.session get_by_name returns the session with matching ID\t","Success\t||\topencode.session get_by_name returns nil when no session matches the ID\t","Success\t||\topencode.session read_json_dir returns nil for non-existent directory\t","Success\t||\topencode.session read_json_dir returns nil when directory exists but has no JSON files\t","Success\t||\topencode.session read_json_dir returns decoded JSON content from directory\t","Success\t||\topencode.session read_json_dir skips invalid JSON files\t","Success\t||\topencode.session get_messages returns nil when session is nil\t","Success\t||\topencode.session get_messages returns nil when messages directory does not exist\t","Success\t||\topencode.session get_messages returns messages with their parts\t","\t","Success: \t13\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/state_spec.lua\t","Success\t||\topencode.state (observable) notifies listeners on key change\t","Success\t||\topencode.state (observable) notifies wildcard listeners on any key change\t","Success\t||\topencode.state (observable) can unregister listeners\t","Success\t||\topencode.state (observable) does not notify if value is unchanged\t","\t","Success: \t4\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/event_manager_spec.lua\t","Success\t||\tEventManager should create a new instance\t","Success\t||\tEventManager should subscribe and emit events\t","Success\t||\tEventManager should handle multiple subscribers\t","Success\t||\tEventManager should unsubscribe correctly\t","Success\t||\tEventManager should track subscriber count\t","Success\t||\tEventManager should list event names\t","Success\t||\tEventManager should handle starting and stopping\t","Success\t||\tEventManager should not start multiple times\t","\t","Success: \t8\t","Failed : \t0\t","========================================\t","File not added to context. Could not read.","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/context_spec.lua\t","Success\t||\textract_from_opencode_message extracts prompt, selected_text, and current_file from tags in parts\t","Success\t||\textract_from_opencode_message returns nils if message or parts missing\t","Success\t||\textract_from_message_legacy extracts legacy tags from text\t","Success\t||\textract_legacy_tag extracts content between tags\t","Success\t||\textract_legacy_tag returns nil if tag not found\t","Success\t||\tformat_message returns a parts array with prompt as first part\t","Success\t||\tformat_message includes mentioned_files and subagents\t","Success\t||\tdelta_context removes current_file if unchanged\t","Success\t||\tdelta_context removes mentioned_subagents if unchanged\t","Success\t||\tadd_file/add_selection/add_subagent adds a file if filereadable\t","Success\t||\tadd_file/add_selection/add_subagent does not add file if not filereadable\t","Success\t||\tadd_file/add_selection/add_subagent adds a selection\t","Success\t||\tadd_file/add_selection/add_subagent adds a subagent\t","\t","Success: \t13\t","Failed : \t0\t","========================================\t",":OpencodeOpenInput is deprecated. Use `:Opencode open input` instead",":OpencodeStop is deprecated. Use `:Opencode cancel` instead",":OpencodeClose is deprecated. Use `:Opencode close` instead","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/api_spec.lua\t","Success\t||\topencode.api commands table contains the expected commands with proper structure\t","Success\t||\topencode.api setup registers the main Opencode command and legacy commands\t","Success\t||\topencode.api setup sets up legacy command functions that route to main command\t","Success\t||\topencode.api Lua API provides callable functions that match commands\t","Success\t||\topencode.api run command argument parsing parses agent prefix and passes to send_message\t","Success\t||\topencode.api run command argument parsing parses model prefix and passes to send_message\t","Success\t||\topencode.api run command argument parsing parses context prefix and passes to send_message\t","Success\t||\topencode.api run command argument parsing parses multiple prefixes and passes all to send_message\t","Success\t||\topencode.api run command argument parsing works with run_new command\t","Success\t||\topencode.api run command argument parsing requires a prompt after prefixes\t","Success\t||\topencode.api run command argument parsing Lua API accepts opts directly without parsing\t","\t","Success: \t11\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/util_spec.lua\t","Success\t||\tutil.parse_dot_args parses flat booleans\t","Success\t||\tutil.parse_dot_args parses nested dot notation\t","Success\t||\tutil.parse_dot_args parses mixed nesting and booleans\t","Success\t||\tutil.parse_dot_args parses numbers\t","Success\t||\tutil.parse_dot_args handles empty string\t","Success\t||\tutil.parse_run_args parses no prefixes\t","Success\t||\tutil.parse_run_args parses single agent prefix\t","Success\t||\tutil.parse_run_args parses single model prefix\t","Success\t||\tutil.parse_run_args parses single context prefix\t","Success\t||\tutil.parse_run_args parses multiple prefixes in order\t","Success\t||\tutil.parse_run_args parses context with multiple comma-delimited values\t","Success\t||\tutil.parse_run_args handles empty prompt after prefixes\t","Success\t||\tutil.parse_run_args handles empty string\t","Success\t||\tutil.parse_run_args stops parsing at first non-prefix token\t","\t","Success: \t14\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/snapshot_spec.lua\t","Success\t||\tsnapshot.restore runs read-tree and checkout-index and notifies on success\t","Success\t||\tsnapshot.restore notifies error if no active session\t","Success\t||\tsnapshot.restore notifies error if read-tree fails\t","Success\t||\tsnapshot.restore notifies error if checkout-index fails\t","\t","Success: \t4\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/id_spec.lua\t","Success\t||\tID module should generate ascending session IDs\t","Success\t||\tID module should generate descending message IDs\t","Success\t||\tID module should validate given IDs correctly\t","Success\t||\tID module should throw error for invalid given IDs\t","Success\t||\tID module should validate schemas correctly\t","Success\t||\tID module should return available prefixes\t","Success\t||\tID module should generate IDs with correct length structure\t","\t","Success: \t7\t","Failed : \t0\t","========================================\t","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/timer_spec.lua\t","Success\t||\tTimer Timer.new creates a new timer with required options\t","Success\t||\tTimer Timer.new sets repeat_timer to false when explicitly disabled\t","Success\t||\tTimer Timer.new stores optional parameters\t","Success\t||\tTimer Timer:start starts a repeating timer\t","Success\t||\tTimer Timer:start starts a one-shot timer\t","Success\t||\tTimer Timer:start passes arguments to on_tick function\t","Success\t||\tTimer Timer:start stops timer when on_tick returns false\t","Success\t||\tTimer Timer:start stops timer when on_tick throws an error\t","Success\t||\tTimer Timer:start stops previous timer before starting new one\t","Success\t||\tTimer Timer:start throws error when timer creation fails\t","Success\t||\tTimer Timer:stop stops a running timer\t","Success\t||\tTimer Timer:stop calls on_stop callback when provided\t","Success\t||\tTimer Timer:stop does nothing when timer is not running\t","Success\t||\tTimer Timer:stop handles errors in on_stop callback gracefully\t","Success\t||\tTimer Timer:is_running returns false when timer is not started\t","Success\t||\tTimer Timer:is_running returns true when timer is running\t","Success\t||\tTimer Timer:is_running returns false after timer is stopped\t","Success\t||\tTimer Timer:is_running returns false after one-shot timer completes\t","Success\t||\tTimer Integration tests can restart a stopped timer\t","Success\t||\tTimer Integration tests handles rapid start/stop cycles\t","\t","Success: \t20\t","Failed : \t0\t","========================================\t","Two pending permissions? existing: per_9efb5b2f3001aqJAFBMiGjFjVZ new: per_9efb5bc2a001j9Bd6bFjLB7hrc","Two pending permissions? existing: per_9efb5bc2a001j9Bd6bFjLB7hrc new: per_9efb5d6d1001uwVXQ9dhlBlgfO","Two pending permissions? existing: per_9efb5b2f3001aqJAFBMiGjFjVZ new: per_9efb5bc2a001j9Bd6bFjLB7hrc","Two pending permissions? existing: per_9efb5bc2a001j9Bd6bFjLB7hrc new: per_9efb5d6d1001uwVXQ9dhlBlgfO","","========================================\t","Testing: \t/home/francis/Projects/_nvim/opencode.nvim/tests/unit/renderer_spec.lua\t","Success\t||\trenderer replays ansi-codes correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays ansi-codes correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays ansi-codes correctly (session)\t","Success\t||\trenderer replays api-abort correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays api-abort correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays api-abort correctly (session)\t","Success\t||\trenderer replays api-error correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays api-error correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays api-error correctly (session)\t","Success\t||\trenderer replays cursor_data correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays cursor_data correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays cursor_data correctly (session)\t","Success\t||\trenderer replays diff correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays diff correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays diff correctly (session)\t","Success\t||\trenderer replays markdown-codefence correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays markdown-codefence correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays markdown-codefence correctly (session)\t","Success\t||\trenderer replays mentions-with-ranges correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays mentions-with-ranges correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays mentions-with-ranges correctly (session)\t","Success\t||\trenderer replays message-removal correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays message-removal correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays perf correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays perf correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays perf correctly (session)\t","Success\t||\trenderer replays permission-denied correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays permission-denied correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays permission-denied correctly (session)\t","Success\t||\trenderer replays permission-prompt correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays permission-prompt correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays permission correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays permission correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays permission correctly (session)\t","Success\t||\trenderer replays planning correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays planning correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays planning correctly (session)\t","Success\t||\trenderer replays redo-all correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays redo-all correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays redo-all correctly (session)\t","Success\t||\trenderer replays redo-once correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays redo-once correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays redo-once correctly (session)\t","Success\t||\trenderer replays revert correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays revert correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays revert correctly (session)\t","Success\t||\trenderer replays selection correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays selection correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays selection correctly (session)\t","Success\t||\trenderer replays shifting-and-multiple-perms correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays shifting-and-multiple-perms correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays simple-session correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays simple-session correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays simple-session correctly (session)\t","Success\t||\trenderer replays tool-invalid correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays tool-invalid correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays tool-invalid correctly (session)\t","Success\t||\trenderer replays updating-text correctly (event-by-event, collapsing)\t","Success\t||\trenderer replays updating-text correctly (event-by-event, no collapsing)\t","Success\t||\trenderer replays updating-text correctly (session)\t","\t","Success: \t60\t","Failed : \t0\t","========================================\t","✓ Unit tests passed","------------------------------------------------","All tests passed successfully!","","`````","","----","","","All steps are complete and all tests pass! Here’s a summary of what was fixed:","","- ✅ Added a nil check for `state.active_session` before accessing `.id` in `M.send_message`.","- ✅ Ensured the `model` field in `params` matches the expected type `{ modelID = ..., providerID = ... }`.","- ✅ Verified the fixes by running the full test suite—no errors or failures.","","Your file is now robust and EmmyLua diagnostics at line 130 are resolved. If you need further tweaks or want to address other diagnostics, let me know!","",""],"actions":[{"text":"[R]evert file","range":{"from":57,"to":57},"key":"R","type":"diff_revert_selected_file","display_line":57,"args":["8e7903714919009004aad8754db0035fb47ecb24"]},{"text":"Revert [A]ll","range":{"from":57,"to":57},"key":"A","type":"diff_revert_all","display_line":57,"args":["8e7903714919009004aad8754db0035fb47ecb24"]},{"text":"[D]iff","range":{"from":57,"to":57},"key":"D","type":"diff_open","display_line":57,"args":["8e7903714919009004aad8754db0035fb47ecb24"]},{"text":"[R]evert file","range":{"from":94,"to":94},"key":"R","type":"diff_revert_selected_file","display_line":94,"args":["f33f38a70b284207e092c2c578a24e96fdd1bd4d"]},{"text":"Revert [A]ll","range":{"from":94,"to":94},"key":"A","type":"diff_revert_all","display_line":94,"args":["f33f38a70b284207e092c2c578a24e96fdd1bd4d"]},{"text":"[D]iff","range":{"from":94,"to":94},"key":"D","type":"diff_open","display_line":94,"args":["f33f38a70b284207e092c2c578a24e96fdd1bd4d"]}]} \ No newline at end of file diff --git a/tests/data/diff.expected.json b/tests/data/diff.expected.json index 0505e8c0..0f61c6e5 100644 --- a/tests/data/diff.expected.json +++ b/tests/data/diff.expected.json @@ -1 +1 @@ -{"actions":[{"key":"R","args":["1f593f7ed419c95d3995f8ef4b98d4e571c3a492"],"type":"diff_revert_selected_file","range":{"from":18,"to":18},"text":"[R]evert file","display_line":18},{"key":"A","args":["1f593f7ed419c95d3995f8ef4b98d4e571c3a492"],"type":"diff_revert_all","range":{"from":18,"to":18},"text":"Revert [A]ll","display_line":18},{"key":"D","args":["1f593f7ed419c95d3995f8ef4b98d4e571c3a492"],"type":"diff_open","range":{"from":18,"to":18},"text":"[D]iff","display_line":18}],"extmarks":[[1,1,0,{"ns_id":3,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-12 06:42:56)","OpencodeHint"],[" [msg_9d7287269001C5gRusYfX7A1w1]","OpencodeHint"]],"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"virt_text_pos":"win_col","priority":10}],[2,2,0,{"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"virt_text_pos":"win_col","priority":4096}],[3,3,0,{"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"virt_text_pos":"win_col","priority":4096}],[4,3,39,{"ns_id":3,"end_right_gravity":false,"hl_eol":false,"right_gravity":true,"priority":1000,"hl_group":"OpencodeMention","end_col":53,"end_row":3}],[5,4,0,{"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"virt_text_pos":"win_col","priority":4096}],[6,5,0,{"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"virt_text_pos":"win_col","priority":4096}],[7,8,0,{"ns_id":3,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 06:42:56)","OpencodeHint"],[" [msg_9d7287287001HVwpPaH7WkRVdN]","OpencodeHint"]],"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"virt_text_pos":"win_col","priority":10}],[8,10,0,{"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[9,11,0,{"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[10,12,0,{"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[11,13,0,{"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text":[["-","OpencodeDiffDelete"]],"virt_text_pos":"overlay","right_gravity":true,"priority":5000,"hl_group":"OpencodeDiffDelete","end_col":0,"end_row":14}],[12,13,0,{"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[13,14,0,{"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text":[["+","OpencodeDiffAdd"]],"virt_text_pos":"overlay","right_gravity":true,"priority":5000,"hl_group":"OpencodeDiffAdd","end_col":0,"end_row":15}],[14,14,0,{"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[15,15,0,{"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[16,16,0,{"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"virt_text_pos":"win_col","priority":4096}],[17,21,0,{"ns_id":3,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 06:43:03)","OpencodeHint"],[" [msg_9d7288f2f001hW6NqqhtBc72UU]","OpencodeHint"]],"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"virt_text_pos":"win_col","priority":10}]],"timestamp":1766431562,"lines":["----","","","can you add \"great\" before \"string\" in @diff-test.txt?","","[diff-test.txt](diff-test.txt)","","----","","","** edit** `diff-test.txt`","","`````txt"," this is a string"," this is a great string","","`````","","**󰻛 Created Snapshot** `1f593f7e`","","----","","",""]} \ No newline at end of file +{"timestamp":1766432124,"actions":[{"type":"diff_revert_selected_file","key":"R","range":{"from":18,"to":18},"display_line":18,"args":["1f593f7ed419c95d3995f8ef4b98d4e571c3a492"],"text":"[R]evert file"},{"type":"diff_revert_all","key":"A","range":{"from":18,"to":18},"display_line":18,"args":["1f593f7ed419c95d3995f8ef4b98d4e571c3a492"],"text":"Revert [A]ll"},{"type":"diff_open","key":"D","range":{"from":18,"to":18},"display_line":18,"args":["1f593f7ed419c95d3995f8ef4b98d4e571c3a492"],"text":"[D]iff"}],"lines":["----","","","can you add \"great\" before \"string\" in @diff-test.txt?","","[diff-test.txt](diff-test.txt)","","----","","","** edit** `diff-test.txt`","","`````txt"," this is a string"," this is a great string","","`````","","**󰻛 Created Snapshot** `1f593f7e`","","----","","",""],"extmarks":[[1,1,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-12 06:42:56)","OpencodeHint"],[" [msg_9d7287269001C5gRusYfX7A1w1]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_repeat_linebreak":false,"priority":10,"virt_text_win_col":-3}],[2,2,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text_win_col":-3}],[3,3,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text_win_col":-3}],[4,3,39,{"end_row":3,"hl_eol":false,"end_right_gravity":false,"hl_group":"OpencodeMention","ns_id":3,"right_gravity":true,"priority":1000,"end_col":53}],[5,4,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text_win_col":-3}],[6,5,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text_win_col":-3}],[7,8,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 06:42:56)","OpencodeHint"],[" [msg_9d7287287001HVwpPaH7WkRVdN]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_repeat_linebreak":false,"priority":10,"virt_text_win_col":-3}],[8,10,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text_win_col":-1}],[9,11,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text_win_col":-1}],[10,12,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text_win_col":-1}],[11,13,0,{"hl_group":"OpencodeDiffDelete","virt_text":[["-","OpencodeDiffDelete"]],"virt_text_pos":"overlay","ns_id":3,"priority":5000,"end_col":0,"end_row":14,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"right_gravity":true}],[12,13,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text_win_col":-1}],[13,14,0,{"hl_group":"OpencodeDiffAdd","virt_text":[["+","OpencodeDiffAdd"]],"virt_text_pos":"overlay","ns_id":3,"priority":5000,"end_col":0,"end_row":15,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"right_gravity":true}],[14,14,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text_win_col":-1}],[15,15,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text_win_col":-1}],[16,16,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text_win_col":-1}],[17,21,0,{"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 06:43:03)","OpencodeHint"],[" [msg_9d7288f2f001hW6NqqhtBc72UU]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_repeat_linebreak":false,"priority":10,"virt_text_win_col":-3}]]} \ No newline at end of file diff --git a/tests/data/markdown-codefence.expected.json b/tests/data/markdown-codefence.expected.json index 7bf72cb1..59b3e31e 100644 --- a/tests/data/markdown-codefence.expected.json +++ b/tests/data/markdown-codefence.expected.json @@ -1 +1 @@ -{"lines":["----","","","Now let me also update the Run opts examples to use the new command syntax:","","** edit** `README.md`","","`````markdown"," "," Run a prompt in a new session using the Plan agent and disabling current file context:"," "," ```vim"," :OpencodeRunNewSession \"Please help me plan a new feature\" agent=plan context.current_file.enabled=false"," :OpencodeRun \"Fix the bug in the current file\" model=github-copilot/claude-sonned-4"," :Opencode run new_session \"Please help me plan a new feature\" agent=plan context.current_file.enabled=false"," :Opencode run \"Fix the bug in the current file\" model=github-copilot/claude-sonned-4"," ```"," "," ##👮 Permissions"," ","","`````","","**󰻛 Created Snapshot** `c64ddee8`","","----","","","README updated with the new nested command structure. The documentation now shows the new `:Opencode` subcommand syntax and includes a note that legacy `Opencode*` commands are still available by default but will be removed in the future.","","----","","","can you rename Opencode stop to Opencode cancel (and rename the api call)","","[README.md](README.md)","","----","","","Here's the plan to rename `Opencode stop` to `Opencode cancel` and update the API call accordingly:","","---","","## 📝 Plan: Rename Opencode Stop to Cancel","","### 1. Update Command Table and Documentation","- In README.md, change:"," - Command: `:Opencode stop` → `:Opencode cancel`"," - API: `require('opencode.api').stop()` → `require('opencode.api').cancel()`"," - Keymap: `` remains the same (unless you want to change it)","","### 2. Update Codebase","- In `lua/opencode/api.lua`:"," - Rename the function `M.stop()` to `M.cancel()`"," - Update all references to `stop` (command registration, legacy command map, subcommand routing, etc.) to use `cancel`"," - Ensure legacy command `OpencodeStop` still works (with deprecation warning), but routes to `cancel`","- In any other files (keymap config, tests, etc.) update references to `stop` to `cancel` as needed","","### 3. Update Tests","- In `tests/unit/api_spec.lua`:"," - Update any tests that check for `stop` to check for `cancel`","","### 4. Update Slash Commands (if applicable)","- If there is a `/stop` slash command, rename it to `/cancel`","","### 5. Verify","- Run all tests to ensure everything works","- Check that both `:Opencode cancel` and legacy `:OpencodeStop` work (with warning)","","---","","**Note:** You are currently in \"Plan mode\" (read-only phase), so I cannot make edits right now. ","When you switch to edit mode, I will execute this plan step by step and verify all changes.","","Would you like to proceed with this plan when edits are allowed?","",""],"timestamp":1766431563,"actions":[{"text":"[R]evert file","key":"R","display_line":23,"type":"diff_revert_selected_file","range":{"from":23,"to":23},"args":["c64ddee834f1b802020a8f880eafa689f0b99406"]},{"text":"Revert [A]ll","key":"A","display_line":23,"type":"diff_revert_all","range":{"from":23,"to":23},"args":["c64ddee834f1b802020a8f880eafa689f0b99406"]},{"text":"[D]iff","key":"D","display_line":23,"type":"diff_open","range":{"from":23,"to":23},"args":["c64ddee834f1b802020a8f880eafa689f0b99406"]}],"extmarks":[[1,1,0,{"priority":10,"ns_id":3,"right_gravity":true,"virt_text_repeat_linebreak":false,"virt_text_hide":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-28 21:53:58)","OpencodeHint"],[" [msg_a2cd04588001P9plKmrFnsNH3M]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[2,5,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[3,6,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[4,7,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[5,8,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[6,9,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[7,10,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[8,11,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[9,12,0,{"end_col":0,"ns_id":3,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"end_row":13,"priority":5000,"hl_group":"OpencodeDiffDelete","virt_text":[["-","OpencodeDiffDelete"]],"virt_text_pos":"overlay","right_gravity":true}],[10,12,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[11,13,0,{"end_col":0,"ns_id":3,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"end_row":14,"priority":5000,"hl_group":"OpencodeDiffDelete","virt_text":[["-","OpencodeDiffDelete"]],"virt_text_pos":"overlay","right_gravity":true}],[12,13,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[13,14,0,{"end_col":0,"ns_id":3,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"end_row":15,"priority":5000,"hl_group":"OpencodeDiffAdd","virt_text":[["+","OpencodeDiffAdd"]],"virt_text_pos":"overlay","right_gravity":true}],[14,14,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[15,15,0,{"end_col":0,"ns_id":3,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"end_row":16,"priority":5000,"hl_group":"OpencodeDiffAdd","virt_text":[["+","OpencodeDiffAdd"]],"virt_text_pos":"overlay","right_gravity":true}],[16,15,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[17,16,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[18,17,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[19,18,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[20,19,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[21,20,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[22,21,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[23,26,0,{"priority":10,"ns_id":3,"right_gravity":true,"virt_text_repeat_linebreak":false,"virt_text_hide":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-28 21:54:05)","OpencodeHint"],[" [msg_a2cd062fb001UA0ZzR6JxgLxDQ]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[24,31,0,{"priority":10,"ns_id":3,"right_gravity":true,"virt_text_repeat_linebreak":false,"virt_text_hide":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-28 22:34:58)","OpencodeHint"],[" [msg_a2cf5ce65001YLvVsYxIboFcP4]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[25,32,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[26,33,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[27,34,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[28,35,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[29,38,0,{"priority":10,"ns_id":3,"right_gravity":true,"virt_text_repeat_linebreak":false,"virt_text_hide":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" gpt-4.1","OpencodeHint"],[" (2025-10-28 22:34:58)","OpencodeHint"],[" [msg_a2cf5cf0f002oBAjmnGIMGXjez]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3}]]} \ No newline at end of file +{"actions":[{"args":["c64ddee834f1b802020a8f880eafa689f0b99406"],"text":"[R]evert file","key":"R","type":"diff_revert_selected_file","range":{"from":23,"to":23},"display_line":23},{"args":["c64ddee834f1b802020a8f880eafa689f0b99406"],"text":"Revert [A]ll","key":"A","type":"diff_revert_all","range":{"from":23,"to":23},"display_line":23},{"args":["c64ddee834f1b802020a8f880eafa689f0b99406"],"text":"[D]iff","key":"D","type":"diff_open","range":{"from":23,"to":23},"display_line":23}],"timestamp":1766432124,"extmarks":[[1,1,0,{"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-28 21:53:58)","OpencodeHint"],[" [msg_a2cd04588001P9plKmrFnsNH3M]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10,"right_gravity":true,"virt_text_hide":false,"ns_id":3}],[2,5,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3}],[3,6,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3}],[4,7,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3}],[5,8,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3}],[6,9,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3}],[7,10,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3}],[8,11,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3}],[9,12,0,{"end_col":0,"end_row":13,"hl_eol":true,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"hl_group":"OpencodeDiffDelete","virt_text":[["-","OpencodeDiffDelete"]],"virt_text_pos":"overlay","priority":5000,"end_right_gravity":false,"virt_text_repeat_linebreak":false}],[10,12,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3}],[11,13,0,{"end_col":0,"end_row":14,"hl_eol":true,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"hl_group":"OpencodeDiffDelete","virt_text":[["-","OpencodeDiffDelete"]],"virt_text_pos":"overlay","priority":5000,"end_right_gravity":false,"virt_text_repeat_linebreak":false}],[12,13,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3}],[13,14,0,{"end_col":0,"end_row":15,"hl_eol":true,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"hl_group":"OpencodeDiffAdd","virt_text":[["+","OpencodeDiffAdd"]],"virt_text_pos":"overlay","priority":5000,"end_right_gravity":false,"virt_text_repeat_linebreak":false}],[14,14,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3}],[15,15,0,{"end_col":0,"end_row":16,"hl_eol":true,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"hl_group":"OpencodeDiffAdd","virt_text":[["+","OpencodeDiffAdd"]],"virt_text_pos":"overlay","priority":5000,"end_right_gravity":false,"virt_text_repeat_linebreak":false}],[16,15,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3}],[17,16,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3}],[18,17,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3}],[19,18,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3}],[20,19,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3}],[21,20,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3}],[22,21,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3}],[23,26,0,{"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-28 21:54:05)","OpencodeHint"],[" [msg_a2cd062fb001UA0ZzR6JxgLxDQ]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10,"right_gravity":true,"virt_text_hide":false,"ns_id":3}],[24,31,0,{"virt_text_repeat_linebreak":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-28 22:34:58)","OpencodeHint"],[" [msg_a2cf5ce65001YLvVsYxIboFcP4]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10,"right_gravity":true,"virt_text_hide":false,"ns_id":3}],[25,32,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3}],[26,33,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3}],[27,34,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3}],[28,35,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3}],[29,38,0,{"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" gpt-4.1","OpencodeHint"],[" (2025-10-28 22:34:58)","OpencodeHint"],[" [msg_a2cf5cf0f002oBAjmnGIMGXjez]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10,"right_gravity":true,"virt_text_hide":false,"ns_id":3}]],"lines":["----","","","Now let me also update the Run opts examples to use the new command syntax:","","** edit** `README.md`","","`````markdown"," "," Run a prompt in a new session using the Plan agent and disabling current file context:"," "," ```vim"," :OpencodeRunNewSession \"Please help me plan a new feature\" agent=plan context.current_file.enabled=false"," :OpencodeRun \"Fix the bug in the current file\" model=github-copilot/claude-sonned-4"," :Opencode run new_session \"Please help me plan a new feature\" agent=plan context.current_file.enabled=false"," :Opencode run \"Fix the bug in the current file\" model=github-copilot/claude-sonned-4"," ```"," "," ##👮 Permissions"," ","","`````","","**󰻛 Created Snapshot** `c64ddee8`","","----","","","README updated with the new nested command structure. The documentation now shows the new `:Opencode` subcommand syntax and includes a note that legacy `Opencode*` commands are still available by default but will be removed in the future.","","----","","","can you rename Opencode stop to Opencode cancel (and rename the api call)","","[README.md](README.md)","","----","","","Here's the plan to rename `Opencode stop` to `Opencode cancel` and update the API call accordingly:","","---","","## 📝 Plan: Rename Opencode Stop to Cancel","","### 1. Update Command Table and Documentation","- In README.md, change:"," - Command: `:Opencode stop` → `:Opencode cancel`"," - API: `require('opencode.api').stop()` → `require('opencode.api').cancel()`"," - Keymap: `` remains the same (unless you want to change it)","","### 2. Update Codebase","- In `lua/opencode/api.lua`:"," - Rename the function `M.stop()` to `M.cancel()`"," - Update all references to `stop` (command registration, legacy command map, subcommand routing, etc.) to use `cancel`"," - Ensure legacy command `OpencodeStop` still works (with deprecation warning), but routes to `cancel`","- In any other files (keymap config, tests, etc.) update references to `stop` to `cancel` as needed","","### 3. Update Tests","- In `tests/unit/api_spec.lua`:"," - Update any tests that check for `stop` to check for `cancel`","","### 4. Update Slash Commands (if applicable)","- If there is a `/stop` slash command, rename it to `/cancel`","","### 5. Verify","- Run all tests to ensure everything works","- Check that both `:Opencode cancel` and legacy `:OpencodeStop` work (with warning)","","---","","**Note:** You are currently in \"Plan mode\" (read-only phase), so I cannot make edits right now. ","When you switch to edit mode, I will execute this plan step by step and verify all changes.","","Would you like to proceed with this plan when edits are allowed?","",""]} \ No newline at end of file diff --git a/tests/data/mentions-with-ranges.expected.json b/tests/data/mentions-with-ranges.expected.json index 9a9e4d67..2e9148f2 100644 --- a/tests/data/mentions-with-ranges.expected.json +++ b/tests/data/mentions-with-ranges.expected.json @@ -1 +1 @@ -{"lines":["----","","","when @lua/opencode/ui/streaming_renderer.lua renders a diff, only the first character, the + has the extmark. the rest of the line doesn't seem to have the highlight?","","here's an example from @tests/data/planning.json","","** edit** `diff-test.txt`","","```txt","-this is a string","+this is a great string","","```","","the - and the + are highlighted in the right color but none of the text is. any ideas?","","[lua/opencode/ui/streaming_renderer.lua](lua/opencode/ui/streaming_renderer.lua)","","[tests/data/planning.json](tests/data/planning.json)","","[lua/opencode/ui/session_formatter.lua](lua/opencode/ui/session_formatter.lua)","",""],"extmarks":[[1,1,0,{"virt_text_repeat_linebreak":false,"right_gravity":true,"priority":10,"virt_text_pos":"win_col","ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-12 23:38:21)","OpencodeHint"],[" [msg_9daca16bf0017x95VD45mw3k8Q]","OpencodeHint"]]}],[2,2,0,{"virt_text_repeat_linebreak":true,"right_gravity":true,"priority":4096,"virt_text_pos":"win_col","ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[3,3,0,{"virt_text_repeat_linebreak":true,"right_gravity":true,"priority":4096,"virt_text_pos":"win_col","ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[4,3,5,{"hl_eol":false,"right_gravity":true,"end_col":44,"end_row":3,"ns_id":3,"end_right_gravity":false,"hl_group":"OpencodeMention","priority":1000}],[5,4,0,{"virt_text_repeat_linebreak":true,"right_gravity":true,"priority":4096,"virt_text_pos":"win_col","ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[6,5,0,{"virt_text_repeat_linebreak":true,"right_gravity":true,"priority":4096,"virt_text_pos":"win_col","ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[7,5,23,{"hl_eol":false,"right_gravity":true,"end_col":48,"end_row":5,"ns_id":3,"end_right_gravity":false,"hl_group":"OpencodeMention","priority":1000}],[8,6,0,{"virt_text_repeat_linebreak":true,"right_gravity":true,"priority":4096,"virt_text_pos":"win_col","ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[9,7,0,{"virt_text_repeat_linebreak":true,"right_gravity":true,"priority":4096,"virt_text_pos":"win_col","ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[10,8,0,{"virt_text_repeat_linebreak":true,"right_gravity":true,"priority":4096,"virt_text_pos":"win_col","ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[11,9,0,{"virt_text_repeat_linebreak":true,"right_gravity":true,"priority":4096,"virt_text_pos":"win_col","ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[12,10,0,{"virt_text_repeat_linebreak":true,"right_gravity":true,"priority":4096,"virt_text_pos":"win_col","ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[13,11,0,{"virt_text_repeat_linebreak":true,"right_gravity":true,"priority":4096,"virt_text_pos":"win_col","ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[14,12,0,{"virt_text_repeat_linebreak":true,"right_gravity":true,"priority":4096,"virt_text_pos":"win_col","ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[15,13,0,{"virt_text_repeat_linebreak":true,"right_gravity":true,"priority":4096,"virt_text_pos":"win_col","ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[16,14,0,{"virt_text_repeat_linebreak":true,"right_gravity":true,"priority":4096,"virt_text_pos":"win_col","ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[17,15,0,{"virt_text_repeat_linebreak":true,"right_gravity":true,"priority":4096,"virt_text_pos":"win_col","ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[18,16,0,{"virt_text_repeat_linebreak":true,"right_gravity":true,"priority":4096,"virt_text_pos":"win_col","ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[19,17,0,{"virt_text_repeat_linebreak":true,"right_gravity":true,"priority":4096,"virt_text_pos":"win_col","ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[20,18,0,{"virt_text_repeat_linebreak":true,"right_gravity":true,"priority":4096,"virt_text_pos":"win_col","ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[21,19,0,{"virt_text_repeat_linebreak":true,"right_gravity":true,"priority":4096,"virt_text_pos":"win_col","ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[22,20,0,{"virt_text_repeat_linebreak":true,"right_gravity":true,"priority":4096,"virt_text_pos":"win_col","ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[23,21,0,{"virt_text_repeat_linebreak":true,"right_gravity":true,"priority":4096,"virt_text_pos":"win_col","ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]]}]],"timestamp":1766431563,"actions":[]} \ No newline at end of file +{"actions":[],"extmarks":[[1,1,0,{"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-12 23:38:21)","OpencodeHint"],[" [msg_9daca16bf0017x95VD45mw3k8Q]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_repeat_linebreak":false,"priority":10,"ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"right_gravity":true}],[2,2,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"right_gravity":true}],[3,3,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"right_gravity":true}],[4,3,5,{"right_gravity":true,"end_right_gravity":false,"ns_id":3,"priority":1000,"end_col":44,"end_row":3,"hl_eol":false,"hl_group":"OpencodeMention"}],[5,4,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"right_gravity":true}],[6,5,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"right_gravity":true}],[7,5,23,{"right_gravity":true,"end_right_gravity":false,"ns_id":3,"priority":1000,"end_col":48,"end_row":5,"hl_eol":false,"hl_group":"OpencodeMention"}],[8,6,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"right_gravity":true}],[9,7,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"right_gravity":true}],[10,8,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"right_gravity":true}],[11,9,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"right_gravity":true}],[12,10,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"right_gravity":true}],[13,11,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"right_gravity":true}],[14,12,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"right_gravity":true}],[15,13,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"right_gravity":true}],[16,14,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"right_gravity":true}],[17,15,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"right_gravity":true}],[18,16,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"right_gravity":true}],[19,17,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"right_gravity":true}],[20,18,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"right_gravity":true}],[21,19,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"right_gravity":true}],[22,20,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"right_gravity":true}],[23,21,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false,"right_gravity":true}]],"timestamp":1766432124,"lines":["----","","","when @lua/opencode/ui/streaming_renderer.lua renders a diff, only the first character, the + has the extmark. the rest of the line doesn't seem to have the highlight?","","here's an example from @tests/data/planning.json","","** edit** `diff-test.txt`","","```txt","-this is a string","+this is a great string","","```","","the - and the + are highlighted in the right color but none of the text is. any ideas?","","[lua/opencode/ui/streaming_renderer.lua](lua/opencode/ui/streaming_renderer.lua)","","[tests/data/planning.json](tests/data/planning.json)","","[lua/opencode/ui/session_formatter.lua](lua/opencode/ui/session_formatter.lua)","",""]} \ No newline at end of file diff --git a/tests/data/message-removal.expected.json b/tests/data/message-removal.expected.json index 39d34660..0ec635ea 100644 --- a/tests/data/message-removal.expected.json +++ b/tests/data/message-removal.expected.json @@ -1 +1 @@ -{"timestamp":1766431563,"extmarks":[[1,1,0,{"right_gravity":true,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-09 08:53:21)","OpencodeHint"],[" [msg_001]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false}],[2,2,0,{"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true}],[3,3,0,{"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true}],[4,4,0,{"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true}],[5,5,0,{"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true}],[6,6,0,{"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true}],[7,7,0,{"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true}],[8,8,0,{"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true}],[9,9,0,{"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true}],[10,12,0,{"right_gravity":true,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],["","OpencodeHint"],[" (2025-10-09 08:53:22)","OpencodeHint"],[" [msg_002]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false}],[11,21,0,{"right_gravity":true,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],["","OpencodeHint"],[" (2025-10-09 08:53:24)","OpencodeHint"],[" [msg_004]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false}]],"actions":[],"lines":["----","","","Message 1, Part 1","","Message 1, Part 2","","Message 1, Part 4","","Message 1, Part 5","","----","","","Message 2, Part 2","","Message 2, Part 3","","Message 2, Part 4","","----","","","Message 4, Part 1","","Message 4, Part 5","",""]} \ No newline at end of file +{"timestamp":1766432124,"actions":[],"extmarks":[[1,1,0,{"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-09 08:53:21)","OpencodeHint"],[" [msg_001]","OpencodeHint"]],"virt_text_hide":false,"ns_id":3,"right_gravity":true,"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10,"virt_text_repeat_linebreak":false}],[2,2,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_hide":false,"ns_id":3,"right_gravity":true,"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"virt_text_repeat_linebreak":true}],[3,3,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_hide":false,"ns_id":3,"right_gravity":true,"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"virt_text_repeat_linebreak":true}],[4,4,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_hide":false,"ns_id":3,"right_gravity":true,"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"virt_text_repeat_linebreak":true}],[5,5,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_hide":false,"ns_id":3,"right_gravity":true,"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"virt_text_repeat_linebreak":true}],[6,6,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_hide":false,"ns_id":3,"right_gravity":true,"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"virt_text_repeat_linebreak":true}],[7,7,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_hide":false,"ns_id":3,"right_gravity":true,"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"virt_text_repeat_linebreak":true}],[8,8,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_hide":false,"ns_id":3,"right_gravity":true,"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"virt_text_repeat_linebreak":true}],[9,9,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_hide":false,"ns_id":3,"right_gravity":true,"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"virt_text_repeat_linebreak":true}],[10,12,0,{"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],["","OpencodeHint"],[" (2025-10-09 08:53:22)","OpencodeHint"],[" [msg_002]","OpencodeHint"]],"virt_text_hide":false,"ns_id":3,"right_gravity":true,"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10,"virt_text_repeat_linebreak":false}],[11,21,0,{"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],["","OpencodeHint"],[" (2025-10-09 08:53:24)","OpencodeHint"],[" [msg_004]","OpencodeHint"]],"virt_text_hide":false,"ns_id":3,"right_gravity":true,"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10,"virt_text_repeat_linebreak":false}]],"lines":["----","","","Message 1, Part 1","","Message 1, Part 2","","Message 1, Part 4","","Message 1, Part 5","","----","","","Message 2, Part 2","","Message 2, Part 3","","Message 2, Part 4","","----","","","Message 4, Part 1","","Message 4, Part 5","",""]} \ No newline at end of file diff --git a/tests/data/multiple-messages-synthetic.expected.json b/tests/data/multiple-messages-synthetic.expected.json index 8e6e3e0a..bc2e1e89 100644 --- a/tests/data/multiple-messages-synthetic.expected.json +++ b/tests/data/multiple-messages-synthetic.expected.json @@ -1 +1 @@ -{"actions":[],"timestamp":1766431563,"lines":["----","","","Message 1","","----","","","Response 2 - Part 1","","Response 2 - Part 2","","Response 2 - Part 3","","Response 2 - Part 4 (late arrival)","","----","","","Message 3","","----","","","Response 4 - Part 1","","Response 4 - Part 2","","Response 4 - Part 3","","Response 4 - Part 4 (late arrival)","","----","","","Message 5","","----","","","Response 6 - Part 1","","Response 6 - Part 2","","Response 6 - Part 3","",""],"extmarks":[[1,1,0,{"ns_id":3,"virt_text_pos":"win_col","virt_text_hide":false,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2001-09-09 01:46:41)","OpencodeHint"],[" [msg_001]","OpencodeHint"]],"right_gravity":true}],[2,2,0,{"ns_id":3,"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true}],[3,3,0,{"ns_id":3,"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true}],[4,6,0,{"ns_id":3,"virt_text_pos":"win_col","virt_text_hide":false,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],["","OpencodeHint"],[" (2001-09-09 01:46:42)","OpencodeHint"],[" [msg_002]","OpencodeHint"]],"right_gravity":true}],[5,17,0,{"ns_id":3,"virt_text_pos":"win_col","virt_text_hide":false,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2001-09-09 01:46:43)","OpencodeHint"],[" [msg_003]","OpencodeHint"]],"right_gravity":true}],[6,18,0,{"ns_id":3,"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true}],[7,19,0,{"ns_id":3,"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true}],[8,22,0,{"ns_id":3,"virt_text_pos":"win_col","virt_text_hide":false,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],["","OpencodeHint"],[" (2001-09-09 01:46:44)","OpencodeHint"],[" [msg_004]","OpencodeHint"]],"right_gravity":true}],[9,33,0,{"ns_id":3,"virt_text_pos":"win_col","virt_text_hide":false,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2001-09-09 01:46:45)","OpencodeHint"],[" [msg_005]","OpencodeHint"]],"right_gravity":true}],[10,34,0,{"ns_id":3,"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true}],[11,35,0,{"ns_id":3,"virt_text_pos":"win_col","virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true}],[12,38,0,{"ns_id":3,"virt_text_pos":"win_col","virt_text_hide":false,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],["","OpencodeHint"],[" (2001-09-09 01:46:46)","OpencodeHint"],[" [msg_006]","OpencodeHint"]],"right_gravity":true}]]} \ No newline at end of file +{"timestamp":1766432125,"lines":["----","","","Message 1","","----","","","Response 2 - Part 1","","Response 2 - Part 2","","Response 2 - Part 3","","Response 2 - Part 4 (late arrival)","","----","","","Message 3","","----","","","Response 4 - Part 1","","Response 4 - Part 2","","Response 4 - Part 3","","Response 4 - Part 4 (late arrival)","","----","","","Message 5","","----","","","Response 6 - Part 1","","Response 6 - Part 2","","Response 6 - Part 3","",""],"extmarks":[[1,1,0,{"virt_text_repeat_linebreak":false,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2001-09-09 01:46:41)","OpencodeHint"],[" [msg_001]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10}],[2,2,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[3,3,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[4,6,0,{"virt_text_repeat_linebreak":false,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],["","OpencodeHint"],[" (2001-09-09 01:46:42)","OpencodeHint"],[" [msg_002]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10}],[5,17,0,{"virt_text_repeat_linebreak":false,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2001-09-09 01:46:43)","OpencodeHint"],[" [msg_003]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10}],[6,18,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[7,19,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[8,22,0,{"virt_text_repeat_linebreak":false,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],["","OpencodeHint"],[" (2001-09-09 01:46:44)","OpencodeHint"],[" [msg_004]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10}],[9,33,0,{"virt_text_repeat_linebreak":false,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2001-09-09 01:46:45)","OpencodeHint"],[" [msg_005]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10}],[10,34,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[11,35,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[12,38,0,{"virt_text_repeat_linebreak":false,"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],["","OpencodeHint"],[" (2001-09-09 01:46:46)","OpencodeHint"],[" [msg_006]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10}]],"actions":[]} \ No newline at end of file diff --git a/tests/data/multiple-messages.expected.json b/tests/data/multiple-messages.expected.json index 7943b83c..db95c812 100644 --- a/tests/data/multiple-messages.expected.json +++ b/tests/data/multiple-messages.expected.json @@ -1 +1 @@ -{"actions":[],"timestamp":1766431564,"extmarks":[[1,1,0,{"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"right_gravity":true,"priority":10,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-11-01 03:32:54)","OpencodeHint"],[" [msg_a3d79a71f001dkQYw23QnYYElB]","OpencodeHint"]],"virt_text_win_col":-3,"virt_text_pos":"win_col"}],[2,2,0,{"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"right_gravity":true,"priority":4096,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_win_col":-3,"virt_text_pos":"win_col"}],[3,3,0,{"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"right_gravity":true,"priority":4096,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_win_col":-3,"virt_text_pos":"win_col"}],[4,4,0,{"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"right_gravity":true,"priority":4096,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_win_col":-3,"virt_text_pos":"win_col"}],[5,5,0,{"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"right_gravity":true,"priority":4096,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_win_col":-3,"virt_text_pos":"win_col"}],[6,8,0,{"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"right_gravity":true,"priority":10,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" gpt-4.1","OpencodeHint"],[" (2025-11-01 03:32:54)","OpencodeHint"],[" [msg_a3d79a771002NY7n6a0vJlriLH]","OpencodeHint"]],"virt_text_win_col":-3,"virt_text_pos":"win_col"}],[7,26,0,{"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"right_gravity":true,"priority":10,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-11-01 03:32:55)","OpencodeHint"],[" [msg_a3d79aa5b0014RYY4My2AeTokd]","OpencodeHint"]],"virt_text_win_col":-3,"virt_text_pos":"win_col"}],[8,27,0,{"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"right_gravity":true,"priority":4096,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_win_col":-3,"virt_text_pos":"win_col"}],[9,28,0,{"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"right_gravity":true,"priority":4096,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_win_col":-3,"virt_text_pos":"win_col"}],[10,29,0,{"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"right_gravity":true,"priority":4096,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_win_col":-3,"virt_text_pos":"win_col"}],[11,30,0,{"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"right_gravity":true,"priority":4096,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_win_col":-3,"virt_text_pos":"win_col"}],[12,33,0,{"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"right_gravity":true,"priority":10,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" gpt-4.1","OpencodeHint"],[" (2025-11-01 03:32:56)","OpencodeHint"],[" [msg_a3d79ae610029QFKwb1uvSa4Lf]","OpencodeHint"]],"virt_text_win_col":-3,"virt_text_pos":"win_col"}]],"lines":["----","","","can you count to 10?","","[a-empty.txt](a-empty.txt)","","----","","","Sure! Here is a count from 1 to 10:","","1 ","2 ","3 ","4 ","5 ","6 ","7 ","8 ","9 ","10","","Let me know if you need anything else!","","----","","","can you say all of the letters?","","[a-empty.txt](a-empty.txt)","","----","","","Absolutely! Here are all the letters of the English alphabet:","","A ","B ","C ","D ","E ","F ","G ","H ","I ","J ","K ","L ","M ","N ","O ","P ","Q ","R ","S ","T ","U ","V ","W ","X ","Y ","Z","","If you need lowercase, here they are as well:","","a ","b ","c ","d ","e ","f ","g ","h ","i ","j ","k ","l ","m ","n ","o ","p ","q ","r ","s ","t ","u ","v ","w ","x ","y ","z","","Let me know if you need anything else!","",""]} \ No newline at end of file +{"actions":[],"lines":["----","","","can you count to 10?","","[a-empty.txt](a-empty.txt)","","----","","","Sure! Here is a count from 1 to 10:","","1 ","2 ","3 ","4 ","5 ","6 ","7 ","8 ","9 ","10","","Let me know if you need anything else!","","----","","","can you say all of the letters?","","[a-empty.txt](a-empty.txt)","","----","","","Absolutely! Here are all the letters of the English alphabet:","","A ","B ","C ","D ","E ","F ","G ","H ","I ","J ","K ","L ","M ","N ","O ","P ","Q ","R ","S ","T ","U ","V ","W ","X ","Y ","Z","","If you need lowercase, here they are as well:","","a ","b ","c ","d ","e ","f ","g ","h ","i ","j ","k ","l ","m ","n ","o ","p ","q ","r ","s ","t ","u ","v ","w ","x ","y ","z","","Let me know if you need anything else!","",""],"extmarks":[[1,1,0,{"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_win_col":-3,"priority":10,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-11-01 03:32:54)","OpencodeHint"],[" [msg_a3d79a71f001dkQYw23QnYYElB]","OpencodeHint"]],"virt_text_repeat_linebreak":false,"virt_text_pos":"win_col"}],[2,2,0,{"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_win_col":-3,"priority":4096,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col"}],[3,3,0,{"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_win_col":-3,"priority":4096,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col"}],[4,4,0,{"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_win_col":-3,"priority":4096,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col"}],[5,5,0,{"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_win_col":-3,"priority":4096,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col"}],[6,8,0,{"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_win_col":-3,"priority":10,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" gpt-4.1","OpencodeHint"],[" (2025-11-01 03:32:54)","OpencodeHint"],[" [msg_a3d79a771002NY7n6a0vJlriLH]","OpencodeHint"]],"virt_text_repeat_linebreak":false,"virt_text_pos":"win_col"}],[7,26,0,{"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_win_col":-3,"priority":10,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-11-01 03:32:55)","OpencodeHint"],[" [msg_a3d79aa5b0014RYY4My2AeTokd]","OpencodeHint"]],"virt_text_repeat_linebreak":false,"virt_text_pos":"win_col"}],[8,27,0,{"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_win_col":-3,"priority":4096,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col"}],[9,28,0,{"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_win_col":-3,"priority":4096,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col"}],[10,29,0,{"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_win_col":-3,"priority":4096,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col"}],[11,30,0,{"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_win_col":-3,"priority":4096,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col"}],[12,33,0,{"virt_text_hide":false,"right_gravity":true,"ns_id":3,"virt_text_win_col":-3,"priority":10,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" gpt-4.1","OpencodeHint"],[" (2025-11-01 03:32:56)","OpencodeHint"],[" [msg_a3d79ae610029QFKwb1uvSa4Lf]","OpencodeHint"]],"virt_text_repeat_linebreak":false,"virt_text_pos":"win_col"}]],"timestamp":1766432125} \ No newline at end of file diff --git a/tests/data/perf.expected.json b/tests/data/perf.expected.json index 0d0281ef..2a415fe0 100644 --- a/tests/data/perf.expected.json +++ b/tests/data/perf.expected.json @@ -1 +1 @@ -{"actions":[],"timestamp":1766431564,"lines":["----","","","I just want to test the markdown rendering, please write as long session with codeblocksto","","[lua/opencode/ui/output_window.lua](lua/opencode/ui/output_window.lua)","","----","","","Here's a long markdown-rich session with many fenced code blocks to help test rendering. I include the file you provided plus a variety of smaller snippets in different languages and formats.","","**File Contents**","- `lua/opencode/ui/output_window.lua:1`","","```lua","-- lua/opencode/ui/output_window.lua","local state = require('opencode.state')","local config = require('opencode.config')","","local M = {}","M.namespace = vim.api.nvim_create_namespace('opencode_output')","","function M.create_buf()"," local output_buf = vim.api.nvim_create_buf(false, true)"," vim.api.nvim_set_option_value('filetype', 'opencode_output', { buf = output_buf })"," return output_buf","end","","function M._build_output_win_config()"," return {"," relative = 'editor',"," width = config.ui.window_width or 80,"," row = 2,"," col = 2,"," style = 'minimal',"," border = 'rounded',"," zindex = 40,"," }","end","","function M.mounted(windows)"," windows = windows or state.windows"," if"," not state.windows"," or not state.windows.output_buf"," or not state.windows.output_win"," or not vim.api.nvim_win_is_valid(windows.output_win)"," then"," return false"," end",""," return true","end","","function M.setup(windows)"," vim.api.nvim_set_option_value('winhighlight', config.ui.window_highlight, { win = windows.output_win })"," vim.api.nvim_set_option_value('wrap', true, { win = windows.output_win })"," vim.api.nvim_set_option_value('number', false, { win = windows.output_win })"," vim.api.nvim_set_option_value('relativenumber', false, { win = windows.output_win })"," vim.api.nvim_set_option_value('modifiable', false, { buf = windows.output_buf })"," vim.api.nvim_set_option_value('buftype', 'nofile', { buf = windows.output_buf })"," vim.api.nvim_set_option_value('swapfile', false, { buf = windows.output_buf })"," vim.api.nvim_set_option_value('winfixbuf', true, { win = windows.output_win })"," vim.api.nvim_set_option_value('winfixheight', true, { win = windows.output_win })"," vim.api.nvim_set_option_value('winfixwidth', true, { win = windows.output_win })"," vim.api.nvim_set_option_value('signcolumn', 'yes', { scope = 'local', win = windows.output_win })"," vim.api.nvim_set_option_value('list', false, { scope = 'local', win = windows.output_win })",""," M.update_dimensions(windows)"," M.setup_keymaps(windows)","end","","function M.update_dimensions(windows)"," local total_width = vim.api.nvim_get_option_value('columns', {})"," local width = math.floor(total_width * config.ui.window_width)",""," vim.api.nvim_win_set_config(windows.output_win, { width = width })","end","","function M.get_buf_line_count()"," if not M.mounted() then"," return 0"," end",""," return vim.api.nvim_buf_line_count(state.windows.output_buf)","end","","---Set the output buffer contents","---@param lines string[] The lines to set","---@param start_line? integer The starting line to set, defaults to 0","---@param end_line? integer The last line to set, defaults to -1","function M.set_lines(lines, start_line, end_line)"," if not M.mounted() then"," return"," end",""," start_line = start_line or 0"," end_line = end_line or -1",""," local windows = state.windows"," if not windows or not windows.output_buf then"," return"," end",""," vim.api.nvim_set_option_value('modifiable', true, { buf = windows.output_buf })"," vim.api.nvim_buf_set_lines(windows.output_buf, start_line, end_line, false, lines)"," vim.api.nvim_set_option_value('modifiable', false, { buf = windows.output_buf })","end","","---Clear output buf extmarks","---@param start_line? integer Line to start clearing, defaults 0","---@param end_line? integer Line to to clear until, defaults to -1","function M.clear_extmarks(start_line, end_line)"," if not M.mounted() or not state.windows.output_buf then"," return"," end",""," start_line = start_line or 0"," end_line = end_line or -1",""," vim.api.nvim_buf_clear_namespace(state.windows.output_buf, M.namespace, start_line, end_line)","end","","---Apply extmarks to the output buffer","---@param extmarks table Extmarks indexed by line","---@param line_offset? integer Line offset to apply to extmarks, defaults to 0","function M.set_extmarks(extmarks, line_offset)"," if not M.mounted() or not extmarks or type(extmarks) ~= 'table' then"," return"," end",""," line_offset = line_offset or 0",""," local output_buf = state.windows.output_buf",""," for line_idx, marks in pairs(extmarks) do"," for _, mark in ipairs(marks) do"," local actual_mark = type(mark) == 'function' and mark() or mark"," local target_line = line_offset + line_idx"," if actual_mark.end_row then"," actual_mark.end_row = actual_mark.end_row + line_offset"," end"," local start_col = actual_mark.start_col"," if actual_mark.start_col then"," actual_mark.start_col = nil"," end"," pcall(vim.api.nvim_buf_set_extmark, output_buf, M.namespace, target_line, start_col or 0, actual_mark)"," end"," end","end","","function M.focus_output(should_stop_insert)"," if should_stop_insert then"," vim.cmd('stopinsert')"," end"," vim.api.nvim_set_current_win(state.windows.output_win)","end","","function M.close()"," if M.mounted() then"," return"," end"," pcall(vim.api.nvim_win_close, state.windows.output_win, true)"," pcall(vim.api.nvim_buf_delete, state.windows.output_buf, { force = true })","end","","function M.setup_keymaps(windows)"," local keymap = require('opencode.keymap')"," keymap.setup_window_keymaps(config.keymap.output_window, windows.output_buf)","end","","function M.setup_autocmds(windows, group)"," vim.api.nvim_create_autocmd('WinEnter', {"," group = group,"," buffer = windows.output_buf,"," callback = function()"," vim.cmd('stopinsert')"," state.last_focused_opencode_window = 'output'"," require('opencode.ui.input_window').refresh_placeholder(state.windows)"," end,"," })",""," vim.api.nvim_create_autocmd('BufEnter', {"," group = group,"," buffer = windows.output_buf,"," callback = function()"," vim.cmd('stopinsert')"," state.last_focused_opencode_window = 'output'"," require('opencode.ui.input_window').refresh_placeholder(state.windows)"," end,"," })",""," state.subscribe('current_permission', function()"," require('opencode.keymap').toggle_permission_keymap(windows.output_buf)"," end)","end","","function M.clear()"," M.set_lines({})"," M.clear_extmarks()","end","","return M","```","","**Shell / Commands**","","```bash","# show project root and run tests","pwd","ls -la","./run_tests.sh","```","","**Short Lua examples**","","```lua","-- Print buffer line count if mounted","local out = require('opencode.ui.output_window')","if out.mounted() then"," print('Lines:', out.get_buf_line_count())","else"," print('Output window not mounted.')","end","```","","**JSON sample**","","```json","{"," \"name\": \"opencode.nvim\","," \"version\": \"0.0.0\","," \"tests\": {"," \"unit\": 128,"," \"manual\": 12"," }","}","```","","**YAML sample**","","```yaml","ui:"," window_width: 0.5"," window_highlight: \"Normal:NormalFloat\"","keymap:"," output_window:"," close: \"\""," focus: \"\"","```","","**Unified Diff example**","","```diff","*** before/lua/opencode/ui/output_window.lua","@@","- vim.api.nvim_set_option_value('winhighlight', config.ui.window_highlight, { win = windows.output_win })","+ vim.api.nvim_set_option_value('winhighlight', config.ui.window_highlight or '', { win = windows.output_win })","```","","**Python snippet**","","```python","# small helper to format lines","def format_lines(lines):"," return [line.rstrip() for line in lines if line is not None]","```","","**SQL example**","","```sql","-- List recent sessions","SELECT id, created_at, user_id","FROM sessions","WHERE created_at > now() - interval '7 days'","ORDER BY created_at DESC","LIMIT 10;","```","","**HTML fragment**","","```html","",""," Render Test"," ","
-- sample Lua inside HTML
"," ","","```","","**Indented (classic) code block**",""," This is an indented code block."," It should render as preformatted text without language highlighting.","","**Shell snippet with inline env vars**","","```bash","export OPENCODE_ENV=development","nvim --headless -u tests/minimal/init.lua -c \"lua require('plenary.test_harness').test_directory('./tests/unit', {minimal_init = './tests/minimal/init.lua'})\"","```","","**Mixed inline code examples**","- Use backticks for commands: `./run_tests.sh`","- File path with start line: `lua/opencode/ui/output_window.lua:1`","- API call: `vim.api.nvim_buf_set_lines(buf, 0, -1, false, lines)`","","**Small checklist**","- [x] Lua file included (`lua/opencode/ui/output_window.lua:1`)","- [x] Multiple fenced code blocks","- [x] Several languages: Lua, Bash, JSON, YAML, Python, SQL, HTML, Diff","","If you want more variations (many short blocks, nested lists, tables, or extremely long blocks), tell me which formats or languages to expand and I’ll produce them.","",""],"extmarks":[[1,1,0,{"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-24 19:32:00)","OpencodeHint"],[" [msg_a17b4dc4c001x19oFZANB8CsEB]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10,"virt_text_repeat_linebreak":false,"right_gravity":true,"virt_text_hide":false,"ns_id":3}],[2,2,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"virt_text_hide":false,"ns_id":3}],[3,3,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"virt_text_hide":false,"ns_id":3}],[4,4,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"virt_text_hide":false,"ns_id":3}],[5,5,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"virt_text_hide":false,"ns_id":3}],[6,8,0,{"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-24 19:32:01)","OpencodeHint"],[" [msg_a17b4e166001vCnLczdZXvqLL6]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10,"virt_text_repeat_linebreak":false,"right_gravity":true,"virt_text_hide":false,"ns_id":3}]]} \ No newline at end of file +{"actions":[],"extmarks":[[1,1,0,{"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-24 19:32:00)","OpencodeHint"],[" [msg_a17b4dc4c001x19oFZANB8CsEB]","OpencodeHint"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"ns_id":3}],[2,2,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"ns_id":3}],[3,3,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"ns_id":3}],[4,4,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"ns_id":3}],[5,5,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"ns_id":3}],[6,8,0,{"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-24 19:32:01)","OpencodeHint"],[" [msg_a17b4e166001vCnLczdZXvqLL6]","OpencodeHint"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"ns_id":3}]],"timestamp":1766432125,"lines":["----","","","I just want to test the markdown rendering, please write as long session with codeblocksto","","[lua/opencode/ui/output_window.lua](lua/opencode/ui/output_window.lua)","","----","","","Here's a long markdown-rich session with many fenced code blocks to help test rendering. I include the file you provided plus a variety of smaller snippets in different languages and formats.","","**File Contents**","- `lua/opencode/ui/output_window.lua:1`","","```lua","-- lua/opencode/ui/output_window.lua","local state = require('opencode.state')","local config = require('opencode.config')","","local M = {}","M.namespace = vim.api.nvim_create_namespace('opencode_output')","","function M.create_buf()"," local output_buf = vim.api.nvim_create_buf(false, true)"," vim.api.nvim_set_option_value('filetype', 'opencode_output', { buf = output_buf })"," return output_buf","end","","function M._build_output_win_config()"," return {"," relative = 'editor',"," width = config.ui.window_width or 80,"," row = 2,"," col = 2,"," style = 'minimal',"," border = 'rounded',"," zindex = 40,"," }","end","","function M.mounted(windows)"," windows = windows or state.windows"," if"," not state.windows"," or not state.windows.output_buf"," or not state.windows.output_win"," or not vim.api.nvim_win_is_valid(windows.output_win)"," then"," return false"," end",""," return true","end","","function M.setup(windows)"," vim.api.nvim_set_option_value('winhighlight', config.ui.window_highlight, { win = windows.output_win })"," vim.api.nvim_set_option_value('wrap', true, { win = windows.output_win })"," vim.api.nvim_set_option_value('number', false, { win = windows.output_win })"," vim.api.nvim_set_option_value('relativenumber', false, { win = windows.output_win })"," vim.api.nvim_set_option_value('modifiable', false, { buf = windows.output_buf })"," vim.api.nvim_set_option_value('buftype', 'nofile', { buf = windows.output_buf })"," vim.api.nvim_set_option_value('swapfile', false, { buf = windows.output_buf })"," vim.api.nvim_set_option_value('winfixbuf', true, { win = windows.output_win })"," vim.api.nvim_set_option_value('winfixheight', true, { win = windows.output_win })"," vim.api.nvim_set_option_value('winfixwidth', true, { win = windows.output_win })"," vim.api.nvim_set_option_value('signcolumn', 'yes', { scope = 'local', win = windows.output_win })"," vim.api.nvim_set_option_value('list', false, { scope = 'local', win = windows.output_win })",""," M.update_dimensions(windows)"," M.setup_keymaps(windows)","end","","function M.update_dimensions(windows)"," local total_width = vim.api.nvim_get_option_value('columns', {})"," local width = math.floor(total_width * config.ui.window_width)",""," vim.api.nvim_win_set_config(windows.output_win, { width = width })","end","","function M.get_buf_line_count()"," if not M.mounted() then"," return 0"," end",""," return vim.api.nvim_buf_line_count(state.windows.output_buf)","end","","---Set the output buffer contents","---@param lines string[] The lines to set","---@param start_line? integer The starting line to set, defaults to 0","---@param end_line? integer The last line to set, defaults to -1","function M.set_lines(lines, start_line, end_line)"," if not M.mounted() then"," return"," end",""," start_line = start_line or 0"," end_line = end_line or -1",""," local windows = state.windows"," if not windows or not windows.output_buf then"," return"," end",""," vim.api.nvim_set_option_value('modifiable', true, { buf = windows.output_buf })"," vim.api.nvim_buf_set_lines(windows.output_buf, start_line, end_line, false, lines)"," vim.api.nvim_set_option_value('modifiable', false, { buf = windows.output_buf })","end","","---Clear output buf extmarks","---@param start_line? integer Line to start clearing, defaults 0","---@param end_line? integer Line to to clear until, defaults to -1","function M.clear_extmarks(start_line, end_line)"," if not M.mounted() or not state.windows.output_buf then"," return"," end",""," start_line = start_line or 0"," end_line = end_line or -1",""," vim.api.nvim_buf_clear_namespace(state.windows.output_buf, M.namespace, start_line, end_line)","end","","---Apply extmarks to the output buffer","---@param extmarks table Extmarks indexed by line","---@param line_offset? integer Line offset to apply to extmarks, defaults to 0","function M.set_extmarks(extmarks, line_offset)"," if not M.mounted() or not extmarks or type(extmarks) ~= 'table' then"," return"," end",""," line_offset = line_offset or 0",""," local output_buf = state.windows.output_buf",""," for line_idx, marks in pairs(extmarks) do"," for _, mark in ipairs(marks) do"," local actual_mark = type(mark) == 'function' and mark() or mark"," local target_line = line_offset + line_idx"," if actual_mark.end_row then"," actual_mark.end_row = actual_mark.end_row + line_offset"," end"," local start_col = actual_mark.start_col"," if actual_mark.start_col then"," actual_mark.start_col = nil"," end"," pcall(vim.api.nvim_buf_set_extmark, output_buf, M.namespace, target_line, start_col or 0, actual_mark)"," end"," end","end","","function M.focus_output(should_stop_insert)"," if should_stop_insert then"," vim.cmd('stopinsert')"," end"," vim.api.nvim_set_current_win(state.windows.output_win)","end","","function M.close()"," if M.mounted() then"," return"," end"," pcall(vim.api.nvim_win_close, state.windows.output_win, true)"," pcall(vim.api.nvim_buf_delete, state.windows.output_buf, { force = true })","end","","function M.setup_keymaps(windows)"," local keymap = require('opencode.keymap')"," keymap.setup_window_keymaps(config.keymap.output_window, windows.output_buf)","end","","function M.setup_autocmds(windows, group)"," vim.api.nvim_create_autocmd('WinEnter', {"," group = group,"," buffer = windows.output_buf,"," callback = function()"," vim.cmd('stopinsert')"," state.last_focused_opencode_window = 'output'"," require('opencode.ui.input_window').refresh_placeholder(state.windows)"," end,"," })",""," vim.api.nvim_create_autocmd('BufEnter', {"," group = group,"," buffer = windows.output_buf,"," callback = function()"," vim.cmd('stopinsert')"," state.last_focused_opencode_window = 'output'"," require('opencode.ui.input_window').refresh_placeholder(state.windows)"," end,"," })",""," state.subscribe('current_permission', function()"," require('opencode.keymap').toggle_permission_keymap(windows.output_buf)"," end)","end","","function M.clear()"," M.set_lines({})"," M.clear_extmarks()","end","","return M","```","","**Shell / Commands**","","```bash","# show project root and run tests","pwd","ls -la","./run_tests.sh","```","","**Short Lua examples**","","```lua","-- Print buffer line count if mounted","local out = require('opencode.ui.output_window')","if out.mounted() then"," print('Lines:', out.get_buf_line_count())","else"," print('Output window not mounted.')","end","```","","**JSON sample**","","```json","{"," \"name\": \"opencode.nvim\","," \"version\": \"0.0.0\","," \"tests\": {"," \"unit\": 128,"," \"manual\": 12"," }","}","```","","**YAML sample**","","```yaml","ui:"," window_width: 0.5"," window_highlight: \"Normal:NormalFloat\"","keymap:"," output_window:"," close: \"\""," focus: \"\"","```","","**Unified Diff example**","","```diff","*** before/lua/opencode/ui/output_window.lua","@@","- vim.api.nvim_set_option_value('winhighlight', config.ui.window_highlight, { win = windows.output_win })","+ vim.api.nvim_set_option_value('winhighlight', config.ui.window_highlight or '', { win = windows.output_win })","```","","**Python snippet**","","```python","# small helper to format lines","def format_lines(lines):"," return [line.rstrip() for line in lines if line is not None]","```","","**SQL example**","","```sql","-- List recent sessions","SELECT id, created_at, user_id","FROM sessions","WHERE created_at > now() - interval '7 days'","ORDER BY created_at DESC","LIMIT 10;","```","","**HTML fragment**","","```html","",""," Render Test"," ","
-- sample Lua inside HTML
"," ","","```","","**Indented (classic) code block**",""," This is an indented code block."," It should render as preformatted text without language highlighting.","","**Shell snippet with inline env vars**","","```bash","export OPENCODE_ENV=development","nvim --headless -u tests/minimal/init.lua -c \"lua require('plenary.test_harness').test_directory('./tests/unit', {minimal_init = './tests/minimal/init.lua'})\"","```","","**Mixed inline code examples**","- Use backticks for commands: `./run_tests.sh`","- File path with start line: `lua/opencode/ui/output_window.lua:1`","- API call: `vim.api.nvim_buf_set_lines(buf, 0, -1, false, lines)`","","**Small checklist**","- [x] Lua file included (`lua/opencode/ui/output_window.lua:1`)","- [x] Multiple fenced code blocks","- [x] Several languages: Lua, Bash, JSON, YAML, Python, SQL, HTML, Diff","","If you want more variations (many short blocks, nested lists, tables, or extremely long blocks), tell me which formats or languages to expand and I’ll produce them.","",""]} \ No newline at end of file diff --git a/tests/data/permission-denied.expected.json b/tests/data/permission-denied.expected.json index 5330afc9..df2c7efd 100644 --- a/tests/data/permission-denied.expected.json +++ b/tests/data/permission-denied.expected.json @@ -1 +1 @@ -{"actions":[],"extmarks":[[1,1,0,{"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-12 14:56:20)","OpencodeHint"],[" [msg_9d8ec2a46001D1TtyCg3aR7o97]","OpencodeHint"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"ns_id":3}],[2,2,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"ns_id":3}],[3,3,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"ns_id":3}],[4,4,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"ns_id":3}],[5,5,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-3,"ns_id":3}],[6,8,0,{"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 14:56:20)","OpencodeHint"],[" [msg_9d8ec2a9f001uOK35RyLnct2b1]","OpencodeHint"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"ns_id":3}],[7,18,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[8,19,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[9,20,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[10,21,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[11,24,0,{"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 14:56:27)","OpencodeHint"],[" [msg_9d8ec47a8001Fd2VJ7LRBrj8AF]","OpencodeHint"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"ns_id":3}],[12,30,0,{"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 14:56:30)","OpencodeHint"],[" [msg_9d8ec5310001qTVklk5oFvS00E]","OpencodeHint"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"ns_id":3}],[13,35,0,{"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 14:56:33)","OpencodeHint"],[" [msg_9d8ec5d1e001Umy9DbvgL0mk76]","OpencodeHint"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"ns_id":3}],[14,41,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[15,42,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[16,43,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[17,44,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[18,45,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[19,46,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[20,47,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[21,48,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[22,49,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[23,50,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[24,51,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[25,52,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[26,53,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[27,54,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[28,55,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[29,56,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[30,57,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[31,58,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[32,59,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[33,60,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[34,61,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[35,62,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[36,63,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[37,64,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[38,65,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[39,66,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[40,67,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[41,68,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[42,69,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[43,70,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[44,71,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[45,72,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[46,73,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[47,74,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[48,75,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[49,76,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[50,77,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[51,78,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[52,79,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[53,80,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[54,81,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[55,82,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[56,83,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[57,84,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[58,85,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[59,86,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[60,87,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[61,90,0,{"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 14:56:38)","OpencodeHint"],[" [msg_9d8ec708e001lrLTmgiWPbSYeN]","OpencodeHint"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"ns_id":3}],[62,97,0,{"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 14:56:41)","OpencodeHint"],[" [msg_9d8ec7fa7001zpzhgmQUAz1uIN]","OpencodeHint"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"ns_id":3}],[63,101,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[64,102,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[65,103,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[66,104,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[67,105,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[68,106,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[69,109,0,{"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 14:56:46)","OpencodeHint"],[" [msg_9d8ec9105001k6kWv2IJB5sIEu]","OpencodeHint"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"ns_id":3}],[70,111,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[71,112,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[72,113,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[73,114,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[74,115,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[75,116,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[76,117,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[77,118,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[78,119,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[79,120,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[80,121,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[81,122,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[82,123,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[83,124,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[84,125,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[85,126,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[86,127,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[87,128,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[88,129,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[89,130,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[90,131,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[91,132,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[92,135,0,{"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 14:56:49)","OpencodeHint"],[" [msg_9d8ec9ce4001CV2dSm31xky1f5]","OpencodeHint"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"ns_id":3}],[93,139,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[94,140,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[95,141,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[96,142,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[97,143,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[98,144,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[99,145,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[100,146,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[101,149,0,{"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 14:56:52)","OpencodeHint"],[" [msg_9d8ecaa9f001scSNwtORoGqKra]","OpencodeHint"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"ns_id":3}],[102,153,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[103,154,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[104,155,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[105,156,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[106,157,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[107,158,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[108,161,0,{"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 14:56:55)","OpencodeHint"],[" [msg_9d8ecb6b8001LyTb1Pp75AENAa]","OpencodeHint"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"ns_id":3}],[109,168,0,{"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 14:56:59)","OpencodeHint"],[" [msg_9d8ecc3b20019L3zs8pytlmUHc]","OpencodeHint"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_win_col":-3,"ns_id":3}],[110,178,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[111,179,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[112,180,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[113,181,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[114,182,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[115,183,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[116,184,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[117,185,0,{"end_row":186,"hl_eol":true,"right_gravity":true,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"ns_id":3,"end_col":0,"end_right_gravity":false,"virt_text_pos":"overlay","virt_text":[["-","OpencodeDiffDelete"]],"priority":5000,"hl_group":"OpencodeDiffDelete"}],[118,185,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[119,186,0,{"end_row":187,"hl_eol":true,"right_gravity":true,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"ns_id":3,"end_col":0,"end_right_gravity":false,"virt_text_pos":"overlay","virt_text":[["+","OpencodeDiffAdd"]],"priority":5000,"hl_group":"OpencodeDiffAdd"}],[120,186,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[121,187,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[122,188,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[123,189,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[124,190,0,{"end_row":191,"hl_eol":true,"right_gravity":true,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"ns_id":3,"end_col":0,"end_right_gravity":false,"virt_text_pos":"overlay","virt_text":[["-","OpencodeDiffDelete"]],"priority":5000,"hl_group":"OpencodeDiffDelete"}],[125,190,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[126,191,0,{"end_row":192,"hl_eol":true,"right_gravity":true,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"ns_id":3,"end_col":0,"end_right_gravity":false,"virt_text_pos":"overlay","virt_text":[["-","OpencodeDiffDelete"]],"priority":5000,"hl_group":"OpencodeDiffDelete"}],[127,191,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[128,192,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[129,193,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[130,194,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[131,195,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[132,196,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[133,197,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[134,198,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[135,199,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[136,200,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[137,201,0,{"end_row":202,"hl_eol":true,"right_gravity":true,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"ns_id":3,"end_col":0,"end_right_gravity":false,"virt_text_pos":"overlay","virt_text":[["+","OpencodeDiffAdd"]],"priority":5000,"hl_group":"OpencodeDiffAdd"}],[138,201,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[139,202,0,{"end_row":203,"hl_eol":true,"right_gravity":true,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"ns_id":3,"end_col":0,"end_right_gravity":false,"virt_text_pos":"overlay","virt_text":[["+","OpencodeDiffAdd"]],"priority":5000,"hl_group":"OpencodeDiffAdd"}],[140,202,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[141,203,0,{"end_row":204,"hl_eol":true,"right_gravity":true,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"ns_id":3,"end_col":0,"end_right_gravity":false,"virt_text_pos":"overlay","virt_text":[["+","OpencodeDiffAdd"]],"priority":5000,"hl_group":"OpencodeDiffAdd"}],[142,203,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[143,204,0,{"end_row":205,"hl_eol":true,"right_gravity":true,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"ns_id":3,"end_col":0,"end_right_gravity":false,"virt_text_pos":"overlay","virt_text":[["+","OpencodeDiffAdd"]],"priority":5000,"hl_group":"OpencodeDiffAdd"}],[144,204,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[145,205,0,{"end_row":206,"hl_eol":true,"right_gravity":true,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"ns_id":3,"end_col":0,"end_right_gravity":false,"virt_text_pos":"overlay","virt_text":[["+","OpencodeDiffAdd"]],"priority":5000,"hl_group":"OpencodeDiffAdd"}],[146,205,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[147,206,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[148,207,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[149,208,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[150,209,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[151,210,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[152,211,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[153,212,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}],[154,213,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"virt_text_hide":false,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_win_col":-1,"ns_id":3}]],"lines":["----","","","the type for _calculate_revert_stats is wrong, i think? because it comes from state.messages. can you fix?","","[lua/opencode/ui/session_formatter.lua](lua/opencode/ui/session_formatter.lua)","","----","","","Looking at the code, I can see the issue. The function `_calculate_revert_stats` is called at line 64, but there's a type annotation issue at line 99 and line 228.","","At line 228, the code accesses `msg.info.role`, but the parameter is typed as `messages` which is `Message[]`. The `Message` type likely has a nested `info` structure, which is correct.","","However, line 99 has an outdated type annotation that references a `message` parameter (singular) when the commented-out function actually doesn't exist anymore.","","Let me check the Message type structure and fix the type annotation:","","** grep** `*.lua` `---@class Message`","Found `0` matches","","> [!ERROR] Error: ripgrep failed: rg: unrecognized flag ---@class Message","","----","","","** grep** `*.lua` `@class Message`","Found `4` matches","","----","","","** read** `types.lua`","","----","","","Now I can see the issue clearly. The `Message` type doesn't have an `info` field at the root - it has `role` directly. But in the `_calculate_revert_stats` function at line 228, it's accessing `msg.info.role`. ","","Let me check how messages are actually structured in the state:","","** run** `Check how msg.info is accessed in the file`","","`````bash","> cd /Users/cam/Dev/neovim-dev/opencode.nvim && rg \"msg\\.info\\.\" -A 2 -B 2 lua/opencode/ui/session_formatter.lua | head -40",""," state.current_message = msg",""," if not state.current_model and msg.info.providerID and msg.info.providerID ~= '' then"," state.current_model = msg.info.providerID .. '/' .. msg.info.modelID"," end",""," if msg.info.tokens and msg.info.tokens.input > 0 then"," state.tokens_count = msg.info.tokens.input"," + msg.info.tokens.output"," + msg.info.tokens.cache.read"," + msg.info.tokens.cache.write"," end",""," if msg.info.cost and type(msg.info.cost) == 'number' then"," state.cost = msg.info.cost"," end",""," if session.revert and session.revert.messageID == msg.info.id then"," ---@type {messages: number, tool_calls: number, files: table}"," local revert_stats = M._calculate_revert_stats(state.messages, i, session.revert)","--",""," for j, part in ipairs(msg.parts or {}) do"," M._current = { msg_idx = i, part_idx = j, role = msg.info.role, type = part.type, snapshot = part.snapshot }"," M.output:add_metadata(M._current)",""," if part.type == 'text' and part.text then"," if msg.info.role == 'user' and part.synthetic ~= true then"," state.last_user_message = msg"," M._format_user_message(vim.trim(part.text), msg)"," elseif msg.info.role == 'assistant' then"," M._format_assistant_message(vim.trim(part.text))"," end","--"," end",""," if msg.info.error and msg.info.error ~= '' then"," M._format_error(msg)"," end","--","","`````","","----","","","I see - the messages in `state.messages` actually have an `info` field. The type definition in `types.lua` might be incomplete or different. Let me check the actual structure by looking at how messages come from the API:","","** read** `types.lua`","","----","","","The `Message` type definition doesn't match the actual structure used in the code. Looking at the usage, messages have an `info` field that contains the metadata. Let me search for a different type definition:","","** run** `Check info field usage patterns`","","`````bash","> cd /Users/cam/Dev/neovim-dev/opencode.nvim && rg \"info.*providerID\\|info.*role\\|info.*id\" lua/opencode/ui/session_formatter.lua | head -10","","`````","","----","","","** run** `Find all info field accesses`","","`````bash","> cd /Users/cam/Dev/neovim-dev/opencode.nvim && rg \"\\.info\\.\" lua/opencode/ui/session_formatter.lua | head -15",""," if not state.current_model and msg.info.providerID and msg.info.providerID ~= '' then"," state.current_model = msg.info.providerID .. '/' .. msg.info.modelID"," if msg.info.tokens and msg.info.tokens.input > 0 then"," state.tokens_count = msg.info.tokens.input"," + msg.info.tokens.output"," + msg.info.tokens.cache.read"," + msg.info.tokens.cache.write"," if msg.info.cost and type(msg.info.cost) == 'number' then"," state.cost = msg.info.cost"," if session.revert and session.revert.messageID == msg.info.id then"," M._current = { msg_idx = i, part_idx = j, role = msg.info.role, type = part.type, snapshot = part.snapshot }"," if msg.info.role == 'user' and part.synthetic ~= true then"," elseif msg.info.role == 'assistant' then"," if msg.info.error and msg.info.error ~= '' then"," if msg.info.role == 'user' then","","`````","","----","","","The actual structure has `msg.info` wrapping the message metadata. Let me look for an `info` type or see how the structure is defined:","","** run** `Search for Info type definitions`","","`````bash","> cd /Users/cam/Dev/neovim-dev/opencode.nvim && rg \"@class.*Info|@field info\" lua/opencode/types.lua","","---@class SessionRevertInfo","","`````","","----","","","Let me check the actual message structure by looking at the session module:","","** run** `Check how info is constructed`","","`````bash","> cd /Users/cam/Dev/neovim-dev/opencode.nvim && rg \"info\\s*=\" lua/opencode/session.lua | head -10","","`````","","----","","","Let me look at how messages are actually shaped in practice by checking test data:","","** read** `simple-session.json`","","----","","","Perfect! Now I can see the actual structure. Messages have an `info` field that contains metadata like `id`, `role`, `sessionID`, etc. The `Message` type definition in `types.lua` is incomplete - it's missing the `info` field wrapper.","","Now I understand the issue. Looking back at the error:","- Line 99: References undefined param `message` (this is in commented-out code)","- Line 228: References `msg.info` field which isn't in the type definition","","The fix is to update the `Message` type to include the `info` field. Let me check the complete structure:","","** edit** `types.lua`","","`````lua"," ---@field range? { from: number, to: number } Optional range for the action"," "," ---@alias OutputExtmark vim.api.keyset.set_extmark|fun():vim.api.keyset.set_extmark"," "," ---@class Message"," ---@class MessageInfo"," ---@field id string Unique message identifier"," ---@field sessionID string Unique session identifier"," ---@field tokens MessageTokenCount Token usage statistics"," ---@field parts MessagePart[] Array of message parts"," ---@field system string[] System messages"," ---@field time { created: number, completed: number } Timestamps"," ---@field cost number Cost of the message"," ---@field path { cwd: string, root: string } Working directory paths"," ---@field modelID string Model identifier","@@ -253,8 +251,13 @@"," ---@field system_role string|nil Role defined in system messages"," ---@field mode string|nil Agent or mode identifier"," ---@field error table"," "," ---@class Message"," ---@field info MessageInfo Message metadata"," ---@field parts MessagePart[] Array of message parts"," ---@field system string[] System messages"," "," ---@class RestorePoint"," ---@field id string Unique restore point identifier"," ---@field from_snapshot_id string|nil ID of the snapshot this restore point is based on"," ---@field files string[] List of file paths included in the restore point","","`````","","> [!ERROR] Error: The user rejected permission to use this specific tool call. You may try again with different parameters.","",""],"timestamp":1766431564} \ No newline at end of file +{"actions":[],"timestamp":1766432125,"extmarks":[[1,1,0,{"ns_id":3,"priority":10,"right_gravity":true,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-12 14:56:20)","OpencodeHint"],[" [msg_9d8ec2a46001D1TtyCg3aR7o97]","OpencodeHint"]],"virt_text_win_col":-3,"virt_text_repeat_linebreak":false,"virt_text_hide":false,"virt_text_pos":"win_col"}],[2,2,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_win_col":-3,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[3,3,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_win_col":-3,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[4,4,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_win_col":-3,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[5,5,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_win_col":-3,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[6,8,0,{"ns_id":3,"priority":10,"right_gravity":true,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 14:56:20)","OpencodeHint"],[" [msg_9d8ec2a9f001uOK35RyLnct2b1]","OpencodeHint"]],"virt_text_win_col":-3,"virt_text_repeat_linebreak":false,"virt_text_hide":false,"virt_text_pos":"win_col"}],[7,18,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[8,19,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[9,20,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[10,21,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[11,24,0,{"ns_id":3,"priority":10,"right_gravity":true,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 14:56:27)","OpencodeHint"],[" [msg_9d8ec47a8001Fd2VJ7LRBrj8AF]","OpencodeHint"]],"virt_text_win_col":-3,"virt_text_repeat_linebreak":false,"virt_text_hide":false,"virt_text_pos":"win_col"}],[12,30,0,{"ns_id":3,"priority":10,"right_gravity":true,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 14:56:30)","OpencodeHint"],[" [msg_9d8ec5310001qTVklk5oFvS00E]","OpencodeHint"]],"virt_text_win_col":-3,"virt_text_repeat_linebreak":false,"virt_text_hide":false,"virt_text_pos":"win_col"}],[13,35,0,{"ns_id":3,"priority":10,"right_gravity":true,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 14:56:33)","OpencodeHint"],[" [msg_9d8ec5d1e001Umy9DbvgL0mk76]","OpencodeHint"]],"virt_text_win_col":-3,"virt_text_repeat_linebreak":false,"virt_text_hide":false,"virt_text_pos":"win_col"}],[14,41,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[15,42,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[16,43,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[17,44,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[18,45,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[19,46,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[20,47,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[21,48,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[22,49,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[23,50,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[24,51,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[25,52,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[26,53,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[27,54,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[28,55,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[29,56,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[30,57,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[31,58,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[32,59,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[33,60,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[34,61,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[35,62,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[36,63,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[37,64,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[38,65,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[39,66,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[40,67,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[41,68,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[42,69,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[43,70,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[44,71,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[45,72,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[46,73,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[47,74,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[48,75,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[49,76,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[50,77,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[51,78,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[52,79,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[53,80,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[54,81,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[55,82,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[56,83,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[57,84,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[58,85,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[59,86,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[60,87,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[61,90,0,{"ns_id":3,"priority":10,"right_gravity":true,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 14:56:38)","OpencodeHint"],[" [msg_9d8ec708e001lrLTmgiWPbSYeN]","OpencodeHint"]],"virt_text_win_col":-3,"virt_text_repeat_linebreak":false,"virt_text_hide":false,"virt_text_pos":"win_col"}],[62,97,0,{"ns_id":3,"priority":10,"right_gravity":true,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 14:56:41)","OpencodeHint"],[" [msg_9d8ec7fa7001zpzhgmQUAz1uIN]","OpencodeHint"]],"virt_text_win_col":-3,"virt_text_repeat_linebreak":false,"virt_text_hide":false,"virt_text_pos":"win_col"}],[63,101,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[64,102,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[65,103,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[66,104,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[67,105,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[68,106,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[69,109,0,{"ns_id":3,"priority":10,"right_gravity":true,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 14:56:46)","OpencodeHint"],[" [msg_9d8ec9105001k6kWv2IJB5sIEu]","OpencodeHint"]],"virt_text_win_col":-3,"virt_text_repeat_linebreak":false,"virt_text_hide":false,"virt_text_pos":"win_col"}],[70,111,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[71,112,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[72,113,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[73,114,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[74,115,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[75,116,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[76,117,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[77,118,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[78,119,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[79,120,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[80,121,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[81,122,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[82,123,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[83,124,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[84,125,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[85,126,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[86,127,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[87,128,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[88,129,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[89,130,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[90,131,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[91,132,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[92,135,0,{"ns_id":3,"priority":10,"right_gravity":true,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 14:56:49)","OpencodeHint"],[" [msg_9d8ec9ce4001CV2dSm31xky1f5]","OpencodeHint"]],"virt_text_win_col":-3,"virt_text_repeat_linebreak":false,"virt_text_hide":false,"virt_text_pos":"win_col"}],[93,139,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[94,140,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[95,141,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[96,142,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[97,143,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[98,144,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[99,145,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[100,146,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[101,149,0,{"ns_id":3,"priority":10,"right_gravity":true,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 14:56:52)","OpencodeHint"],[" [msg_9d8ecaa9f001scSNwtORoGqKra]","OpencodeHint"]],"virt_text_win_col":-3,"virt_text_repeat_linebreak":false,"virt_text_hide":false,"virt_text_pos":"win_col"}],[102,153,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[103,154,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[104,155,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[105,156,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[106,157,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[107,158,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[108,161,0,{"ns_id":3,"priority":10,"right_gravity":true,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 14:56:55)","OpencodeHint"],[" [msg_9d8ecb6b8001LyTb1Pp75AENAa]","OpencodeHint"]],"virt_text_win_col":-3,"virt_text_repeat_linebreak":false,"virt_text_hide":false,"virt_text_pos":"win_col"}],[109,168,0,{"ns_id":3,"priority":10,"right_gravity":true,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 14:56:59)","OpencodeHint"],[" [msg_9d8ecc3b20019L3zs8pytlmUHc]","OpencodeHint"]],"virt_text_win_col":-3,"virt_text_repeat_linebreak":false,"virt_text_hide":false,"virt_text_pos":"win_col"}],[110,178,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[111,179,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[112,180,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[113,181,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[114,182,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[115,183,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[116,184,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[117,185,0,{"ns_id":3,"hl_group":"OpencodeDiffDelete","virt_text":[["-","OpencodeDiffDelete"]],"virt_text_pos":"overlay","virt_text_repeat_linebreak":false,"priority":5000,"end_col":0,"end_row":186,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"right_gravity":true}],[118,185,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[119,186,0,{"ns_id":3,"hl_group":"OpencodeDiffAdd","virt_text":[["+","OpencodeDiffAdd"]],"virt_text_pos":"overlay","virt_text_repeat_linebreak":false,"priority":5000,"end_col":0,"end_row":187,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"right_gravity":true}],[120,186,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[121,187,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[122,188,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[123,189,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[124,190,0,{"ns_id":3,"hl_group":"OpencodeDiffDelete","virt_text":[["-","OpencodeDiffDelete"]],"virt_text_pos":"overlay","virt_text_repeat_linebreak":false,"priority":5000,"end_col":0,"end_row":191,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"right_gravity":true}],[125,190,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[126,191,0,{"ns_id":3,"hl_group":"OpencodeDiffDelete","virt_text":[["-","OpencodeDiffDelete"]],"virt_text_pos":"overlay","virt_text_repeat_linebreak":false,"priority":5000,"end_col":0,"end_row":192,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"right_gravity":true}],[127,191,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[128,192,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[129,193,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[130,194,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[131,195,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[132,196,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[133,197,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[134,198,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[135,199,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[136,200,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[137,201,0,{"ns_id":3,"hl_group":"OpencodeDiffAdd","virt_text":[["+","OpencodeDiffAdd"]],"virt_text_pos":"overlay","virt_text_repeat_linebreak":false,"priority":5000,"end_col":0,"end_row":202,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"right_gravity":true}],[138,201,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[139,202,0,{"ns_id":3,"hl_group":"OpencodeDiffAdd","virt_text":[["+","OpencodeDiffAdd"]],"virt_text_pos":"overlay","virt_text_repeat_linebreak":false,"priority":5000,"end_col":0,"end_row":203,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"right_gravity":true}],[140,202,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[141,203,0,{"ns_id":3,"hl_group":"OpencodeDiffAdd","virt_text":[["+","OpencodeDiffAdd"]],"virt_text_pos":"overlay","virt_text_repeat_linebreak":false,"priority":5000,"end_col":0,"end_row":204,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"right_gravity":true}],[142,203,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[143,204,0,{"ns_id":3,"hl_group":"OpencodeDiffAdd","virt_text":[["+","OpencodeDiffAdd"]],"virt_text_pos":"overlay","virt_text_repeat_linebreak":false,"priority":5000,"end_col":0,"end_row":205,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"right_gravity":true}],[144,204,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[145,205,0,{"ns_id":3,"hl_group":"OpencodeDiffAdd","virt_text":[["+","OpencodeDiffAdd"]],"virt_text_pos":"overlay","virt_text_repeat_linebreak":false,"priority":5000,"end_col":0,"end_row":206,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"right_gravity":true}],[146,205,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[147,206,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[148,207,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[149,208,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[150,209,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[151,210,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[152,211,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[153,212,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}],[154,213,0,{"ns_id":3,"priority":4096,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_win_col":-1,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"virt_text_pos":"win_col"}]],"lines":["----","","","the type for _calculate_revert_stats is wrong, i think? because it comes from state.messages. can you fix?","","[lua/opencode/ui/session_formatter.lua](lua/opencode/ui/session_formatter.lua)","","----","","","Looking at the code, I can see the issue. The function `_calculate_revert_stats` is called at line 64, but there's a type annotation issue at line 99 and line 228.","","At line 228, the code accesses `msg.info.role`, but the parameter is typed as `messages` which is `Message[]`. The `Message` type likely has a nested `info` structure, which is correct.","","However, line 99 has an outdated type annotation that references a `message` parameter (singular) when the commented-out function actually doesn't exist anymore.","","Let me check the Message type structure and fix the type annotation:","","** grep** `*.lua` `---@class Message`","Found `0` matches","","> [!ERROR] Error: ripgrep failed: rg: unrecognized flag ---@class Message","","----","","","** grep** `*.lua` `@class Message`","Found `4` matches","","----","","","** read** `types.lua`","","----","","","Now I can see the issue clearly. The `Message` type doesn't have an `info` field at the root - it has `role` directly. But in the `_calculate_revert_stats` function at line 228, it's accessing `msg.info.role`. ","","Let me check how messages are actually structured in the state:","","** run** `Check how msg.info is accessed in the file`","","`````bash","> cd /Users/cam/Dev/neovim-dev/opencode.nvim && rg \"msg\\.info\\.\" -A 2 -B 2 lua/opencode/ui/session_formatter.lua | head -40",""," state.current_message = msg",""," if not state.current_model and msg.info.providerID and msg.info.providerID ~= '' then"," state.current_model = msg.info.providerID .. '/' .. msg.info.modelID"," end",""," if msg.info.tokens and msg.info.tokens.input > 0 then"," state.tokens_count = msg.info.tokens.input"," + msg.info.tokens.output"," + msg.info.tokens.cache.read"," + msg.info.tokens.cache.write"," end",""," if msg.info.cost and type(msg.info.cost) == 'number' then"," state.cost = msg.info.cost"," end",""," if session.revert and session.revert.messageID == msg.info.id then"," ---@type {messages: number, tool_calls: number, files: table}"," local revert_stats = M._calculate_revert_stats(state.messages, i, session.revert)","--",""," for j, part in ipairs(msg.parts or {}) do"," M._current = { msg_idx = i, part_idx = j, role = msg.info.role, type = part.type, snapshot = part.snapshot }"," M.output:add_metadata(M._current)",""," if part.type == 'text' and part.text then"," if msg.info.role == 'user' and part.synthetic ~= true then"," state.last_user_message = msg"," M._format_user_message(vim.trim(part.text), msg)"," elseif msg.info.role == 'assistant' then"," M._format_assistant_message(vim.trim(part.text))"," end","--"," end",""," if msg.info.error and msg.info.error ~= '' then"," M._format_error(msg)"," end","--","","`````","","----","","","I see - the messages in `state.messages` actually have an `info` field. The type definition in `types.lua` might be incomplete or different. Let me check the actual structure by looking at how messages come from the API:","","** read** `types.lua`","","----","","","The `Message` type definition doesn't match the actual structure used in the code. Looking at the usage, messages have an `info` field that contains the metadata. Let me search for a different type definition:","","** run** `Check info field usage patterns`","","`````bash","> cd /Users/cam/Dev/neovim-dev/opencode.nvim && rg \"info.*providerID\\|info.*role\\|info.*id\" lua/opencode/ui/session_formatter.lua | head -10","","`````","","----","","","** run** `Find all info field accesses`","","`````bash","> cd /Users/cam/Dev/neovim-dev/opencode.nvim && rg \"\\.info\\.\" lua/opencode/ui/session_formatter.lua | head -15",""," if not state.current_model and msg.info.providerID and msg.info.providerID ~= '' then"," state.current_model = msg.info.providerID .. '/' .. msg.info.modelID"," if msg.info.tokens and msg.info.tokens.input > 0 then"," state.tokens_count = msg.info.tokens.input"," + msg.info.tokens.output"," + msg.info.tokens.cache.read"," + msg.info.tokens.cache.write"," if msg.info.cost and type(msg.info.cost) == 'number' then"," state.cost = msg.info.cost"," if session.revert and session.revert.messageID == msg.info.id then"," M._current = { msg_idx = i, part_idx = j, role = msg.info.role, type = part.type, snapshot = part.snapshot }"," if msg.info.role == 'user' and part.synthetic ~= true then"," elseif msg.info.role == 'assistant' then"," if msg.info.error and msg.info.error ~= '' then"," if msg.info.role == 'user' then","","`````","","----","","","The actual structure has `msg.info` wrapping the message metadata. Let me look for an `info` type or see how the structure is defined:","","** run** `Search for Info type definitions`","","`````bash","> cd /Users/cam/Dev/neovim-dev/opencode.nvim && rg \"@class.*Info|@field info\" lua/opencode/types.lua","","---@class SessionRevertInfo","","`````","","----","","","Let me check the actual message structure by looking at the session module:","","** run** `Check how info is constructed`","","`````bash","> cd /Users/cam/Dev/neovim-dev/opencode.nvim && rg \"info\\s*=\" lua/opencode/session.lua | head -10","","`````","","----","","","Let me look at how messages are actually shaped in practice by checking test data:","","** read** `simple-session.json`","","----","","","Perfect! Now I can see the actual structure. Messages have an `info` field that contains metadata like `id`, `role`, `sessionID`, etc. The `Message` type definition in `types.lua` is incomplete - it's missing the `info` field wrapper.","","Now I understand the issue. Looking back at the error:","- Line 99: References undefined param `message` (this is in commented-out code)","- Line 228: References `msg.info` field which isn't in the type definition","","The fix is to update the `Message` type to include the `info` field. Let me check the complete structure:","","** edit** `types.lua`","","`````lua"," ---@field range? { from: number, to: number } Optional range for the action"," "," ---@alias OutputExtmark vim.api.keyset.set_extmark|fun():vim.api.keyset.set_extmark"," "," ---@class Message"," ---@class MessageInfo"," ---@field id string Unique message identifier"," ---@field sessionID string Unique session identifier"," ---@field tokens MessageTokenCount Token usage statistics"," ---@field parts MessagePart[] Array of message parts"," ---@field system string[] System messages"," ---@field time { created: number, completed: number } Timestamps"," ---@field cost number Cost of the message"," ---@field path { cwd: string, root: string } Working directory paths"," ---@field modelID string Model identifier","@@ -253,8 +251,13 @@"," ---@field system_role string|nil Role defined in system messages"," ---@field mode string|nil Agent or mode identifier"," ---@field error table"," "," ---@class Message"," ---@field info MessageInfo Message metadata"," ---@field parts MessagePart[] Array of message parts"," ---@field system string[] System messages"," "," ---@class RestorePoint"," ---@field id string Unique restore point identifier"," ---@field from_snapshot_id string|nil ID of the snapshot this restore point is based on"," ---@field files string[] List of file paths included in the restore point","","`````","","> [!ERROR] Error: The user rejected permission to use this specific tool call. You may try again with different parameters.","",""]} \ No newline at end of file diff --git a/tests/data/permission-prompt.expected.json b/tests/data/permission-prompt.expected.json index 9aa71fa6..40c10f1c 100644 --- a/tests/data/permission-prompt.expected.json +++ b/tests/data/permission-prompt.expected.json @@ -1 +1 @@ -{"actions":[],"extmarks":[[1,1,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-16 04:27:36)","OpencodeHint"],[" [msg_9eb45fbe60020xE560OGH3Vdoo]","OpencodeHint"]],"right_gravity":true,"ns_id":3,"priority":10,"virt_text_win_col":-3,"virt_text_hide":false}],[2,5,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"ns_id":3,"priority":4096,"virt_text_win_col":-1,"virt_text_hide":false}],[3,6,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"ns_id":3,"priority":4096,"virt_text_win_col":-1,"virt_text_hide":false}],[4,7,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"ns_id":3,"priority":4096,"virt_text_win_col":-1,"virt_text_hide":false}],[5,8,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"ns_id":3,"priority":4096,"virt_text_win_col":-1,"virt_text_hide":false}],[6,9,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"ns_id":3,"priority":4096,"virt_text_win_col":-1,"virt_text_hide":false}],[7,10,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"ns_id":3,"priority":4096,"virt_text_win_col":-1,"virt_text_hide":false}],[8,11,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"ns_id":3,"priority":4096,"virt_text_win_col":-1,"virt_text_hide":false}],[9,12,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"ns_id":3,"priority":4096,"virt_text_win_col":-1,"virt_text_hide":false}],[10,13,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"ns_id":3,"priority":4096,"virt_text_win_col":-1,"virt_text_hide":false}],[11,14,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"ns_id":3,"priority":4096,"virt_text_win_col":-1,"virt_text_hide":false}],[12,15,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"ns_id":3,"priority":4096,"virt_text_win_col":-1,"virt_text_hide":false}]],"timestamp":1766431564,"lines":["----","","","Perfect! Now I understand how it works. The message headers have extmarks with `virt_text` where the first element contains the icon (either `header_user` or `header_assistant`). Let me check the output_window module to understand the extmark namespace:","","** run** `Find extmark namespace usage`","","`````bash","> rg \"nvim_buf_get_extmarks|ns_id\" /Users/cam/Dev/neovim-dev/opencode.nvim/lua/opencode/ui/output_window.lua -B 2 -A 2","","`````","","> [!WARNING] Permission required to run this tool.",">","> Accept `a` Always `A` Deny `d`","",""]} \ No newline at end of file +{"actions":[],"extmarks":[[1,1,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":false,"priority":10,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-16 04:27:36)","OpencodeHint"],[" [msg_9eb45fbe60020xE560OGH3Vdoo]","OpencodeHint"]],"right_gravity":true,"ns_id":3,"virt_text_win_col":-3,"virt_text_hide":false}],[2,5,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"ns_id":3,"virt_text_win_col":-1,"virt_text_hide":false}],[3,6,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"ns_id":3,"virt_text_win_col":-1,"virt_text_hide":false}],[4,7,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"ns_id":3,"virt_text_win_col":-1,"virt_text_hide":false}],[5,8,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"ns_id":3,"virt_text_win_col":-1,"virt_text_hide":false}],[6,9,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"ns_id":3,"virt_text_win_col":-1,"virt_text_hide":false}],[7,10,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"ns_id":3,"virt_text_win_col":-1,"virt_text_hide":false}],[8,11,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"ns_id":3,"virt_text_win_col":-1,"virt_text_hide":false}],[9,12,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"ns_id":3,"virt_text_win_col":-1,"virt_text_hide":false}],[10,13,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"ns_id":3,"virt_text_win_col":-1,"virt_text_hide":false}],[11,14,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"ns_id":3,"virt_text_win_col":-1,"virt_text_hide":false}],[12,15,0,{"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"ns_id":3,"virt_text_win_col":-1,"virt_text_hide":false}]],"timestamp":1766432126,"lines":["----","","","Perfect! Now I understand how it works. The message headers have extmarks with `virt_text` where the first element contains the icon (either `header_user` or `header_assistant`). Let me check the output_window module to understand the extmark namespace:","","** run** `Find extmark namespace usage`","","`````bash","> rg \"nvim_buf_get_extmarks|ns_id\" /Users/cam/Dev/neovim-dev/opencode.nvim/lua/opencode/ui/output_window.lua -B 2 -A 2","","`````","","> [!WARNING] Permission required to run this tool.",">","> Accept `a` Always `A` Deny `d`","",""]} \ No newline at end of file diff --git a/tests/data/permission.expected.json b/tests/data/permission.expected.json index e565ad57..aac9582d 100644 --- a/tests/data/permission.expected.json +++ b/tests/data/permission.expected.json @@ -1 +1 @@ -{"timestamp":1766431565,"lines":["----","","","add a file, test.txt, with \":)\" in it","","----","","","** write** `test.txt`","","`````txt",":)","`````","","**󰻛 Created Snapshot** `c78fb2dd`","","----","","",""],"extmarks":[[1,1,0,{"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-12 05:43:49)","OpencodeHint"],[" [msg_9d6f253910015UFmkGkiWtUsRW]","OpencodeHint"]],"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false}],[2,2,0,{"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true}],[3,3,0,{"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true}],[4,6,0,{"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 05:43:49)","OpencodeHint"],[" [msg_9d6f253df001TjqxW12FAjGf5s]","OpencodeHint"]],"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false}],[5,8,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true}],[6,9,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true}],[7,10,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true}],[8,11,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true}],[9,12,0,{"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true}],[10,17,0,{"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 05:44:00)","OpencodeHint"],[" [msg_9d6f27f4800103Tp3N6i6JW53p]","OpencodeHint"]],"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false}]],"actions":[{"text":"[R]evert file","key":"R","range":{"from":14,"to":14},"display_line":14,"type":"diff_revert_selected_file","args":["c78fb2dd2d533cfe530692cc3e3c8f92a0e4af1d"]},{"text":"Revert [A]ll","key":"A","range":{"from":14,"to":14},"display_line":14,"type":"diff_revert_all","args":["c78fb2dd2d533cfe530692cc3e3c8f92a0e4af1d"]},{"text":"[D]iff","key":"D","range":{"from":14,"to":14},"display_line":14,"type":"diff_open","args":["c78fb2dd2d533cfe530692cc3e3c8f92a0e4af1d"]}]} \ No newline at end of file +{"lines":["----","","","add a file, test.txt, with \":)\" in it","","----","","","** write** `test.txt`","","`````txt",":)","`````","","**󰻛 Created Snapshot** `c78fb2dd`","","----","","",""],"extmarks":[[1,1,0,{"priority":10,"virt_text_repeat_linebreak":false,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-12 05:43:49)","OpencodeHint"],[" [msg_9d6f253910015UFmkGkiWtUsRW]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[2,2,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[3,3,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[4,6,0,{"priority":10,"virt_text_repeat_linebreak":false,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 05:43:49)","OpencodeHint"],[" [msg_9d6f253df001TjqxW12FAjGf5s]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[5,8,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[6,9,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[7,10,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[8,11,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[9,12,0,{"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[10,17,0,{"priority":10,"virt_text_repeat_linebreak":false,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-12 05:44:00)","OpencodeHint"],[" [msg_9d6f27f4800103Tp3N6i6JW53p]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3}]],"timestamp":1766432126,"actions":[{"key":"R","range":{"from":14,"to":14},"display_line":14,"type":"diff_revert_selected_file","args":["c78fb2dd2d533cfe530692cc3e3c8f92a0e4af1d"],"text":"[R]evert file"},{"key":"A","range":{"from":14,"to":14},"display_line":14,"type":"diff_revert_all","args":["c78fb2dd2d533cfe530692cc3e3c8f92a0e4af1d"],"text":"Revert [A]ll"},{"key":"D","range":{"from":14,"to":14},"display_line":14,"type":"diff_open","args":["c78fb2dd2d533cfe530692cc3e3c8f92a0e4af1d"],"text":"[D]iff"}]} \ No newline at end of file diff --git a/tests/data/planning.expected.json b/tests/data/planning.expected.json index b6ec54ef..d1c952f2 100644 --- a/tests/data/planning.expected.json +++ b/tests/data/planning.expected.json @@ -1 +1 @@ -{"extmarks":[[1,1,0,{"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-11 17:41:45)","OpencodeHint"],[" [msg_9d45d40c9001s7A1sP3Ew537QN]","OpencodeHint"]],"ns_id":3,"virt_text_win_col":-3,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_pos":"win_col"}],[2,2,0,{"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3,"virt_text_win_col":-3,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col"}],[3,3,0,{"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3,"virt_text_win_col":-3,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col"}],[4,4,0,{"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3,"virt_text_win_col":-3,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col"}],[5,5,0,{"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3,"virt_text_win_col":-3,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col"}],[6,8,0,{"right_gravity":true,"virt_text_hide":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" claude-sonnet-4","OpencodeHint"],[" (2025-10-11 17:41:45)","OpencodeHint"],[" [msg_9d45d411b00254Lm5jVRwAeQxT]","OpencodeHint"]],"ns_id":3,"virt_text_win_col":-3,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_pos":"win_col"}],[7,12,0,{"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col"}],[8,13,0,{"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col"}],[9,14,0,{"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col"}],[10,15,0,{"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col"}],[11,16,0,{"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col"}],[12,19,0,{"right_gravity":true,"virt_text_hide":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" claude-sonnet-4","OpencodeHint"],[" (2025-10-11 17:41:51)","OpencodeHint"],[" [msg_9d45d585800269UgJnOLD8i2pF]","OpencodeHint"]],"ns_id":3,"virt_text_win_col":-3,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_pos":"win_col"}],[13,24,0,{"right_gravity":true,"virt_text_hide":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" claude-sonnet-4","OpencodeHint"],[" (2025-10-11 17:41:54)","OpencodeHint"],[" [msg_9d45d65b40026mDvwR5cCGTA30]","OpencodeHint"]],"ns_id":3,"virt_text_win_col":-3,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_pos":"win_col"}],[14,26,0,{"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col"}],[15,27,0,{"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col"}],[16,28,0,{"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col"}],[17,29,0,{"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col"}],[18,30,0,{"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col"}],[19,33,0,{"right_gravity":true,"virt_text_hide":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" claude-sonnet-4","OpencodeHint"],[" (2025-10-11 17:41:58)","OpencodeHint"],[" [msg_9d45d7390002yE2ve5szXtMdw0]","OpencodeHint"]],"ns_id":3,"virt_text_win_col":-3,"priority":10,"virt_text_repeat_linebreak":false,"virt_text_pos":"win_col"}]],"timestamp":1766431565,"lines":["----","","","can you make a new neovim plugin for me?","","[a-empty.txt](a-empty.txt)","","----","","","I'll help you create a new Neovim plugin. Let me first examine your current setup and then create the plugin structure.","","**󰝖 plan** `4 todos`","- [ ] Examine existing Lua plugin structure ","- [ ] Create basic plugin directory structure ","- [ ] Write main plugin init.lua file ","- [ ] Create plugin documentation ","","----","","","** read** `init.lua`","","----","","","**󰝖 plan** `3 todos`","- [x] Examine existing Lua plugin structure ","- [-] Create basic plugin directory structure ","- [ ] Write main plugin init.lua file ","- [ ] Create plugin documentation ","","----","","","What would you like your Neovim plugin to do? I can see you have an example plugin structure already. I'll need to know:","","1. What functionality you want the plugin to provide","2. What you'd like to name it","3. Any specific features or commands you want to include","","Once you provide these details, I can create a complete plugin structure for you based on the pattern I see in your existing example-plugin.","",""],"actions":[]} \ No newline at end of file +{"lines":["----","","","can you make a new neovim plugin for me?","","[a-empty.txt](a-empty.txt)","","----","","","I'll help you create a new Neovim plugin. Let me first examine your current setup and then create the plugin structure.","","**󰝖 plan** `4 todos`","- [ ] Examine existing Lua plugin structure ","- [ ] Create basic plugin directory structure ","- [ ] Write main plugin init.lua file ","- [ ] Create plugin documentation ","","----","","","** read** `init.lua`","","----","","","**󰝖 plan** `3 todos`","- [x] Examine existing Lua plugin structure ","- [-] Create basic plugin directory structure ","- [ ] Write main plugin init.lua file ","- [ ] Create plugin documentation ","","----","","","What would you like your Neovim plugin to do? I can see you have an example plugin structure already. I'll need to know:","","1. What functionality you want the plugin to provide","2. What you'd like to name it","3. Any specific features or commands you want to include","","Once you provide these details, I can create a complete plugin structure for you based on the pattern I see in your existing example-plugin.","",""],"timestamp":1766432126,"extmarks":[[1,1,0,{"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-11 17:41:45)","OpencodeHint"],[" [msg_9d45d40c9001s7A1sP3Ew537QN]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_repeat_linebreak":false,"priority":10,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-3}],[2,2,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-3}],[3,3,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-3}],[4,4,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-3}],[5,5,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-3}],[6,8,0,{"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" claude-sonnet-4","OpencodeHint"],[" (2025-10-11 17:41:45)","OpencodeHint"],[" [msg_9d45d411b00254Lm5jVRwAeQxT]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_repeat_linebreak":false,"priority":10,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-3}],[7,12,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-1}],[8,13,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-1}],[9,14,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-1}],[10,15,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-1}],[11,16,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-1}],[12,19,0,{"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" claude-sonnet-4","OpencodeHint"],[" (2025-10-11 17:41:51)","OpencodeHint"],[" [msg_9d45d585800269UgJnOLD8i2pF]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_repeat_linebreak":false,"priority":10,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-3}],[13,24,0,{"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" claude-sonnet-4","OpencodeHint"],[" (2025-10-11 17:41:54)","OpencodeHint"],[" [msg_9d45d65b40026mDvwR5cCGTA30]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_repeat_linebreak":false,"priority":10,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-3}],[14,26,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-1}],[15,27,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-1}],[16,28,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-1}],[17,29,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-1}],[18,30,0,{"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-1}],[19,33,0,{"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" claude-sonnet-4","OpencodeHint"],[" (2025-10-11 17:41:58)","OpencodeHint"],[" [msg_9d45d7390002yE2ve5szXtMdw0]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_repeat_linebreak":false,"priority":10,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-3}]],"actions":[]} \ No newline at end of file diff --git a/tests/data/reasoning.expected.json b/tests/data/reasoning.expected.json index 539cf754..65db68da 100644 --- a/tests/data/reasoning.expected.json +++ b/tests/data/reasoning.expected.json @@ -1 +1 @@ -{"actions":[],"extmarks":[[1,1,0,{"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-12-17 19:33:20)","OpencodeHint"],[" [msg_reason_user1]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10,"virt_text_repeat_linebreak":false,"ns_id":3}],[2,2,0,{"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3}],[3,3,0,{"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3}],[4,6,0,{"right_gravity":true,"virt_text_hide":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4","OpencodeHint"],[" (2025-12-17 19:33:20)","OpencodeHint"],[" [msg_reason_asst1]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10,"virt_text_repeat_linebreak":false,"ns_id":3}],[5,8,0,{"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"line_hl_group":"OpencodeReasoningText"}],[6,9,0,{"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"line_hl_group":"OpencodeReasoningText"}],[7,10,0,{"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"line_hl_group":"OpencodeReasoningText"}],[8,11,0,{"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"line_hl_group":"OpencodeReasoningText"}],[9,12,0,{"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"line_hl_group":"OpencodeReasoningText"}],[10,13,0,{"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"line_hl_group":"OpencodeReasoningText"}],[11,14,0,{"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"line_hl_group":"OpencodeReasoningText"}],[12,15,0,{"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"line_hl_group":"OpencodeReasoningText"}],[13,16,0,{"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"line_hl_group":"OpencodeReasoningText"}],[14,17,0,{"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"line_hl_group":"OpencodeReasoningText"}],[15,18,0,{"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"virt_text":[["▌","OpencodeToolBorder"]],"line_hl_group":"OpencodeReasoningText"}]],"timestamp":1766431565,"lines":["----","","","Explain your plan, then provide the final title.","","----","","","**󰧑 Reasoning (2025-12-17 19:33:20 - 2025-12-17 19:33:21)** ","","The user is asking me to explain my plan and then provide a final title. I need to think through what they're asking for. It seems like they want me to demonstrate reasoning capabilities - showing my thought process before giving an answer. Let me break this down into steps.","","1. First, I should understand what kind of title they want - is this for a project, document, or something else?","2. Since they didn't specify the context, I should provide a general approach","3. I'll demonstrate my reasoning process transparently","4. Then I'll give them a concrete example title","","Given that this appears to be related to the OpenCode project (based on the file structure I can see), I should provide a title that reflects the nature of this AI coding assistant tool.","","Based on my reasoning above, here's my plan:","","1. Acknowledge the request for demonstrating reasoning","2. Show transparency in my thought process","3. Provide context-appropriate suggestions","","For the title, considering this is the OpenCode Neovim plugin - an AI-powered coding assistant - a good title would be:","","**\"OpenCode.nvim: AI-Powered Coding Assistant for Neovim\"**","","This title clearly identifies what the tool is (OpenCode), the platform it works with (Neovim), and its primary function (AI-powered coding assistance).","",""]} \ No newline at end of file +{"actions":[],"timestamp":1766432126,"extmarks":[[1,1,0,{"virt_text_hide":false,"virt_text_pos":"win_col","virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-12-17 19:33:20)","OpencodeHint"],[" [msg_reason_user1]","OpencodeHint"]],"ns_id":3,"virt_text_win_col":-3,"priority":10,"virt_text_repeat_linebreak":false,"right_gravity":true}],[2,2,0,{"virt_text_hide":false,"virt_text_pos":"win_col","virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3,"virt_text_win_col":-3,"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true}],[3,3,0,{"virt_text_hide":false,"virt_text_pos":"win_col","virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3,"virt_text_win_col":-3,"priority":4096,"virt_text_repeat_linebreak":true,"right_gravity":true}],[4,6,0,{"virt_text_hide":false,"virt_text_pos":"win_col","virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4","OpencodeHint"],[" (2025-12-17 19:33:20)","OpencodeHint"],[" [msg_reason_asst1]","OpencodeHint"]],"ns_id":3,"virt_text_win_col":-3,"priority":10,"virt_text_repeat_linebreak":false,"right_gravity":true}],[5,8,0,{"virt_text_hide":false,"virt_text_repeat_linebreak":true,"ns_id":3,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"line_hl_group":"OpencodeReasoningText"}],[6,9,0,{"virt_text_hide":false,"virt_text_repeat_linebreak":true,"ns_id":3,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"line_hl_group":"OpencodeReasoningText"}],[7,10,0,{"virt_text_hide":false,"virt_text_repeat_linebreak":true,"ns_id":3,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"line_hl_group":"OpencodeReasoningText"}],[8,11,0,{"virt_text_hide":false,"virt_text_repeat_linebreak":true,"ns_id":3,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"line_hl_group":"OpencodeReasoningText"}],[9,12,0,{"virt_text_hide":false,"virt_text_repeat_linebreak":true,"ns_id":3,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"line_hl_group":"OpencodeReasoningText"}],[10,13,0,{"virt_text_hide":false,"virt_text_repeat_linebreak":true,"ns_id":3,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"line_hl_group":"OpencodeReasoningText"}],[11,14,0,{"virt_text_hide":false,"virt_text_repeat_linebreak":true,"ns_id":3,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"line_hl_group":"OpencodeReasoningText"}],[12,15,0,{"virt_text_hide":false,"virt_text_repeat_linebreak":true,"ns_id":3,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"line_hl_group":"OpencodeReasoningText"}],[13,16,0,{"virt_text_hide":false,"virt_text_repeat_linebreak":true,"ns_id":3,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"line_hl_group":"OpencodeReasoningText"}],[14,17,0,{"virt_text_hide":false,"virt_text_repeat_linebreak":true,"ns_id":3,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"line_hl_group":"OpencodeReasoningText"}],[15,18,0,{"virt_text_hide":false,"virt_text_repeat_linebreak":true,"ns_id":3,"right_gravity":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096,"line_hl_group":"OpencodeReasoningText"}]],"lines":["----","","","Explain your plan, then provide the final title.","","----","","","**󰧑 Reasoning (2025-12-17 19:33:20 - 2025-12-17 19:33:21)** ","","The user is asking me to explain my plan and then provide a final title. I need to think through what they're asking for. It seems like they want me to demonstrate reasoning capabilities - showing my thought process before giving an answer. Let me break this down into steps.","","1. First, I should understand what kind of title they want - is this for a project, document, or something else?","2. Since they didn't specify the context, I should provide a general approach","3. I'll demonstrate my reasoning process transparently","4. Then I'll give them a concrete example title","","Given that this appears to be related to the OpenCode project (based on the file structure I can see), I should provide a title that reflects the nature of this AI coding assistant tool.","","Based on my reasoning above, here's my plan:","","1. Acknowledge the request for demonstrating reasoning","2. Show transparency in my thought process","3. Provide context-appropriate suggestions","","For the title, considering this is the OpenCode Neovim plugin - an AI-powered coding assistant - a good title would be:","","**\"OpenCode.nvim: AI-Powered Coding Assistant for Neovim\"**","","This title clearly identifies what the tool is (OpenCode), the platform it works with (Neovim), and its primary function (AI-powered coding assistance).","",""]} \ No newline at end of file diff --git a/tests/data/redo-all.expected.json b/tests/data/redo-all.expected.json index 4be6be48..0280aa81 100644 --- a/tests/data/redo-all.expected.json +++ b/tests/data/redo-all.expected.json @@ -1 +1 @@ -{"lines":["----","","","add another word","","[test.txt](test.txt)","","----","","","I'll append a single word (\"again\") to the first line of `test.txt`. Applying a precise edit to the existing line now.","","** edit** `test.txt`","","`````txt"," tangram quiver saffron nebula cobalt murmur plinth zephyr ember lattice cadenza another yet extra more"," tangram quiver saffron nebula cobalt murmur plinth zephyr ember lattice cadenza another yet extra more again"," "," ","","`````","","**󰻛 Created Snapshot** `1b6ba655`","","----","","","**Done:** added the word `again` to `test.txt`.","","----","","","add another word","","----","","","I'll read `test.txt` to get the current first-line content, then append one word (\"again2\") to that line. Proceeding to read the file.","","** read** `test.txt`","","----","","","Now I'll append the word \"again2\" to the first line. I'll apply an exact in-place edit to update that line.","","** edit** `test.txt`","","`````txt"," tangram quiver saffron nebula cobalt murmur plinth zephyr ember lattice cadenza another yet extra more again"," tangram quiver saffron nebula cobalt murmur plinth zephyr ember lattice cadenza another yet extra more again again2"," "," ","","`````","","**󰻛 Created Snapshot** `57d83f55`","","----","","","**Done:** appended the word `again2` to `test.txt`.","","----","","","add another word","","----","","","I'll read `test.txt` to get the current first-line content, then append the word `again3`. Proceeding to read the file.","","** read** `test.txt`","","----","","","I'll append the word \"again3\" to the first line of `test.txt` with an exact in-place edit. Applying the change now.","","** edit** `test.txt`","","`````txt"," tangram quiver saffron nebula cobalt murmur plinth zephyr ember lattice cadenza another yet extra more again again2"," tangram quiver saffron nebula cobalt murmur plinth zephyr ember lattice cadenza another yet extra more again again2 again3"," "," ","","`````","","**󰻛 Created Snapshot** `d988cc85`","","----","","","**Done:** appended the word `again3` to `test.txt`.","",""],"extmarks":[[1,1,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":10,"virt_text_hide":false,"virt_text_win_col":-3,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-20 15:20:02)","OpencodeHint"],[" [msg_a0234c0b7001y2o9S1jMaNVZar]","OpencodeHint"]]}],[2,2,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-3,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[3,3,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-3,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[4,4,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-3,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[5,5,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-3,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[6,8,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":10,"virt_text_hide":false,"virt_text_win_col":-3,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-20 15:20:04)","OpencodeHint"],[" [msg_a0234c7960011LTxTvD94hfWCi]","OpencodeHint"]]}],[7,12,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-1,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[8,13,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-1,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[9,14,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-1,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[10,15,0,{"right_gravity":true,"virt_text":[["-","OpencodeDiffDelete"]],"hl_group":"OpencodeDiffDelete","end_col":0,"end_row":16,"hl_eol":true,"priority":5000,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text_pos":"overlay","end_right_gravity":false}],[11,15,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-1,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[12,16,0,{"right_gravity":true,"virt_text":[["+","OpencodeDiffAdd"]],"hl_group":"OpencodeDiffAdd","end_col":0,"end_row":17,"hl_eol":true,"priority":5000,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text_pos":"overlay","end_right_gravity":false}],[13,16,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-1,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[14,17,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-1,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[15,18,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-1,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[16,19,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-1,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[17,20,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-1,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[18,25,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":10,"virt_text_hide":false,"virt_text_win_col":-3,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-20 15:20:09)","OpencodeHint"],[" [msg_a0234d8fb001SXyngLjuKSuxOY]","OpencodeHint"]]}],[19,30,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":10,"virt_text_hide":false,"virt_text_win_col":-3,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-20 15:20:11)","OpencodeHint"],[" [msg_a0234e308001SKl5bQUibp5gtI]","OpencodeHint"]]}],[20,31,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-3,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[21,32,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-3,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[22,35,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":10,"virt_text_hide":false,"virt_text_win_col":-3,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-20 15:20:11)","OpencodeHint"],[" [msg_a0234e31f001m4EsQdPmY3PTtS]","OpencodeHint"]]}],[23,42,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":10,"virt_text_hide":false,"virt_text_win_col":-3,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-20 15:20:16)","OpencodeHint"],[" [msg_a0234f482001PQbMjWc6W8s0eF]","OpencodeHint"]]}],[24,46,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-1,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[25,47,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-1,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[26,48,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-1,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[27,49,0,{"right_gravity":true,"virt_text":[["-","OpencodeDiffDelete"]],"hl_group":"OpencodeDiffDelete","end_col":0,"end_row":50,"hl_eol":true,"priority":5000,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text_pos":"overlay","end_right_gravity":false}],[28,49,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-1,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[29,50,0,{"right_gravity":true,"virt_text":[["+","OpencodeDiffAdd"]],"hl_group":"OpencodeDiffAdd","end_col":0,"end_row":51,"hl_eol":true,"priority":5000,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text_pos":"overlay","end_right_gravity":false}],[30,50,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-1,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[31,51,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-1,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[32,52,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-1,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[33,53,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-1,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[34,54,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-1,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[35,59,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":10,"virt_text_hide":false,"virt_text_win_col":-3,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-20 15:20:17)","OpencodeHint"],[" [msg_a0234f9c6001JCKYaca1HHwwx6]","OpencodeHint"]]}],[36,64,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":10,"virt_text_hide":false,"virt_text_win_col":-3,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-20 15:22:29)","OpencodeHint"],[" [msg_a0236fd1c001TlwqL8fwvq529i]","OpencodeHint"]]}],[37,65,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-3,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[38,66,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-3,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]]}],[39,69,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":10,"virt_text_hide":false,"virt_text_win_col":-3,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-20 15:22:29)","OpencodeHint"],[" [msg_a0236fd57001pTnTjSBdFlleCb]","OpencodeHint"]]}],[40,76,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":10,"virt_text_hide":false,"virt_text_win_col":-3,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-20 15:22:34)","OpencodeHint"],[" [msg_a02371241001PBQAsr8Oc9hqNI]","OpencodeHint"]]}],[41,80,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-1,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[42,81,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-1,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[43,82,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-1,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[44,83,0,{"right_gravity":true,"virt_text":[["-","OpencodeDiffDelete"]],"hl_group":"OpencodeDiffDelete","end_col":0,"end_row":84,"hl_eol":true,"priority":5000,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text_pos":"overlay","end_right_gravity":false}],[45,83,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-1,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[46,84,0,{"right_gravity":true,"virt_text":[["+","OpencodeDiffAdd"]],"hl_group":"OpencodeDiffAdd","end_col":0,"end_row":85,"hl_eol":true,"priority":5000,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text_pos":"overlay","end_right_gravity":false}],[47,84,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-1,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[48,85,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-1,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[49,86,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-1,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[50,87,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-1,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[51,88,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-1,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]]}],[52,93,0,{"virt_text_pos":"win_col","right_gravity":true,"priority":10,"virt_text_hide":false,"virt_text_win_col":-3,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-20 15:22:39)","OpencodeHint"],[" [msg_a023723d0001r87MaJThFssUw1]","OpencodeHint"]]}]],"actions":[{"type":"diff_revert_selected_file","range":{"from":56,"to":56},"text":"[R]evert file","key":"R","args":["57d83f5596cb1f142fbc681d3d93b7184f7f73cd"],"display_line":56},{"type":"diff_revert_all","range":{"from":56,"to":56},"text":"Revert [A]ll","key":"A","args":["57d83f5596cb1f142fbc681d3d93b7184f7f73cd"],"display_line":56},{"type":"diff_open","range":{"from":56,"to":56},"text":"[D]iff","key":"D","args":["57d83f5596cb1f142fbc681d3d93b7184f7f73cd"],"display_line":56},{"type":"diff_revert_selected_file","range":{"from":90,"to":90},"text":"[R]evert file","key":"R","args":["d988cc85565b99017d40ad8baea20225165be9d5"],"display_line":90},{"type":"diff_revert_all","range":{"from":90,"to":90},"text":"Revert [A]ll","key":"A","args":["d988cc85565b99017d40ad8baea20225165be9d5"],"display_line":90},{"type":"diff_open","range":{"from":90,"to":90},"text":"[D]iff","key":"D","args":["d988cc85565b99017d40ad8baea20225165be9d5"],"display_line":90},{"type":"diff_revert_selected_file","range":{"from":22,"to":22},"text":"[R]evert file","key":"R","args":["1b6ba655c6c0d899965adff278ac6320d5fc3b12"],"display_line":22},{"type":"diff_revert_all","range":{"from":22,"to":22},"text":"Revert [A]ll","key":"A","args":["1b6ba655c6c0d899965adff278ac6320d5fc3b12"],"display_line":22},{"type":"diff_open","range":{"from":22,"to":22},"text":"[D]iff","key":"D","args":["1b6ba655c6c0d899965adff278ac6320d5fc3b12"],"display_line":22}],"timestamp":1766431566} \ No newline at end of file +{"timestamp":1766432127,"lines":["----","","","add another word","","[test.txt](test.txt)","","----","","","I'll append a single word (\"again\") to the first line of `test.txt`. Applying a precise edit to the existing line now.","","** edit** `test.txt`","","`````txt"," tangram quiver saffron nebula cobalt murmur plinth zephyr ember lattice cadenza another yet extra more"," tangram quiver saffron nebula cobalt murmur plinth zephyr ember lattice cadenza another yet extra more again"," "," ","","`````","","**󰻛 Created Snapshot** `1b6ba655`","","----","","","**Done:** added the word `again` to `test.txt`.","","----","","","add another word","","----","","","I'll read `test.txt` to get the current first-line content, then append one word (\"again2\") to that line. Proceeding to read the file.","","** read** `test.txt`","","----","","","Now I'll append the word \"again2\" to the first line. I'll apply an exact in-place edit to update that line.","","** edit** `test.txt`","","`````txt"," tangram quiver saffron nebula cobalt murmur plinth zephyr ember lattice cadenza another yet extra more again"," tangram quiver saffron nebula cobalt murmur plinth zephyr ember lattice cadenza another yet extra more again again2"," "," ","","`````","","**󰻛 Created Snapshot** `57d83f55`","","----","","","**Done:** appended the word `again2` to `test.txt`.","","----","","","add another word","","----","","","I'll read `test.txt` to get the current first-line content, then append the word `again3`. Proceeding to read the file.","","** read** `test.txt`","","----","","","I'll append the word \"again3\" to the first line of `test.txt` with an exact in-place edit. Applying the change now.","","** edit** `test.txt`","","`````txt"," tangram quiver saffron nebula cobalt murmur plinth zephyr ember lattice cadenza another yet extra more again again2"," tangram quiver saffron nebula cobalt murmur plinth zephyr ember lattice cadenza another yet extra more again again2 again3"," "," ","","`````","","**󰻛 Created Snapshot** `d988cc85`","","----","","","**Done:** appended the word `again3` to `test.txt`.","",""],"actions":[{"type":"diff_revert_selected_file","args":["d988cc85565b99017d40ad8baea20225165be9d5"],"key":"R","text":"[R]evert file","range":{"from":90,"to":90},"display_line":90},{"type":"diff_revert_all","args":["d988cc85565b99017d40ad8baea20225165be9d5"],"key":"A","text":"Revert [A]ll","range":{"from":90,"to":90},"display_line":90},{"type":"diff_open","args":["d988cc85565b99017d40ad8baea20225165be9d5"],"key":"D","text":"[D]iff","range":{"from":90,"to":90},"display_line":90},{"type":"diff_revert_selected_file","args":["57d83f5596cb1f142fbc681d3d93b7184f7f73cd"],"key":"R","text":"[R]evert file","range":{"from":56,"to":56},"display_line":56},{"type":"diff_revert_all","args":["57d83f5596cb1f142fbc681d3d93b7184f7f73cd"],"key":"A","text":"Revert [A]ll","range":{"from":56,"to":56},"display_line":56},{"type":"diff_open","args":["57d83f5596cb1f142fbc681d3d93b7184f7f73cd"],"key":"D","text":"[D]iff","range":{"from":56,"to":56},"display_line":56},{"type":"diff_revert_selected_file","args":["1b6ba655c6c0d899965adff278ac6320d5fc3b12"],"key":"R","text":"[R]evert file","range":{"from":22,"to":22},"display_line":22},{"type":"diff_revert_all","args":["1b6ba655c6c0d899965adff278ac6320d5fc3b12"],"key":"A","text":"Revert [A]ll","range":{"from":22,"to":22},"display_line":22},{"type":"diff_open","args":["1b6ba655c6c0d899965adff278ac6320d5fc3b12"],"key":"D","text":"[D]iff","range":{"from":22,"to":22},"display_line":22}],"extmarks":[[1,1,0,{"virt_text_hide":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-20 15:20:02)","OpencodeHint"],[" [msg_a0234c0b7001y2o9S1jMaNVZar]","OpencodeHint"]],"virt_text_pos":"win_col","right_gravity":true,"priority":10,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text_win_col":-3}],[2,2,0,{"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_win_col":-3}],[3,3,0,{"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_win_col":-3}],[4,4,0,{"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_win_col":-3}],[5,5,0,{"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_win_col":-3}],[6,8,0,{"virt_text_hide":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-20 15:20:04)","OpencodeHint"],[" [msg_a0234c7960011LTxTvD94hfWCi]","OpencodeHint"]],"virt_text_pos":"win_col","right_gravity":true,"priority":10,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text_win_col":-3}],[7,12,0,{"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_win_col":-1}],[8,13,0,{"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_win_col":-1}],[9,14,0,{"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_win_col":-1}],[10,15,0,{"end_right_gravity":false,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"end_col":0,"hl_group":"OpencodeDiffDelete","virt_text":[["-","OpencodeDiffDelete"]],"virt_text_pos":"overlay","right_gravity":true,"priority":5000,"ns_id":3,"end_row":16,"hl_eol":true}],[11,15,0,{"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_win_col":-1}],[12,16,0,{"end_right_gravity":false,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"end_col":0,"hl_group":"OpencodeDiffAdd","virt_text":[["+","OpencodeDiffAdd"]],"virt_text_pos":"overlay","right_gravity":true,"priority":5000,"ns_id":3,"end_row":17,"hl_eol":true}],[13,16,0,{"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_win_col":-1}],[14,17,0,{"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_win_col":-1}],[15,18,0,{"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_win_col":-1}],[16,19,0,{"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_win_col":-1}],[17,20,0,{"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_win_col":-1}],[18,25,0,{"virt_text_hide":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-20 15:20:09)","OpencodeHint"],[" [msg_a0234d8fb001SXyngLjuKSuxOY]","OpencodeHint"]],"virt_text_pos":"win_col","right_gravity":true,"priority":10,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text_win_col":-3}],[19,30,0,{"virt_text_hide":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-20 15:20:11)","OpencodeHint"],[" [msg_a0234e308001SKl5bQUibp5gtI]","OpencodeHint"]],"virt_text_pos":"win_col","right_gravity":true,"priority":10,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text_win_col":-3}],[20,31,0,{"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_win_col":-3}],[21,32,0,{"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_win_col":-3}],[22,35,0,{"virt_text_hide":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-20 15:20:11)","OpencodeHint"],[" [msg_a0234e31f001m4EsQdPmY3PTtS]","OpencodeHint"]],"virt_text_pos":"win_col","right_gravity":true,"priority":10,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text_win_col":-3}],[23,42,0,{"virt_text_hide":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-20 15:20:16)","OpencodeHint"],[" [msg_a0234f482001PQbMjWc6W8s0eF]","OpencodeHint"]],"virt_text_pos":"win_col","right_gravity":true,"priority":10,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text_win_col":-3}],[24,46,0,{"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_win_col":-1}],[25,47,0,{"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_win_col":-1}],[26,48,0,{"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_win_col":-1}],[27,49,0,{"end_right_gravity":false,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"end_col":0,"hl_group":"OpencodeDiffDelete","virt_text":[["-","OpencodeDiffDelete"]],"virt_text_pos":"overlay","right_gravity":true,"priority":5000,"ns_id":3,"end_row":50,"hl_eol":true}],[28,49,0,{"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_win_col":-1}],[29,50,0,{"end_right_gravity":false,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"end_col":0,"hl_group":"OpencodeDiffAdd","virt_text":[["+","OpencodeDiffAdd"]],"virt_text_pos":"overlay","right_gravity":true,"priority":5000,"ns_id":3,"end_row":51,"hl_eol":true}],[30,50,0,{"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_win_col":-1}],[31,51,0,{"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_win_col":-1}],[32,52,0,{"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_win_col":-1}],[33,53,0,{"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_win_col":-1}],[34,54,0,{"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_win_col":-1}],[35,59,0,{"virt_text_hide":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-20 15:20:17)","OpencodeHint"],[" [msg_a0234f9c6001JCKYaca1HHwwx6]","OpencodeHint"]],"virt_text_pos":"win_col","right_gravity":true,"priority":10,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text_win_col":-3}],[36,64,0,{"virt_text_hide":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-20 15:22:29)","OpencodeHint"],[" [msg_a0236fd1c001TlwqL8fwvq529i]","OpencodeHint"]],"virt_text_pos":"win_col","right_gravity":true,"priority":10,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text_win_col":-3}],[37,65,0,{"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_win_col":-3}],[38,66,0,{"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_win_col":-3}],[39,69,0,{"virt_text_hide":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-20 15:22:29)","OpencodeHint"],[" [msg_a0236fd57001pTnTjSBdFlleCb]","OpencodeHint"]],"virt_text_pos":"win_col","right_gravity":true,"priority":10,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text_win_col":-3}],[40,76,0,{"virt_text_hide":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-20 15:22:34)","OpencodeHint"],[" [msg_a02371241001PBQAsr8Oc9hqNI]","OpencodeHint"]],"virt_text_pos":"win_col","right_gravity":true,"priority":10,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text_win_col":-3}],[41,80,0,{"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_win_col":-1}],[42,81,0,{"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_win_col":-1}],[43,82,0,{"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_win_col":-1}],[44,83,0,{"end_right_gravity":false,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"end_col":0,"hl_group":"OpencodeDiffDelete","virt_text":[["-","OpencodeDiffDelete"]],"virt_text_pos":"overlay","right_gravity":true,"priority":5000,"ns_id":3,"end_row":84,"hl_eol":true}],[45,83,0,{"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_win_col":-1}],[46,84,0,{"end_right_gravity":false,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"end_col":0,"hl_group":"OpencodeDiffAdd","virt_text":[["+","OpencodeDiffAdd"]],"virt_text_pos":"overlay","right_gravity":true,"priority":5000,"ns_id":3,"end_row":85,"hl_eol":true}],[47,84,0,{"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_win_col":-1}],[48,85,0,{"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_win_col":-1}],[49,86,0,{"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_win_col":-1}],[50,87,0,{"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_win_col":-1}],[51,88,0,{"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","right_gravity":true,"priority":4096,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text_win_col":-1}],[52,93,0,{"virt_text_hide":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-20 15:22:39)","OpencodeHint"],[" [msg_a023723d0001r87MaJThFssUw1]","OpencodeHint"]],"virt_text_pos":"win_col","right_gravity":true,"priority":10,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text_win_col":-3}]]} \ No newline at end of file diff --git a/tests/data/redo-once.expected.json b/tests/data/redo-once.expected.json index ab44dccf..982bdccb 100644 --- a/tests/data/redo-once.expected.json +++ b/tests/data/redo-once.expected.json @@ -1 +1 @@ -{"lines":["----","","","add another word","","[test.txt](test.txt)","","----","","","I'll append a single word (\"again\") to the first line of `test.txt`. Applying a precise edit to the existing line now.","","** edit** `test.txt`","","`````txt"," tangram quiver saffron nebula cobalt murmur plinth zephyr ember lattice cadenza another yet extra more"," tangram quiver saffron nebula cobalt murmur plinth zephyr ember lattice cadenza another yet extra more again"," "," ","","`````","","**󰻛 Created Snapshot** `1b6ba655`","","----","","","**Done:** added the word `again` to `test.txt`.","","----","","","add another word","","----","","","I'll read `test.txt` to get the current first-line content, then append one word (\"again2\") to that line. Proceeding to read the file.","","** read** `test.txt`","","----","","","Now I'll append the word \"again2\" to the first line. I'll apply an exact in-place edit to update that line.","","** edit** `test.txt`","","`````txt"," tangram quiver saffron nebula cobalt murmur plinth zephyr ember lattice cadenza another yet extra more again"," tangram quiver saffron nebula cobalt murmur plinth zephyr ember lattice cadenza another yet extra more again again2"," "," ","","`````","","**󰻛 Created Snapshot** `57d83f55`","","----","","","**Done:** appended the word `again2` to `test.txt`.","","----","","> 1 message reverted, 2 tool calls reverted",">","> type `/redo` to restore.",""," test.txt: +1 -1",""],"timestamp":1766431566,"actions":[{"type":"diff_revert_selected_file","key":"R","display_line":22,"range":{"to":22,"from":22},"args":["1b6ba655c6c0d899965adff278ac6320d5fc3b12"],"text":"[R]evert file"},{"type":"diff_revert_all","key":"A","display_line":22,"range":{"to":22,"from":22},"args":["1b6ba655c6c0d899965adff278ac6320d5fc3b12"],"text":"Revert [A]ll"},{"type":"diff_open","key":"D","display_line":22,"range":{"to":22,"from":22},"args":["1b6ba655c6c0d899965adff278ac6320d5fc3b12"],"text":"[D]iff"},{"type":"diff_revert_selected_file","key":"R","display_line":56,"range":{"to":56,"from":56},"args":["57d83f5596cb1f142fbc681d3d93b7184f7f73cd"],"text":"[R]evert file"},{"type":"diff_revert_all","key":"A","display_line":56,"range":{"to":56,"from":56},"args":["57d83f5596cb1f142fbc681d3d93b7184f7f73cd"],"text":"Revert [A]ll"},{"type":"diff_open","key":"D","display_line":56,"range":{"to":56,"from":56},"args":["57d83f5596cb1f142fbc681d3d93b7184f7f73cd"],"text":"[D]iff"}],"extmarks":[[1,1,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-20 15:20:02)","OpencodeHint"],[" [msg_a0234c0b7001y2o9S1jMaNVZar]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10}],[2,2,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[3,3,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[4,4,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[5,5,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[6,8,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-20 15:20:04)","OpencodeHint"],[" [msg_a0234c7960011LTxTvD94hfWCi]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10}],[7,12,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[8,13,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[9,14,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[10,15,0,{"virt_text_hide":false,"virt_text_repeat_linebreak":false,"right_gravity":true,"ns_id":3,"end_right_gravity":false,"end_col":0,"end_row":16,"hl_group":"OpencodeDiffDelete","virt_text":[["-","OpencodeDiffDelete"]],"virt_text_pos":"overlay","hl_eol":true,"priority":5000}],[11,15,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[12,16,0,{"virt_text_hide":false,"virt_text_repeat_linebreak":false,"right_gravity":true,"ns_id":3,"end_right_gravity":false,"end_col":0,"end_row":17,"hl_group":"OpencodeDiffAdd","virt_text":[["+","OpencodeDiffAdd"]],"virt_text_pos":"overlay","hl_eol":true,"priority":5000}],[13,16,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[14,17,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[15,18,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[16,19,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[17,20,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[18,25,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-20 15:20:09)","OpencodeHint"],[" [msg_a0234d8fb001SXyngLjuKSuxOY]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10}],[19,30,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-20 15:20:11)","OpencodeHint"],[" [msg_a0234e308001SKl5bQUibp5gtI]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10}],[20,31,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[21,32,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[22,35,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-20 15:20:11)","OpencodeHint"],[" [msg_a0234e31f001m4EsQdPmY3PTtS]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10}],[23,42,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-20 15:20:16)","OpencodeHint"],[" [msg_a0234f482001PQbMjWc6W8s0eF]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10}],[24,46,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[25,47,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[26,48,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[27,49,0,{"virt_text_hide":false,"virt_text_repeat_linebreak":false,"right_gravity":true,"ns_id":3,"end_right_gravity":false,"end_col":0,"end_row":50,"hl_group":"OpencodeDiffDelete","virt_text":[["-","OpencodeDiffDelete"]],"virt_text_pos":"overlay","hl_eol":true,"priority":5000}],[28,49,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[29,50,0,{"virt_text_hide":false,"virt_text_repeat_linebreak":false,"right_gravity":true,"ns_id":3,"end_right_gravity":false,"end_col":0,"end_row":51,"hl_group":"OpencodeDiffAdd","virt_text":[["+","OpencodeDiffAdd"]],"virt_text_pos":"overlay","hl_eol":true,"priority":5000}],[30,50,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[31,51,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[32,52,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[33,53,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[34,54,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1,"priority":4096}],[35,59,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-20 15:20:17)","OpencodeHint"],[" [msg_a0234f9c6001JCKYaca1HHwwx6]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10}],[36,69,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text":[["+1","OpencodeDiffAddText"]],"virt_text_pos":"win_col","virt_text_win_col":12,"priority":1000}],[37,69,0,{"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text":[["-1","OpencodeDiffDeleteText"]],"virt_text_pos":"win_col","virt_text_win_col":15,"priority":1000}]]} \ No newline at end of file +{"actions":[{"range":{"from":56,"to":56},"display_line":56,"args":["57d83f5596cb1f142fbc681d3d93b7184f7f73cd"],"text":"[R]evert file","key":"R","type":"diff_revert_selected_file"},{"range":{"from":56,"to":56},"display_line":56,"args":["57d83f5596cb1f142fbc681d3d93b7184f7f73cd"],"text":"Revert [A]ll","key":"A","type":"diff_revert_all"},{"range":{"from":56,"to":56},"display_line":56,"args":["57d83f5596cb1f142fbc681d3d93b7184f7f73cd"],"text":"[D]iff","key":"D","type":"diff_open"},{"range":{"from":22,"to":22},"display_line":22,"args":["1b6ba655c6c0d899965adff278ac6320d5fc3b12"],"text":"[R]evert file","key":"R","type":"diff_revert_selected_file"},{"range":{"from":22,"to":22},"display_line":22,"args":["1b6ba655c6c0d899965adff278ac6320d5fc3b12"],"text":"Revert [A]ll","key":"A","type":"diff_revert_all"},{"range":{"from":22,"to":22},"display_line":22,"args":["1b6ba655c6c0d899965adff278ac6320d5fc3b12"],"text":"[D]iff","key":"D","type":"diff_open"}],"timestamp":1766432127,"lines":["----","","","add another word","","[test.txt](test.txt)","","----","","","I'll append a single word (\"again\") to the first line of `test.txt`. Applying a precise edit to the existing line now.","","** edit** `test.txt`","","`````txt"," tangram quiver saffron nebula cobalt murmur plinth zephyr ember lattice cadenza another yet extra more"," tangram quiver saffron nebula cobalt murmur plinth zephyr ember lattice cadenza another yet extra more again"," "," ","","`````","","**󰻛 Created Snapshot** `1b6ba655`","","----","","","**Done:** added the word `again` to `test.txt`.","","----","","","add another word","","----","","","I'll read `test.txt` to get the current first-line content, then append one word (\"again2\") to that line. Proceeding to read the file.","","** read** `test.txt`","","----","","","Now I'll append the word \"again2\" to the first line. I'll apply an exact in-place edit to update that line.","","** edit** `test.txt`","","`````txt"," tangram quiver saffron nebula cobalt murmur plinth zephyr ember lattice cadenza another yet extra more again"," tangram quiver saffron nebula cobalt murmur plinth zephyr ember lattice cadenza another yet extra more again again2"," "," ","","`````","","**󰻛 Created Snapshot** `57d83f55`","","----","","","**Done:** appended the word `again2` to `test.txt`.","","----","","> 1 message reverted, 2 tool calls reverted",">","> type `/redo` to restore.",""," test.txt: +1 -1",""],"extmarks":[[1,1,0,{"priority":10,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-20 15:20:02)","OpencodeHint"],[" [msg_a0234c0b7001y2o9S1jMaNVZar]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[2,2,0,{"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[3,3,0,{"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[4,4,0,{"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[5,5,0,{"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[6,8,0,{"priority":10,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-20 15:20:04)","OpencodeHint"],[" [msg_a0234c7960011LTxTvD94hfWCi]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[7,12,0,{"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[8,13,0,{"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[9,14,0,{"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[10,15,0,{"priority":5000,"ns_id":3,"end_col":0,"end_row":16,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"hl_group":"OpencodeDiffDelete","virt_text":[["-","OpencodeDiffDelete"]],"virt_text_pos":"overlay","right_gravity":true}],[11,15,0,{"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[12,16,0,{"priority":5000,"ns_id":3,"end_col":0,"end_row":17,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"hl_group":"OpencodeDiffAdd","virt_text":[["+","OpencodeDiffAdd"]],"virt_text_pos":"overlay","right_gravity":true}],[13,16,0,{"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[14,17,0,{"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[15,18,0,{"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[16,19,0,{"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[17,20,0,{"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[18,25,0,{"priority":10,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-20 15:20:09)","OpencodeHint"],[" [msg_a0234d8fb001SXyngLjuKSuxOY]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[19,30,0,{"priority":10,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-20 15:20:11)","OpencodeHint"],[" [msg_a0234e308001SKl5bQUibp5gtI]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[20,31,0,{"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[21,32,0,{"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[22,35,0,{"priority":10,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-20 15:20:11)","OpencodeHint"],[" [msg_a0234e31f001m4EsQdPmY3PTtS]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[23,42,0,{"priority":10,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-20 15:20:16)","OpencodeHint"],[" [msg_a0234f482001PQbMjWc6W8s0eF]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[24,46,0,{"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[25,47,0,{"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[26,48,0,{"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[27,49,0,{"priority":5000,"ns_id":3,"end_col":0,"end_row":50,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"hl_group":"OpencodeDiffDelete","virt_text":[["-","OpencodeDiffDelete"]],"virt_text_pos":"overlay","right_gravity":true}],[28,49,0,{"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[29,50,0,{"priority":5000,"ns_id":3,"end_col":0,"end_row":51,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"virt_text_repeat_linebreak":false,"hl_group":"OpencodeDiffAdd","virt_text":[["+","OpencodeDiffAdd"]],"virt_text_pos":"overlay","right_gravity":true}],[30,50,0,{"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[31,51,0,{"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[32,52,0,{"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[33,53,0,{"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[34,54,0,{"priority":4096,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col","virt_text_win_col":-1}],[35,59,0,{"priority":10,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-5-mini","OpencodeHint"],[" (2025-10-20 15:20:17)","OpencodeHint"],[" [msg_a0234f9c6001JCKYaca1HHwwx6]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[36,69,0,{"priority":1000,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text":[["+1","OpencodeDiffAddText"]],"virt_text_pos":"win_col","virt_text_win_col":12}],[37,69,0,{"priority":1000,"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text":[["-1","OpencodeDiffDeleteText"]],"virt_text_pos":"win_col","virt_text_win_col":15}]]} \ No newline at end of file diff --git a/tests/data/revert.expected.json b/tests/data/revert.expected.json index c8d769e8..e3c9157b 100644 --- a/tests/data/revert.expected.json +++ b/tests/data/revert.expected.json @@ -1 +1 @@ -{"lines":["----","","","write 10 random words","","[poem.md](poem.md)","","----","","","Here are 10 random words:","","1. Lantern ","2. Whisper ","3. Velvet ","4. Orbit ","5. Timber ","6. Quiver ","7. Mosaic ","8. Ember ","9. Spiral ","10. Glimmer","","Let me know if you need them in a specific format or want to use them in a file!","","----","","","write 10 random words to the file","","----","","","I will write 10 random words to poem.md, each on a new line.","","Proceeding to update the file now.","","** write** `poem.md`","","`````markdown","Lantern","Whisper","Velvet","Orbit","Timber","Quiver","Mosaic","Ember","Spiral","Glimmer","","`````","","**󰻛 Created Snapshot** `c410b2b4`","","----","","","The file poem.md has been updated with 10 random words, each on a new line. Task complete! If you need anything else, let me know.","","----","","> 2 messages reverted, 4 tool calls reverted",">","> type `/redo` to restore.",""," poem.md: -20",""],"timestamp":1766431566,"actions":[{"display_line":53,"text":"[R]evert file","key":"R","type":"diff_revert_selected_file","args":["c410b2b4024de020aea223c5248eec89216de53f"],"range":{"to":53,"from":53}},{"display_line":53,"text":"Revert [A]ll","key":"A","type":"diff_revert_all","args":["c410b2b4024de020aea223c5248eec89216de53f"],"range":{"to":53,"from":53}},{"display_line":53,"text":"[D]iff","key":"D","type":"diff_open","args":["c410b2b4024de020aea223c5248eec89216de53f"],"range":{"to":53,"from":53}}],"extmarks":[[1,1,0,{"virt_text_repeat_linebreak":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-19 17:50:43)","OpencodeHint"],[" [msg_9fd985573001fk1Xlot7uyDgTo]","OpencodeHint"]],"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-3,"priority":10,"virt_text_pos":"win_col","ns_id":3}],[2,2,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-3,"priority":4096,"virt_text_pos":"win_col","ns_id":3}],[3,3,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-3,"priority":4096,"virt_text_pos":"win_col","ns_id":3}],[4,4,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-3,"priority":4096,"virt_text_pos":"win_col","ns_id":3}],[5,5,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-3,"priority":4096,"virt_text_pos":"win_col","ns_id":3}],[6,8,0,{"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-4.1","OpencodeHint"],[" (2025-10-19 17:50:44)","OpencodeHint"],[" [msg_9fd985a4d001wOX3Op7CpFiCTq]","OpencodeHint"]],"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-3,"priority":10,"virt_text_pos":"win_col","ns_id":3}],[7,26,0,{"virt_text_repeat_linebreak":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-19 17:50:57)","OpencodeHint"],[" [msg_9fd988c92001w0IZCVPQsN6xa9]","OpencodeHint"]],"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-3,"priority":10,"virt_text_pos":"win_col","ns_id":3}],[8,27,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-3,"priority":4096,"virt_text_pos":"win_col","ns_id":3}],[9,28,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-3,"priority":4096,"virt_text_pos":"win_col","ns_id":3}],[10,31,0,{"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-4.1","OpencodeHint"],[" (2025-10-19 17:50:57)","OpencodeHint"],[" [msg_9fd988ca7001lgaGttpI4YeGSA]","OpencodeHint"]],"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-3,"priority":10,"virt_text_pos":"win_col","ns_id":3}],[11,37,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","ns_id":3}],[12,38,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","ns_id":3}],[13,39,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","ns_id":3}],[14,40,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","ns_id":3}],[15,41,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","ns_id":3}],[16,42,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","ns_id":3}],[17,43,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","ns_id":3}],[18,44,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","ns_id":3}],[19,45,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","ns_id":3}],[20,46,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","ns_id":3}],[21,47,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","ns_id":3}],[22,48,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","ns_id":3}],[23,49,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","ns_id":3}],[24,50,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","ns_id":3}],[25,51,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-1,"priority":4096,"virt_text_pos":"win_col","ns_id":3}],[26,56,0,{"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-4.1","OpencodeHint"],[" (2025-10-19 17:50:59)","OpencodeHint"],[" [msg_9fd98942d001elqd2sd8CZeOoA]","OpencodeHint"]],"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":-3,"priority":10,"virt_text_pos":"win_col","ns_id":3}],[27,66,0,{"virt_text_repeat_linebreak":false,"virt_text":[["-20","OpencodeDiffDeleteText"]],"right_gravity":true,"virt_text_hide":false,"virt_text_win_col":11,"priority":1000,"virt_text_pos":"win_col","ns_id":3}]]} \ No newline at end of file +{"extmarks":[[1,1,0,{"virt_text_repeat_linebreak":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-19 17:50:43)","OpencodeHint"],[" [msg_9fd985573001fk1Xlot7uyDgTo]","OpencodeHint"]],"ns_id":3,"virt_text_win_col":-3,"priority":10,"virt_text_hide":false,"right_gravity":true,"virt_text_pos":"win_col"}],[2,2,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3,"virt_text_win_col":-3,"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_pos":"win_col"}],[3,3,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3,"virt_text_win_col":-3,"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_pos":"win_col"}],[4,4,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3,"virt_text_win_col":-3,"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_pos":"win_col"}],[5,5,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3,"virt_text_win_col":-3,"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_pos":"win_col"}],[6,8,0,{"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-4.1","OpencodeHint"],[" (2025-10-19 17:50:44)","OpencodeHint"],[" [msg_9fd985a4d001wOX3Op7CpFiCTq]","OpencodeHint"]],"ns_id":3,"virt_text_win_col":-3,"priority":10,"virt_text_hide":false,"right_gravity":true,"virt_text_pos":"win_col"}],[7,26,0,{"virt_text_repeat_linebreak":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-19 17:50:57)","OpencodeHint"],[" [msg_9fd988c92001w0IZCVPQsN6xa9]","OpencodeHint"]],"ns_id":3,"virt_text_win_col":-3,"priority":10,"virt_text_hide":false,"right_gravity":true,"virt_text_pos":"win_col"}],[8,27,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3,"virt_text_win_col":-3,"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_pos":"win_col"}],[9,28,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3,"virt_text_win_col":-3,"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_pos":"win_col"}],[10,31,0,{"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-4.1","OpencodeHint"],[" (2025-10-19 17:50:57)","OpencodeHint"],[" [msg_9fd988ca7001lgaGttpI4YeGSA]","OpencodeHint"]],"ns_id":3,"virt_text_win_col":-3,"priority":10,"virt_text_hide":false,"right_gravity":true,"virt_text_pos":"win_col"}],[11,37,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_pos":"win_col"}],[12,38,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_pos":"win_col"}],[13,39,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_pos":"win_col"}],[14,40,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_pos":"win_col"}],[15,41,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_pos":"win_col"}],[16,42,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_pos":"win_col"}],[17,43,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_pos":"win_col"}],[18,44,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_pos":"win_col"}],[19,45,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_pos":"win_col"}],[20,46,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_pos":"win_col"}],[21,47,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_pos":"win_col"}],[22,48,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_pos":"win_col"}],[23,49,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_pos":"win_col"}],[24,50,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_pos":"win_col"}],[25,51,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_pos":"win_col"}],[26,56,0,{"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" gpt-4.1","OpencodeHint"],[" (2025-10-19 17:50:59)","OpencodeHint"],[" [msg_9fd98942d001elqd2sd8CZeOoA]","OpencodeHint"]],"ns_id":3,"virt_text_win_col":-3,"priority":10,"virt_text_hide":false,"right_gravity":true,"virt_text_pos":"win_col"}],[27,66,0,{"virt_text_repeat_linebreak":false,"virt_text":[["-20","OpencodeDiffDeleteText"]],"ns_id":3,"virt_text_win_col":11,"priority":1000,"virt_text_hide":false,"right_gravity":true,"virt_text_pos":"win_col"}]],"actions":[{"key":"R","range":{"from":53,"to":53},"type":"diff_revert_selected_file","args":["c410b2b4024de020aea223c5248eec89216de53f"],"text":"[R]evert file","display_line":53},{"key":"A","range":{"from":53,"to":53},"type":"diff_revert_all","args":["c410b2b4024de020aea223c5248eec89216de53f"],"text":"Revert [A]ll","display_line":53},{"key":"D","range":{"from":53,"to":53},"type":"diff_open","args":["c410b2b4024de020aea223c5248eec89216de53f"],"text":"[D]iff","display_line":53}],"lines":["----","","","write 10 random words","","[poem.md](poem.md)","","----","","","Here are 10 random words:","","1. Lantern ","2. Whisper ","3. Velvet ","4. Orbit ","5. Timber ","6. Quiver ","7. Mosaic ","8. Ember ","9. Spiral ","10. Glimmer","","Let me know if you need them in a specific format or want to use them in a file!","","----","","","write 10 random words to the file","","----","","","I will write 10 random words to poem.md, each on a new line.","","Proceeding to update the file now.","","** write** `poem.md`","","`````markdown","Lantern","Whisper","Velvet","Orbit","Timber","Quiver","Mosaic","Ember","Spiral","Glimmer","","`````","","**󰻛 Created Snapshot** `c410b2b4`","","----","","","The file poem.md has been updated with 10 random words, each on a new line. Task complete! If you need anything else, let me know.","","----","","> 2 messages reverted, 4 tool calls reverted",">","> type `/redo` to restore.",""," poem.md: -20",""],"timestamp":1766432127} \ No newline at end of file diff --git a/tests/data/selection.expected.json b/tests/data/selection.expected.json index c4ec3045..159d58ab 100644 --- a/tests/data/selection.expected.json +++ b/tests/data/selection.expected.json @@ -1 +1 @@ -{"timestamp":1766431567,"actions":[],"lines":["----","","","here's some context","","```txt","this is a string","```","","```txt","this is a selection test","```","","[diff-test.txt](diff-test.txt)","","----","","","I can see the file `/Users/cam/tmp/a/diff-test.txt` contains \"this is a string\" on line 1.","","The two selection contexts you provided show:","1. Current content: \"this is a string\"","2. Expected/desired content: \"this is a selection test\"","","Since I'm in read-only mode, I can only observe that there's a difference between what's currently in the file and what one of the selections indicates should be there.","",""],"extmarks":[[1,1,0,{"priority":10,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-18 05:02:28)","OpencodeHint"],[" [msg_9f5b29fea001z6jYXF7CG9omHa]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[2,2,0,{"priority":4096,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[3,3,0,{"priority":4096,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[4,4,0,{"priority":4096,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[5,5,0,{"priority":4096,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[6,6,0,{"priority":4096,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[7,7,0,{"priority":4096,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[8,8,0,{"priority":4096,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[9,8,0,{"priority":4096,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[10,9,0,{"priority":4096,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[11,10,0,{"priority":4096,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[12,11,0,{"priority":4096,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[13,12,0,{"priority":4096,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[14,12,0,{"priority":4096,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[15,13,0,{"priority":4096,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text_hide":false,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3}],[16,16,0,{"priority":10,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text_hide":false,"right_gravity":true,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-18 05:02:28)","OpencodeHint"],[" [msg_9f5b2a039001xop8ITmXQq0Gjh]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3}]]} \ No newline at end of file +{"timestamp":1766432128,"actions":[],"lines":["----","","","here's some context","","```txt","this is a string","```","","```txt","this is a selection test","```","","[diff-test.txt](diff-test.txt)","","----","","","I can see the file `/Users/cam/tmp/a/diff-test.txt` contains \"this is a string\" on line 1.","","The two selection contexts you provided show:","1. Current content: \"this is a string\"","2. Expected/desired content: \"this is a selection test\"","","Since I'm in read-only mode, I can only observe that there's a difference between what's currently in the file and what one of the selections indicates should be there.","",""],"extmarks":[[1,1,0,{"virt_text_repeat_linebreak":false,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-18 05:02:28)","OpencodeHint"],[" [msg_9f5b29fea001z6jYXF7CG9omHa]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10,"right_gravity":true}],[2,2,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"right_gravity":true}],[3,3,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"right_gravity":true}],[4,4,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"right_gravity":true}],[5,5,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"right_gravity":true}],[6,6,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"right_gravity":true}],[7,7,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"right_gravity":true}],[8,8,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"right_gravity":true}],[9,8,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"right_gravity":true}],[10,9,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"right_gravity":true}],[11,10,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"right_gravity":true}],[12,11,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"right_gravity":true}],[13,12,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"right_gravity":true}],[14,12,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"right_gravity":true}],[15,13,0,{"virt_text_repeat_linebreak":true,"virt_text_hide":false,"ns_id":3,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096,"right_gravity":true}],[16,16,0,{"virt_text_repeat_linebreak":false,"virt_text_hide":false,"ns_id":3,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-18 05:02:28)","OpencodeHint"],[" [msg_9f5b2a039001xop8ITmXQq0Gjh]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10,"right_gravity":true}]]} \ No newline at end of file diff --git a/tests/data/shifting-and-multiple-perms.expected.json b/tests/data/shifting-and-multiple-perms.expected.json index f0764559..46281e17 100644 --- a/tests/data/shifting-and-multiple-perms.expected.json +++ b/tests/data/shifting-and-multiple-perms.expected.json @@ -1 +1 @@ -{"timestamp":1766431567,"actions":[],"lines":["----","","","no, i want the extra line added when i've streamed the most recent part but i don't want it still there when i add the next part. i.e. i want an extra blank line at the end","","[lua/opencode/ui/renderer.lua](lua/opencode/ui/renderer.lua)","","----","","","Ah, I understand now! You want:","1. An extra blank line at the very end of the buffer when content has been streamed","2. But when **new** content is about to be added, remove that extra blank line first (so the new content doesn't have an awkward gap above it)","","This is a \"trailing spacer\" that should only exist when we're \"done\" with the current output, but gets removed before adding more.","","Here's the approach:","","## Solution","","Add tracking for whether a trailing blank line exists, and:","- **Add** a blank line after writing new content (in `_write_formatted_data`)","- **Remove** the trailing blank line before writing new content (also in `_write_formatted_data`)","","### Changes needed in `renderer.lua`:","","1. **Add state tracking** (after line 14):"," ```lua"," M._has_trailing_line = false"," ```","","2. **Reset the flag** in `M.reset()` (after line 21):"," ```lua"," M._has_trailing_line = false"," ```","","3. **Modify `_write_formatted_data`** (around line 247-276):"," - Before writing: remove trailing line if it exists"," - After writing: add a new trailing line"," "," ```lua"," function M._write_formatted_data(formatted_data)"," local buf = state.windows.output_buf"," local start_line = output_window.get_buf_line_count()"," "," -- Remove trailing blank line before adding new content"," if M._has_trailing_line and start_line > 0 then"," output_window.set_lines({}, start_line - 1, start_line)"," start_line = start_line - 1"," M._has_trailing_line = false"," end"," "," local new_lines = formatted_data.lines"," local extmarks = formatted_data.extmarks"," "," if #new_lines == 0 or not buf then"," return nil"," end"," "," -- [existing action extraction code...]"," "," output_window.set_lines(new_lines, start_line)"," output_window.set_extmarks(extmarks, start_line)"," "," -- Add trailing blank line after writing"," local end_line = start_line + #new_lines"," output_window.set_lines({''}, end_line)"," M._has_trailing_line = true"," "," return {"," line_start = start_line,"," line_end = start_line + #new_lines - 1,"," }"," end"," ```","","This way:","- ✅ Extra blank line appears after streaming content","- ✅ Gets removed automatically before next content is added","- ✅ No gap between messages","- ✅ Always has visual spacing at the bottom","","----","","","but i'd only want to do that for things added to the end","","----","","","Ah yes, you're right! The trailing blank line should only be added/removed when writing to the **end** of the buffer, not when doing replacements in the middle (like `_replace_part_in_buffer`).","","Let me trace through the code:","","1. **`_write_formatted_data`** - writes at end (line 247-276)","2. **`_insert_part_to_buffer`** - calls `_write_formatted_data`, so writes at end (line 282-300)","3. **`_replace_part_in_buffer`** - replaces in middle of buffer (line 307-353)","","So the logic should be:","- In **`_write_formatted_data`**: Remove trailing line before writing (if exists), then add it back after","- In **`_replace_part_in_buffer`**: Don't touch the trailing line at all","- In **`render_output`**: This sets the entire buffer, so no trailing line management needed","","The key insight is that `_write_formatted_data` is specifically for appending to the end (line 249: `start_line = output_window.get_buf_line_count()`), so that's the only place where we need to:","1. Remove the trailing blank line first (if it exists)","2. Write the new content","3. Add a new trailing blank line","","Does that match what you want? The trailing line only exists at the very end, and only gets managed when appending new content to the end.","","----","","","yes","","----","","","** edit** `renderer.lua`","","** edit** `renderer.lua`","","** edit** `renderer.lua`","","`````lua"," ---@return {line_start: integer, line_end: integer}? Range where data was written"," function M._write_formatted_data(formatted_data)"," local buf = state.windows.output_buf"," local start_line = output_window.get_buf_line_count()"," "," -- Remove trailing blank line before adding new content"," if M._has_trailing_line and start_line > 0 then"," output_window.set_lines({}, start_line - 1, start_line)"," start_line = start_line - 1"," M._has_trailing_line = false"," end"," "," local new_lines = formatted_data.lines"," local extmarks = formatted_data.extmarks"," "," if #new_lines == 0 or not buf then","@@ -268,8 +276,13 @@"," "," output_window.set_lines(new_lines, start_line)"," output_window.set_extmarks(extmarks, start_line)"," "," -- Add trailing blank line after writing"," local end_line = start_line + #new_lines"," output_window.set_lines({''}, end_line)"," M._has_trailing_line = true"," "," return {"," line_start = start_line,"," line_end = start_line + #new_lines - 1,"," }","","`````","","> [!WARNING] Permission required to run this tool.",">","> Accept `a` Always `A` Deny `d`","",""],"extmarks":[[1,1,0,{"priority":10,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-17 01:05:49)","OpencodeHint"],[" [msg_9efb39d68001J2h30a50B2774b]","OpencodeHint"]],"virt_text_repeat_linebreak":false,"virt_text_pos":"win_col","virt_text_win_col":-3}],[2,2,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-3}],[3,3,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-3}],[4,4,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-3}],[5,5,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-3}],[6,8,0,{"priority":10,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-17 01:05:50)","OpencodeHint"],[" [msg_9efb39dc3002f81rMRqF2WO1UU]","OpencodeHint"]],"virt_text_repeat_linebreak":false,"virt_text_pos":"win_col","virt_text_win_col":-3}],[7,83,0,{"priority":10,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-17 01:07:23)","OpencodeHint"],[" [msg_9efb50a0b001WFK7AMDV45cF8Z]","OpencodeHint"]],"virt_text_repeat_linebreak":false,"virt_text_pos":"win_col","virt_text_win_col":-3}],[8,84,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-3}],[9,85,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-3}],[10,88,0,{"priority":10,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-17 01:07:23)","OpencodeHint"],[" [msg_9efb50a2a002dzMgbQnasd86o1]","OpencodeHint"]],"virt_text_repeat_linebreak":false,"virt_text_pos":"win_col","virt_text_win_col":-3}],[11,111,0,{"priority":10,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-17 01:08:01)","OpencodeHint"],[" [msg_9efb59d93001LSm9y0DS9p8cP6]","OpencodeHint"]],"virt_text_repeat_linebreak":false,"virt_text_pos":"win_col","virt_text_win_col":-3}],[12,112,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-3}],[13,113,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-3}],[14,116,0,{"priority":10,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-17 01:08:01)","OpencodeHint"],[" [msg_9efb59db4002uWmyFRTjRIhIaQ]","OpencodeHint"]],"virt_text_repeat_linebreak":false,"virt_text_pos":"win_col","virt_text_win_col":-3}],[15,122,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[16,123,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[17,124,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[18,125,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[19,126,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[20,127,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[21,128,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[22,129,0,{"priority":5000,"ns_id":3,"end_col":0,"right_gravity":true,"end_row":130,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"hl_group":"OpencodeDiffAdd","virt_text_repeat_linebreak":false,"virt_text_pos":"overlay","virt_text":[["+","OpencodeDiffAdd"]]}],[23,129,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[24,130,0,{"priority":5000,"ns_id":3,"end_col":0,"right_gravity":true,"end_row":131,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"hl_group":"OpencodeDiffAdd","virt_text_repeat_linebreak":false,"virt_text_pos":"overlay","virt_text":[["+","OpencodeDiffAdd"]]}],[25,130,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[26,131,0,{"priority":5000,"ns_id":3,"end_col":0,"right_gravity":true,"end_row":132,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"hl_group":"OpencodeDiffAdd","virt_text_repeat_linebreak":false,"virt_text_pos":"overlay","virt_text":[["+","OpencodeDiffAdd"]]}],[27,131,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[28,132,0,{"priority":5000,"ns_id":3,"end_col":0,"right_gravity":true,"end_row":133,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"hl_group":"OpencodeDiffAdd","virt_text_repeat_linebreak":false,"virt_text_pos":"overlay","virt_text":[["+","OpencodeDiffAdd"]]}],[29,132,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[30,133,0,{"priority":5000,"ns_id":3,"end_col":0,"right_gravity":true,"end_row":134,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"hl_group":"OpencodeDiffAdd","virt_text_repeat_linebreak":false,"virt_text_pos":"overlay","virt_text":[["+","OpencodeDiffAdd"]]}],[31,133,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[32,134,0,{"priority":5000,"ns_id":3,"end_col":0,"right_gravity":true,"end_row":135,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"hl_group":"OpencodeDiffAdd","virt_text_repeat_linebreak":false,"virt_text_pos":"overlay","virt_text":[["+","OpencodeDiffAdd"]]}],[33,134,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[34,135,0,{"priority":5000,"ns_id":3,"end_col":0,"right_gravity":true,"end_row":136,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"hl_group":"OpencodeDiffAdd","virt_text_repeat_linebreak":false,"virt_text_pos":"overlay","virt_text":[["+","OpencodeDiffAdd"]]}],[35,135,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[36,136,0,{"priority":5000,"ns_id":3,"end_col":0,"right_gravity":true,"end_row":137,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"hl_group":"OpencodeDiffAdd","virt_text_repeat_linebreak":false,"virt_text_pos":"overlay","virt_text":[["+","OpencodeDiffAdd"]]}],[37,136,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[38,137,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[39,138,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[40,139,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[41,140,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[42,141,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[43,142,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[44,143,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[45,144,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[46,145,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[47,146,0,{"priority":5000,"ns_id":3,"end_col":0,"right_gravity":true,"end_row":147,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"hl_group":"OpencodeDiffAdd","virt_text_repeat_linebreak":false,"virt_text_pos":"overlay","virt_text":[["+","OpencodeDiffAdd"]]}],[48,146,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[49,147,0,{"priority":5000,"ns_id":3,"end_col":0,"right_gravity":true,"end_row":148,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"hl_group":"OpencodeDiffAdd","virt_text_repeat_linebreak":false,"virt_text_pos":"overlay","virt_text":[["+","OpencodeDiffAdd"]]}],[50,147,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[51,148,0,{"priority":5000,"ns_id":3,"end_col":0,"right_gravity":true,"end_row":149,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"hl_group":"OpencodeDiffAdd","virt_text_repeat_linebreak":false,"virt_text_pos":"overlay","virt_text":[["+","OpencodeDiffAdd"]]}],[52,148,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[53,149,0,{"priority":5000,"ns_id":3,"end_col":0,"right_gravity":true,"end_row":150,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"hl_group":"OpencodeDiffAdd","virt_text_repeat_linebreak":false,"virt_text_pos":"overlay","virt_text":[["+","OpencodeDiffAdd"]]}],[54,149,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[55,150,0,{"priority":5000,"ns_id":3,"end_col":0,"right_gravity":true,"end_row":151,"hl_eol":true,"end_right_gravity":false,"virt_text_hide":false,"hl_group":"OpencodeDiffAdd","virt_text_repeat_linebreak":false,"virt_text_pos":"overlay","virt_text":[["+","OpencodeDiffAdd"]]}],[56,150,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[57,151,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[58,152,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[59,153,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[60,154,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[61,155,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[62,156,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[63,157,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[64,158,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[65,159,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[66,160,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}],[67,161,0,{"priority":4096,"ns_id":3,"right_gravity":true,"virt_text_hide":false,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-1}]]} \ No newline at end of file +{"extmarks":[[1,1,0,{"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_repeat_linebreak":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-17 01:05:49)","OpencodeHint"],[" [msg_9efb39d68001J2h30a50B2774b]","OpencodeHint"]],"ns_id":3,"virt_text_win_col":-3,"priority":10,"right_gravity":true}],[2,2,0,{"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3,"virt_text_win_col":-3,"priority":4096,"right_gravity":true}],[3,3,0,{"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3,"virt_text_win_col":-3,"priority":4096,"right_gravity":true}],[4,4,0,{"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3,"virt_text_win_col":-3,"priority":4096,"right_gravity":true}],[5,5,0,{"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3,"virt_text_win_col":-3,"priority":4096,"right_gravity":true}],[6,8,0,{"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-17 01:05:50)","OpencodeHint"],[" [msg_9efb39dc3002f81rMRqF2WO1UU]","OpencodeHint"]],"ns_id":3,"virt_text_win_col":-3,"priority":10,"right_gravity":true}],[7,83,0,{"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_repeat_linebreak":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-17 01:07:23)","OpencodeHint"],[" [msg_9efb50a0b001WFK7AMDV45cF8Z]","OpencodeHint"]],"ns_id":3,"virt_text_win_col":-3,"priority":10,"right_gravity":true}],[8,84,0,{"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3,"virt_text_win_col":-3,"priority":4096,"right_gravity":true}],[9,85,0,{"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3,"virt_text_win_col":-3,"priority":4096,"right_gravity":true}],[10,88,0,{"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-17 01:07:23)","OpencodeHint"],[" [msg_9efb50a2a002dzMgbQnasd86o1]","OpencodeHint"]],"ns_id":3,"virt_text_win_col":-3,"priority":10,"right_gravity":true}],[11,111,0,{"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_repeat_linebreak":false,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-17 01:08:01)","OpencodeHint"],[" [msg_9efb59d93001LSm9y0DS9p8cP6]","OpencodeHint"]],"ns_id":3,"virt_text_win_col":-3,"priority":10,"right_gravity":true}],[12,112,0,{"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3,"virt_text_win_col":-3,"priority":4096,"right_gravity":true}],[13,113,0,{"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"ns_id":3,"virt_text_win_col":-3,"priority":4096,"right_gravity":true}],[14,116,0,{"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-17 01:08:01)","OpencodeHint"],[" [msg_9efb59db4002uWmyFRTjRIhIaQ]","OpencodeHint"]],"ns_id":3,"virt_text_win_col":-3,"priority":10,"right_gravity":true}],[15,122,0,{"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"right_gravity":true}],[16,123,0,{"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"right_gravity":true}],[17,124,0,{"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"right_gravity":true}],[18,125,0,{"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"right_gravity":true}],[19,126,0,{"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"right_gravity":true}],[20,127,0,{"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"right_gravity":true}],[21,128,0,{"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"right_gravity":true}],[22,129,0,{"virt_text_hide":false,"hl_group":"OpencodeDiffAdd","virt_text":[["+","OpencodeDiffAdd"]],"ns_id":3,"priority":5000,"virt_text_repeat_linebreak":false,"right_gravity":true,"virt_text_pos":"overlay","end_col":0,"end_row":130,"hl_eol":true,"end_right_gravity":false}],[23,129,0,{"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"right_gravity":true}],[24,130,0,{"virt_text_hide":false,"hl_group":"OpencodeDiffAdd","virt_text":[["+","OpencodeDiffAdd"]],"ns_id":3,"priority":5000,"virt_text_repeat_linebreak":false,"right_gravity":true,"virt_text_pos":"overlay","end_col":0,"end_row":131,"hl_eol":true,"end_right_gravity":false}],[25,130,0,{"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"right_gravity":true}],[26,131,0,{"virt_text_hide":false,"hl_group":"OpencodeDiffAdd","virt_text":[["+","OpencodeDiffAdd"]],"ns_id":3,"priority":5000,"virt_text_repeat_linebreak":false,"right_gravity":true,"virt_text_pos":"overlay","end_col":0,"end_row":132,"hl_eol":true,"end_right_gravity":false}],[27,131,0,{"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"right_gravity":true}],[28,132,0,{"virt_text_hide":false,"hl_group":"OpencodeDiffAdd","virt_text":[["+","OpencodeDiffAdd"]],"ns_id":3,"priority":5000,"virt_text_repeat_linebreak":false,"right_gravity":true,"virt_text_pos":"overlay","end_col":0,"end_row":133,"hl_eol":true,"end_right_gravity":false}],[29,132,0,{"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"right_gravity":true}],[30,133,0,{"virt_text_hide":false,"hl_group":"OpencodeDiffAdd","virt_text":[["+","OpencodeDiffAdd"]],"ns_id":3,"priority":5000,"virt_text_repeat_linebreak":false,"right_gravity":true,"virt_text_pos":"overlay","end_col":0,"end_row":134,"hl_eol":true,"end_right_gravity":false}],[31,133,0,{"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"right_gravity":true}],[32,134,0,{"virt_text_hide":false,"hl_group":"OpencodeDiffAdd","virt_text":[["+","OpencodeDiffAdd"]],"ns_id":3,"priority":5000,"virt_text_repeat_linebreak":false,"right_gravity":true,"virt_text_pos":"overlay","end_col":0,"end_row":135,"hl_eol":true,"end_right_gravity":false}],[33,134,0,{"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"right_gravity":true}],[34,135,0,{"virt_text_hide":false,"hl_group":"OpencodeDiffAdd","virt_text":[["+","OpencodeDiffAdd"]],"ns_id":3,"priority":5000,"virt_text_repeat_linebreak":false,"right_gravity":true,"virt_text_pos":"overlay","end_col":0,"end_row":136,"hl_eol":true,"end_right_gravity":false}],[35,135,0,{"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"right_gravity":true}],[36,136,0,{"virt_text_hide":false,"hl_group":"OpencodeDiffAdd","virt_text":[["+","OpencodeDiffAdd"]],"ns_id":3,"priority":5000,"virt_text_repeat_linebreak":false,"right_gravity":true,"virt_text_pos":"overlay","end_col":0,"end_row":137,"hl_eol":true,"end_right_gravity":false}],[37,136,0,{"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"right_gravity":true}],[38,137,0,{"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"right_gravity":true}],[39,138,0,{"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"right_gravity":true}],[40,139,0,{"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"right_gravity":true}],[41,140,0,{"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"right_gravity":true}],[42,141,0,{"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"right_gravity":true}],[43,142,0,{"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"right_gravity":true}],[44,143,0,{"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"right_gravity":true}],[45,144,0,{"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"right_gravity":true}],[46,145,0,{"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"right_gravity":true}],[47,146,0,{"virt_text_hide":false,"hl_group":"OpencodeDiffAdd","virt_text":[["+","OpencodeDiffAdd"]],"ns_id":3,"priority":5000,"virt_text_repeat_linebreak":false,"right_gravity":true,"virt_text_pos":"overlay","end_col":0,"end_row":147,"hl_eol":true,"end_right_gravity":false}],[48,146,0,{"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"right_gravity":true}],[49,147,0,{"virt_text_hide":false,"hl_group":"OpencodeDiffAdd","virt_text":[["+","OpencodeDiffAdd"]],"ns_id":3,"priority":5000,"virt_text_repeat_linebreak":false,"right_gravity":true,"virt_text_pos":"overlay","end_col":0,"end_row":148,"hl_eol":true,"end_right_gravity":false}],[50,147,0,{"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"right_gravity":true}],[51,148,0,{"virt_text_hide":false,"hl_group":"OpencodeDiffAdd","virt_text":[["+","OpencodeDiffAdd"]],"ns_id":3,"priority":5000,"virt_text_repeat_linebreak":false,"right_gravity":true,"virt_text_pos":"overlay","end_col":0,"end_row":149,"hl_eol":true,"end_right_gravity":false}],[52,148,0,{"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"right_gravity":true}],[53,149,0,{"virt_text_hide":false,"hl_group":"OpencodeDiffAdd","virt_text":[["+","OpencodeDiffAdd"]],"ns_id":3,"priority":5000,"virt_text_repeat_linebreak":false,"right_gravity":true,"virt_text_pos":"overlay","end_col":0,"end_row":150,"hl_eol":true,"end_right_gravity":false}],[54,149,0,{"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"right_gravity":true}],[55,150,0,{"virt_text_hide":false,"hl_group":"OpencodeDiffAdd","virt_text":[["+","OpencodeDiffAdd"]],"ns_id":3,"priority":5000,"virt_text_repeat_linebreak":false,"right_gravity":true,"virt_text_pos":"overlay","end_col":0,"end_row":151,"hl_eol":true,"end_right_gravity":false}],[56,150,0,{"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"right_gravity":true}],[57,151,0,{"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"right_gravity":true}],[58,152,0,{"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"right_gravity":true}],[59,153,0,{"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"right_gravity":true}],[60,154,0,{"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"right_gravity":true}],[61,155,0,{"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"right_gravity":true}],[62,156,0,{"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"right_gravity":true}],[63,157,0,{"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"right_gravity":true}],[64,158,0,{"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"right_gravity":true}],[65,159,0,{"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"right_gravity":true}],[66,160,0,{"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"right_gravity":true}],[67,161,0,{"virt_text_hide":false,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_win_col":-1,"priority":4096,"right_gravity":true}]],"actions":[],"timestamp":1766432128,"lines":["----","","","no, i want the extra line added when i've streamed the most recent part but i don't want it still there when i add the next part. i.e. i want an extra blank line at the end","","[lua/opencode/ui/renderer.lua](lua/opencode/ui/renderer.lua)","","----","","","Ah, I understand now! You want:","1. An extra blank line at the very end of the buffer when content has been streamed","2. But when **new** content is about to be added, remove that extra blank line first (so the new content doesn't have an awkward gap above it)","","This is a \"trailing spacer\" that should only exist when we're \"done\" with the current output, but gets removed before adding more.","","Here's the approach:","","## Solution","","Add tracking for whether a trailing blank line exists, and:","- **Add** a blank line after writing new content (in `_write_formatted_data`)","- **Remove** the trailing blank line before writing new content (also in `_write_formatted_data`)","","### Changes needed in `renderer.lua`:","","1. **Add state tracking** (after line 14):"," ```lua"," M._has_trailing_line = false"," ```","","2. **Reset the flag** in `M.reset()` (after line 21):"," ```lua"," M._has_trailing_line = false"," ```","","3. **Modify `_write_formatted_data`** (around line 247-276):"," - Before writing: remove trailing line if it exists"," - After writing: add a new trailing line"," "," ```lua"," function M._write_formatted_data(formatted_data)"," local buf = state.windows.output_buf"," local start_line = output_window.get_buf_line_count()"," "," -- Remove trailing blank line before adding new content"," if M._has_trailing_line and start_line > 0 then"," output_window.set_lines({}, start_line - 1, start_line)"," start_line = start_line - 1"," M._has_trailing_line = false"," end"," "," local new_lines = formatted_data.lines"," local extmarks = formatted_data.extmarks"," "," if #new_lines == 0 or not buf then"," return nil"," end"," "," -- [existing action extraction code...]"," "," output_window.set_lines(new_lines, start_line)"," output_window.set_extmarks(extmarks, start_line)"," "," -- Add trailing blank line after writing"," local end_line = start_line + #new_lines"," output_window.set_lines({''}, end_line)"," M._has_trailing_line = true"," "," return {"," line_start = start_line,"," line_end = start_line + #new_lines - 1,"," }"," end"," ```","","This way:","- ✅ Extra blank line appears after streaming content","- ✅ Gets removed automatically before next content is added","- ✅ No gap between messages","- ✅ Always has visual spacing at the bottom","","----","","","but i'd only want to do that for things added to the end","","----","","","Ah yes, you're right! The trailing blank line should only be added/removed when writing to the **end** of the buffer, not when doing replacements in the middle (like `_replace_part_in_buffer`).","","Let me trace through the code:","","1. **`_write_formatted_data`** - writes at end (line 247-276)","2. **`_insert_part_to_buffer`** - calls `_write_formatted_data`, so writes at end (line 282-300)","3. **`_replace_part_in_buffer`** - replaces in middle of buffer (line 307-353)","","So the logic should be:","- In **`_write_formatted_data`**: Remove trailing line before writing (if exists), then add it back after","- In **`_replace_part_in_buffer`**: Don't touch the trailing line at all","- In **`render_output`**: This sets the entire buffer, so no trailing line management needed","","The key insight is that `_write_formatted_data` is specifically for appending to the end (line 249: `start_line = output_window.get_buf_line_count()`), so that's the only place where we need to:","1. Remove the trailing blank line first (if it exists)","2. Write the new content","3. Add a new trailing blank line","","Does that match what you want? The trailing line only exists at the very end, and only gets managed when appending new content to the end.","","----","","","yes","","----","","","** edit** `renderer.lua`","","** edit** `renderer.lua`","","** edit** `renderer.lua`","","`````lua"," ---@return {line_start: integer, line_end: integer}? Range where data was written"," function M._write_formatted_data(formatted_data)"," local buf = state.windows.output_buf"," local start_line = output_window.get_buf_line_count()"," "," -- Remove trailing blank line before adding new content"," if M._has_trailing_line and start_line > 0 then"," output_window.set_lines({}, start_line - 1, start_line)"," start_line = start_line - 1"," M._has_trailing_line = false"," end"," "," local new_lines = formatted_data.lines"," local extmarks = formatted_data.extmarks"," "," if #new_lines == 0 or not buf then","@@ -268,8 +276,13 @@"," "," output_window.set_lines(new_lines, start_line)"," output_window.set_extmarks(extmarks, start_line)"," "," -- Add trailing blank line after writing"," local end_line = start_line + #new_lines"," output_window.set_lines({''}, end_line)"," M._has_trailing_line = true"," "," return {"," line_start = start_line,"," line_end = start_line + #new_lines - 1,"," }","","`````","","> [!WARNING] Permission required to run this tool.",">","> Accept `a` Always `A` Deny `d`","",""]} \ No newline at end of file diff --git a/tests/data/simple-session.expected.json b/tests/data/simple-session.expected.json index f184a2ee..25916bc7 100644 --- a/tests/data/simple-session.expected.json +++ b/tests/data/simple-session.expected.json @@ -1 +1 @@ -{"timestamp":1766431567,"actions":[],"lines":["----","","","only answer the following, nothing else:","","1","","[a-empty.txt](a-empty.txt)","","----","","","1","",""],"extmarks":[[1,1,0,{"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-10 19:18:25)","OpencodeHint"],[" [msg_9cf8f64de0016tbfTQqWMydbdr]","OpencodeHint"]],"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10}],[2,2,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[3,3,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[4,4,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[5,5,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[6,6,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[7,7,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[8,10,0,{"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4","OpencodeHint"],[" (2025-10-10 19:18:25)","OpencodeHint"],[" [msg_9cf8f6549001tpoRuqkwS4Rxtl]","OpencodeHint"]],"right_gravity":true,"virt_text_hide":false,"ns_id":3,"virt_text_repeat_linebreak":false,"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10}]]} \ No newline at end of file +{"actions":[],"timestamp":1766432128,"extmarks":[[1,1,0,{"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-10 19:18:25)","OpencodeHint"],[" [msg_9cf8f64de0016tbfTQqWMydbdr]","OpencodeHint"]],"right_gravity":true,"virt_text_pos":"win_col","virt_text_repeat_linebreak":false,"priority":10,"virt_text_hide":false,"virt_text_win_col":-3,"ns_id":3}],[2,2,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-3,"ns_id":3}],[3,3,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-3,"ns_id":3}],[4,4,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-3,"ns_id":3}],[5,5,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-3,"ns_id":3}],[6,6,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-3,"ns_id":3}],[7,7,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"virt_text_pos":"win_col","virt_text_repeat_linebreak":true,"priority":4096,"virt_text_hide":false,"virt_text_win_col":-3,"ns_id":3}],[8,10,0,{"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4","OpencodeHint"],[" (2025-10-10 19:18:25)","OpencodeHint"],[" [msg_9cf8f6549001tpoRuqkwS4Rxtl]","OpencodeHint"]],"right_gravity":true,"virt_text_pos":"win_col","virt_text_repeat_linebreak":false,"priority":10,"virt_text_hide":false,"virt_text_win_col":-3,"ns_id":3}]],"lines":["----","","","only answer the following, nothing else:","","1","","[a-empty.txt](a-empty.txt)","","----","","","1","",""]} \ No newline at end of file diff --git a/tests/data/tool-invalid.expected.json b/tests/data/tool-invalid.expected.json index 01401951..92886a00 100644 --- a/tests/data/tool-invalid.expected.json +++ b/tests/data/tool-invalid.expected.json @@ -1 +1 @@ -{"timestamp":1766431567,"actions":[],"lines":["----","","","** tool** `invalid`","","> [!ERROR]",">","> Invalid input for tool edit: JSON parsing failed: Text: {\"filePath\": \"/Users/cam/Dev/neovim-dev/opencode.nvim/lua/opencode/ui/streaming_renderer.lua\", \"newString\": \"---Event handler for permission.replied events\\n---Re-renders part after permission is resolved\\n---@param event table Event object\\nfunctio.","> Error message: JSON Parse error: Unterminated string","",""],"extmarks":[[1,1,0,{"virt_text_win_col":-3,"priority":10,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":false,"ns_id":3,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-13 20:10:06)","OpencodeHint"],[" [msg_9df31cc90001HGn2UbFUgqJnLr]","OpencodeHint"]],"virt_text_pos":"win_col"}],[2,3,0,{"virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col"}],[3,4,0,{"virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col"}],[4,5,0,{"virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col"}],[5,6,0,{"virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col"}],[6,7,0,{"virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col"}],[7,8,0,{"virt_text_win_col":-1,"priority":4096,"virt_text_hide":false,"right_gravity":true,"virt_text_repeat_linebreak":true,"ns_id":3,"virt_text":[["▌","OpencodeToolBorder"]],"virt_text_pos":"win_col"}]]} \ No newline at end of file +{"timestamp":1766432128,"actions":[],"lines":["----","","","** tool** `invalid`","","> [!ERROR]",">","> Invalid input for tool edit: JSON parsing failed: Text: {\"filePath\": \"/Users/cam/Dev/neovim-dev/opencode.nvim/lua/opencode/ui/streaming_renderer.lua\", \"newString\": \"---Event handler for permission.replied events\\n---Re-renders part after permission is resolved\\n---@param event table Event object\\nfunctio.","> Error message: JSON Parse error: Unterminated string","",""],"extmarks":[[1,1,0,{"virt_text_repeat_linebreak":false,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["BUILD","OpencodeMessageRoleAssistant"],[" claude-sonnet-4.5","OpencodeHint"],[" (2025-10-13 20:10:06)","OpencodeHint"],[" [msg_9df31cc90001HGn2UbFUgqJnLr]","OpencodeHint"]],"ns_id":3,"virt_text_hide":false,"priority":10,"right_gravity":true,"virt_text_win_col":-3,"virt_text_pos":"win_col"}],[2,3,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_hide":false,"priority":4096,"right_gravity":true,"virt_text_win_col":-1,"virt_text_pos":"win_col"}],[3,4,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_hide":false,"priority":4096,"right_gravity":true,"virt_text_win_col":-1,"virt_text_pos":"win_col"}],[4,5,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_hide":false,"priority":4096,"right_gravity":true,"virt_text_win_col":-1,"virt_text_pos":"win_col"}],[5,6,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_hide":false,"priority":4096,"right_gravity":true,"virt_text_win_col":-1,"virt_text_pos":"win_col"}],[6,7,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_hide":false,"priority":4096,"right_gravity":true,"virt_text_win_col":-1,"virt_text_pos":"win_col"}],[7,8,0,{"virt_text_repeat_linebreak":true,"virt_text":[["▌","OpencodeToolBorder"]],"ns_id":3,"virt_text_hide":false,"priority":4096,"right_gravity":true,"virt_text_win_col":-1,"virt_text_pos":"win_col"}]]} \ No newline at end of file diff --git a/tests/data/updating-text.expected.json b/tests/data/updating-text.expected.json index aa7a0d26..00756bd3 100644 --- a/tests/data/updating-text.expected.json +++ b/tests/data/updating-text.expected.json @@ -1 +1 @@ -{"actions":[],"lines":["----","","","What would a new neovim lua plugin look like?","","[a-empty.txt](a-empty.txt)","","----","","","A new Neovim Lua plugin typically follows this structure:","","```","plugin-name/","├── lua/","│ └── plugin-name/","│ ├── init.lua -- Main entry point","│ ├── config.lua -- Configuration handling","│ └── utils.lua -- Utility functions","├── plugin/","│ └── plugin-name.lua -- Plugin registration","└── README.md","```","","**Minimal example:**","","`plugin/example.lua`:","```lua","if vim.g.loaded_example then"," return","end","vim.g.loaded_example = 1","","vim.api.nvim_create_user_command('Example', function()"," require('example').hello()","end, {})","```","","`lua/example/init.lua`:","```lua","local M = {}","","M.setup = function(opts)"," opts = opts or {}"," -- Handle configuration","end","","M.hello = function()"," print(\"Hello from my plugin!\")","end","","return M","```","","Key components:","- Use `vim.api` for Neovim API calls","- Provide a `setup()` function for configuration","- Create user commands with `nvim_create_user_command`","- Use autocommands with `nvim_create_autocmd`","- Follow Lua module patterns with `local M = {}`","",""],"extmarks":[[1,1,0,{"virt_text_hide":false,"virt_text_repeat_linebreak":false,"ns_id":3,"right_gravity":true,"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-10 22:06:43)","OpencodeHint"],[" [msg_9d0297a630014CA5ly3Vvw8Kt5]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10}],[2,2,0,{"virt_text_hide":false,"virt_text_repeat_linebreak":true,"ns_id":3,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[3,3,0,{"virt_text_hide":false,"virt_text_repeat_linebreak":true,"ns_id":3,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[4,4,0,{"virt_text_hide":false,"virt_text_repeat_linebreak":true,"ns_id":3,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[5,5,0,{"virt_text_hide":false,"virt_text_repeat_linebreak":true,"ns_id":3,"right_gravity":true,"virt_text":[["▌","OpencodeMessageRoleUser"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":4096}],[6,8,0,{"virt_text_hide":false,"virt_text_repeat_linebreak":false,"ns_id":3,"right_gravity":true,"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" claude-sonnet-4","OpencodeHint"],[" (2025-10-10 22:06:43)","OpencodeHint"],[" [msg_9d0297ab3001UGZU9fDJM4Y75w]","OpencodeHint"]],"virt_text_pos":"win_col","virt_text_win_col":-3,"priority":10}]],"timestamp":1766431568} \ No newline at end of file +{"lines":["----","","","What would a new neovim lua plugin look like?","","[a-empty.txt](a-empty.txt)","","----","","","A new Neovim Lua plugin typically follows this structure:","","```","plugin-name/","├── lua/","│ └── plugin-name/","│ ├── init.lua -- Main entry point","│ ├── config.lua -- Configuration handling","│ └── utils.lua -- Utility functions","├── plugin/","│ └── plugin-name.lua -- Plugin registration","└── README.md","```","","**Minimal example:**","","`plugin/example.lua`:","```lua","if vim.g.loaded_example then"," return","end","vim.g.loaded_example = 1","","vim.api.nvim_create_user_command('Example', function()"," require('example').hello()","end, {})","```","","`lua/example/init.lua`:","```lua","local M = {}","","M.setup = function(opts)"," opts = opts or {}"," -- Handle configuration","end","","M.hello = function()"," print(\"Hello from my plugin!\")","end","","return M","```","","Key components:","- Use `vim.api` for Neovim API calls","- Provide a `setup()` function for configuration","- Create user commands with `nvim_create_user_command`","- Use autocommands with `nvim_create_autocmd`","- Follow Lua module patterns with `local M = {}`","",""],"timestamp":1766432129,"actions":[],"extmarks":[[1,1,0,{"virt_text":[["▌󰭻 ","OpencodeMessageRoleUser"],[" "],["USER","OpencodeMessageRoleUser"],["","OpencodeHint"],[" (2025-10-10 22:06:43)","OpencodeHint"],[" [msg_9d0297a630014CA5ly3Vvw8Kt5]","OpencodeHint"]],"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text_win_col":-3,"virt_text_repeat_linebreak":false,"virt_text_pos":"win_col","priority":10}],[2,2,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text_win_col":-3,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","priority":4096}],[3,3,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text_win_col":-3,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","priority":4096}],[4,4,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text_win_col":-3,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","priority":4096}],[5,5,0,{"virt_text":[["▌","OpencodeMessageRoleUser"]],"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text_win_col":-3,"virt_text_repeat_linebreak":true,"virt_text_pos":"win_col","priority":4096}],[6,8,0,{"virt_text":[[" ","OpencodeMessageRoleAssistant"],[" "],["PLAN","OpencodeMessageRoleAssistant"],[" claude-sonnet-4","OpencodeHint"],[" (2025-10-10 22:06:43)","OpencodeHint"],[" [msg_9d0297ab3001UGZU9fDJM4Y75w]","OpencodeHint"]],"right_gravity":true,"ns_id":3,"virt_text_hide":false,"virt_text_win_col":-3,"virt_text_repeat_linebreak":false,"virt_text_pos":"win_col","priority":10}]]} \ No newline at end of file From fd05c464851916bb8a41c92394fe9135aacbb3eb Mon Sep 17 00:00:00 2001 From: Aaron Weisberg Date: Mon, 22 Dec 2025 11:38:30 -0800 Subject: [PATCH 17/21] feat: add telescope support for code range highlighting Telescope supports highlighting line ranges in the file previewer using the lnend field. Map end_pos[1] to lnend so that references with line ranges (file://path:start-end) get highlighted in Telescope previewer. --- lua/opencode/ui/base_picker.lua | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lua/opencode/ui/base_picker.lua b/lua/opencode/ui/base_picker.lua index 6afb90fb..ed876a85 100644 --- a/lua/opencode/ui/base_picker.lua +++ b/lua/opencode/ui/base_picker.lua @@ -103,6 +103,10 @@ local function telescope_ui(opts) entry.path = item.file or item.file_path or item.path or item.filename entry.lnum = item.line or item.lnum entry.col = item.column or item.col + -- Support line ranges for preview highlighting + if item.end_pos and type(item.end_pos) == 'table' and item.end_pos[1] then + entry.lnend = item.end_pos[1] + end elseif type(item) == 'string' then entry.path = item end From 2a65df2e643a7886c2d71bd262dcbecef3baa8f9 Mon Sep 17 00:00:00 2001 From: Aaron Weisberg Date: Mon, 22 Dec 2025 11:49:56 -0800 Subject: [PATCH 18/21] fix: use vim_buffer_vimgrep previewer for range highlighting The default file_previewer uses the 'cat' previewer which doesn't call jump_to_line, so lnend field is ignored. Switch to vim_buffer_vimgrep which properly highlights line ranges using the lnend field. --- lua/opencode/ui/base_picker.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/opencode/ui/base_picker.lua b/lua/opencode/ui/base_picker.lua index ed876a85..3814ffa2 100644 --- a/lua/opencode/ui/base_picker.lua +++ b/lua/opencode/ui/base_picker.lua @@ -126,7 +126,7 @@ local function telescope_ui(opts) prompt_title = opts.title, finder = finders.new_table({ results = opts.items, entry_maker = make_entry }), sorter = conf.generic_sorter({}), - previewer = opts.preview == 'file' and conf.file_previewer({}) or nil, + previewer = opts.preview == 'file' and require('telescope.previewers').vim_buffer_vimgrep.new({}) or nil, layout_config = opts.width and { width = opts.width + 7, -- extra space for telescope UI } or nil, From 7fdcf41022c1da9a5cb98fbbaf27a30fe6fab37d Mon Sep 17 00:00:00 2001 From: Aaron Weisberg Date: Mon, 22 Dec 2025 11:52:13 -0800 Subject: [PATCH 19/21] chore: trigger CI rerun From e02416b0ddc9a37611659e4cb273467cc40b4414 Mon Sep 17 00:00:00 2001 From: Aaron Weisberg Date: Mon, 22 Dec 2025 12:05:57 -0800 Subject: [PATCH 20/21] feat: add fzf-lua file preview and line navigation support Add builtin previewer support to fzf-lua picker backend with automatic line/column positioning for code references. Changes: - Enable 'builtin' previewer when preview='file' - Append file:line:col: format to entries for fzf-lua parsing - Update fn_fzf_index to strip position info before matching - Supports navigation to specific lines (range highlighting shows start line only) Implementation details: - Uses tab separator between display text and file position - fzf-lua's entry_to_file() automatically parses path:line:col: format - Cursorline highlights the target line in preview - Gracefully degrades when preview is disabled Comparison with other pickers: - Telescope: Full range highlighting (start-end lines) - Snacks: Full range highlighting (start-end lines) - fzf-lua: Single line highlighting (cursorline at start) - Mini.pick: No file preview support --- lua/opencode/ui/base_picker.lua | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/lua/opencode/ui/base_picker.lua b/lua/opencode/ui/base_picker.lua index 3814ffa2..802311f6 100644 --- a/lua/opencode/ui/base_picker.lua +++ b/lua/opencode/ui/base_picker.lua @@ -209,9 +209,13 @@ local function fzf_ui(opts) ['--multi'] = has_multi_action and true or nil, }, _headers = { 'actions' }, + -- Enable builtin previewer for file preview support + previewer = opts.preview == 'file' and 'builtin' or nil, fn_fzf_index = function(line) + -- Strip the appended file:line:col info before matching + local display_part = line:match('^([^\t]+)') or line for i, item in ipairs(opts.items) do - if opts.format_fn(item):to_string() == line then + if opts.format_fn(item):to_string() == display_part then return i end end @@ -223,7 +227,31 @@ local function fzf_ui(opts) local function create_finder() return function(fzf_cb) for _, item in ipairs(opts.items) do - fzf_cb(opts.format_fn(item):to_string()) + local line_str = opts.format_fn(item):to_string() + + -- For file preview support, append file:line:col format + -- fzf-lua's builtin previewer automatically parses this format + if opts.preview == 'file' and type(item) == 'table' then + local file_path = item.file or item.file_path or item.path or item.filename + local line = item.line or item.lnum + local col = item.column or item.col + + if file_path then + -- fzf-lua parses "path:line:col:" format for preview positioning + local pos_info = file_path + if line then + pos_info = pos_info .. ':' .. tostring(line) + if col then + pos_info = pos_info .. ':' .. tostring(col) + end + pos_info = pos_info .. ':' + end + -- Append position info after tab separator (fzf-lua standard) + line_str = line_str .. '\t' .. pos_info + end + end + + fzf_cb(line_str) end fzf_cb() end From ddcc1456ef64fe294e23e2f496fc295e1d062de8 Mon Sep 17 00:00:00 2001 From: Aaron Weisberg Date: Mon, 22 Dec 2025 12:22:48 -0800 Subject: [PATCH 21/21] fix: use nbsp separator for fzf-lua entries (not tab) fzf-lua uses nbsp (U+2002 EN SPACE) as the standard separator between display text and file path info, not tab. The builtin previewer parses entries by splitting on utils.nbsp and extracting the path:line:col: portion. From fzf-lua/path.lua entry_to_file(): local parts = utils.strsplit(entry, utils.nbsp) for i = 1, #parts - 1 do if s:match(".-:%d+:") then break end idx0 = idx0 + #s + #utils.nbsp end return entry:sub(idx0), idx0 Changes: - Use nbsp (\xe2\x80\x82) instead of \t as separator - Update fn_fzf_index to split by nbsp - Use file_path (relative) before file (absolute) for correct resolution This fixes 'Unable to stat file' errors in preview. --- lua/opencode/ui/base_picker.lua | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/lua/opencode/ui/base_picker.lua b/lua/opencode/ui/base_picker.lua index 802311f6..294f1924 100644 --- a/lua/opencode/ui/base_picker.lua +++ b/lua/opencode/ui/base_picker.lua @@ -213,7 +213,9 @@ local function fzf_ui(opts) previewer = opts.preview == 'file' and 'builtin' or nil, fn_fzf_index = function(line) -- Strip the appended file:line:col info before matching - local display_part = line:match('^([^\t]+)') or line + -- fzf-lua uses nbsp (U+2002 EN SPACE) as separator + local nbsp = '\xe2\x80\x82' + local display_part = line:match('^([^' .. nbsp .. ']+)') or line for i, item in ipairs(opts.items) do if opts.format_fn(item):to_string() == display_part then return i @@ -232,7 +234,7 @@ local function fzf_ui(opts) -- For file preview support, append file:line:col format -- fzf-lua's builtin previewer automatically parses this format if opts.preview == 'file' and type(item) == 'table' then - local file_path = item.file or item.file_path or item.path or item.filename + local file_path = item.file_path or item.path or item.filename or item.file local line = item.line or item.lnum local col = item.column or item.col @@ -246,8 +248,10 @@ local function fzf_ui(opts) end pos_info = pos_info .. ':' end - -- Append position info after tab separator (fzf-lua standard) - line_str = line_str .. '\t' .. pos_info + -- Append position info after nbsp separator (fzf-lua standard) + -- nbsp is U+2002 EN SPACE, not regular tab + local nbsp = '\xe2\x80\x82' + line_str = line_str .. nbsp .. pos_info end end