@kmugalkhod/lightcode 0.18.3 → 0.18.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/assets/web/index.html
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
<meta name="theme-color" content="#0B0B0C" />
|
|
8
8
|
<title>Lightcode</title>
|
|
9
9
|
|
|
10
|
-
<link rel="stylesheet" crossorigin href="./index-
|
|
10
|
+
<link rel="stylesheet" crossorigin href="./index-5dh9c5av.css"><script type="module" crossorigin src="./index-89rgdkry.js"></script></head>
|
|
11
11
|
<body>
|
|
12
12
|
<!--
|
|
13
13
|
THESIS: One local coding workspace shared with the CLI; this surface rejects dashboard-card clutter and keeps the project conversation central.
|
package/cli.js
CHANGED
|
@@ -124,7 +124,7 @@ var init_logger = __esm(() => {
|
|
|
124
124
|
});
|
|
125
125
|
|
|
126
126
|
// packages/shared/src/version.ts
|
|
127
|
-
var lightcodeVersion = "0.18.
|
|
127
|
+
var lightcodeVersion = "0.18.5";
|
|
128
128
|
|
|
129
129
|
// packages/shared/src/index.ts
|
|
130
130
|
var productName = "Lightcode";
|
|
@@ -2485,7 +2485,7 @@ var init_schema8 = __esm(() => {
|
|
|
2485
2485
|
|
|
2486
2486
|
// packages/ai/src/read-file/schema.ts
|
|
2487
2487
|
import { z as z18 } from "zod";
|
|
2488
|
-
var readFileDescription = "Read file content from the working directory.
|
|
2488
|
+
var readFileDescription = "Read file content from the working directory. Each call returns about 6,000 characters (roughly 150 lines); longer content is truncated head+tail. Small files: read them whole. Long files: find the spot with grep first, then read a startLine/endLine range of about 100-150 lines around it.", readFileInputSchema, readFileProviderInputSchema, readFileOutputSchema;
|
|
2489
2489
|
var init_schema9 = __esm(() => {
|
|
2490
2490
|
init_base_schemas();
|
|
2491
2491
|
readFileInputSchema = z18.object({
|
|
@@ -3608,7 +3608,7 @@ ${environmentContext.trim()}` : "");
|
|
|
3608
3608
|
var cwdPromptPlaceholder = "{cwd}", defaultCodingAgentSystemPrompt, toolCallingDisciplineAddendum;
|
|
3609
3609
|
var init_coding_agent_prompt = __esm(() => {
|
|
3610
3610
|
init_coding_agent_modes();
|
|
3611
|
-
defaultCodingAgentSystemPrompt = "You are a coding agent working inside the user's project at this working directory: {cwd}. " + 'You can already see the project \u2014 proactively read it. When the user asks you to review, explain, or work on "my code"/"this", inspect the working directory yourself with list_files, glob_search, grep, and read_file; NEVER ask the user to paste or share code that lives in this directory \u2014 open it. ' + "Use tools for filesystem and codebase tasks instead of guessing, and only interact with files under the working directory. " + "Prefer dedicated tools \u2014 glob_search for paths, grep for text search, structured git tools for repository inspection \u2014 and bash only when those are not enough. " + "Check the available skill descriptions for every task. When a skill is explicitly named or clearly matches the task, load it with the skill tool before acting and follow its instructions within the user's scope and tool permissions. Skill files may be installed outside the workspace; use the skill tool to read their relative supporting resources. Never claim to have used a skill you have not loaded. " + `Inspect context before risky operations. Progress notes: before a major tool action you may emit ONE short note (one sentence, ~15 words) saying what you are about to do. After a tool returns, mention a finding only if it changes your plan, and state it as fact grounded in what the tool actually returned \u2014 cite the file/line/symbol. NEVER claim you found, changed, or fixed something before a tool result confirms it. Skip notes for routine reads, and do not restate the todo list in prose.
|
|
3611
|
+
defaultCodingAgentSystemPrompt = "You are a coding agent working inside the user's project at this working directory: {cwd}. " + 'You can already see the project \u2014 proactively read it. When the user asks you to review, explain, or work on "my code"/"this", inspect the working directory yourself with list_files, glob_search, grep, and read_file; NEVER ask the user to paste or share code that lives in this directory \u2014 open it. ' + "Use tools for filesystem and codebase tasks instead of guessing, and only interact with files under the working directory. " + "Prefer dedicated tools \u2014 glob_search for paths, grep for text search, structured git tools for repository inspection \u2014 and bash only when those are not enough. " + "Gather context efficiently \u2014 every tool round trip costs the user seconds. Locate before you read: use grep or glob_search to find the relevant files and line numbers, then read those regions in generous ranges (about 100-150 lines) instead of many small slices or re-reading the same file. When several reads or searches do not depend on each other, request them together in one step. Skip generated output (dist/, build/, minified bundles, node_modules) unless the task is about it. Stop exploring once you have enough evidence to act or answer. " + "Check the available skill descriptions for every task. When a skill is explicitly named or clearly matches the task, load it with the skill tool before acting and follow its instructions within the user's scope and tool permissions. Skill files may be installed outside the workspace; use the skill tool to read their relative supporting resources. Never claim to have used a skill you have not loaded. " + `Inspect context before risky operations. Progress notes: before a major tool action you may emit ONE short note (one sentence, ~15 words) saying what you are about to do. After a tool returns, mention a finding only if it changes your plan, and state it as fact grounded in what the tool actually returned \u2014 cite the file/line/symbol. NEVER claim you found, changed, or fixed something before a tool result confirms it. Skip notes for routine reads, and do not restate the todo list in prose.
|
|
3612
3612
|
|
|
3613
3613
|
` + `Task list discipline \u2014 use the todo_write tool to keep a visible, evolving checklist:
|
|
3614
3614
|
` + `- Create the list FIRST. For any task with roughly three or more distinct steps, or any multi-file or multi-stage work, call todo_write as your very first action \u2014 before reading or editing \u2014 with every step listed and all of them set to pending.
|
|
@@ -3623,7 +3623,7 @@ var init_coding_agent_prompt = __esm(() => {
|
|
|
3623
3623
|
` + `When the task is complete, end with a short summary (a few lines) grounded in the todos you actually completed and the real file diffs \u2014 name the files you edited, do not list steps you did not verify, and do not repeat the todo card verbatim. If anything is incomplete or you are blocked, say so plainly.
|
|
3624
3624
|
|
|
3625
3625
|
` + "Long-running processes (dev servers, watchers): never run them as plain foreground bash \u2014 the bash tool enforces a timeout and will kill them. Start them detached with output redirected to a log " + '(Windows: start /B cmd /c "npm run dev > dev.log 2>&1"; Unix: nohup npm run dev > dev.log 2>&1 &), then read the log to confirm startup and the actual port (do not assume the default). ' + "Never kill processes or free ports you did not open yourself.";
|
|
3626
|
-
toolCallingDisciplineAddendum = "Invoke tools only through the function-calling interface. " + "Never write tool calls as XML or plain text such as <tool_call>, <function_call>, <invoke>, or bare JSON in your message. " + "Tool arguments must be valid JSON matching the tool's schema. " + "
|
|
3626
|
+
toolCallingDisciplineAddendum = "Invoke tools only through the function-calling interface. " + "Never write tool calls as XML or plain text such as <tool_call>, <function_call>, <invoke>, or bare JSON in your message. " + "Tool arguments must be valid JSON matching the tool's schema. " + "You may request several independent tool calls in one response; wait for their results before making calls that depend on them.";
|
|
3627
3627
|
});
|
|
3628
3628
|
|
|
3629
3629
|
// packages/ai/src/common/coerce-tool-input.ts
|
|
@@ -7688,12 +7688,19 @@ async function artifactizeLargeToolOutputs(messages, options = {}) {
|
|
|
7688
7688
|
if (previewCharacters < MIN_TOOL_OUTPUT_ARTIFACT_PREVIEW_CHARACTERS) {
|
|
7689
7689
|
throw new RangeError(`Tool-output artifact previews must allow at least ${MIN_TOOL_OUTPUT_ARTIFACT_PREVIEW_CHARACTERS} characters.`);
|
|
7690
7690
|
}
|
|
7691
|
+
const currentTurnThreshold = Math.max(0, Math.floor(options.currentTurnThresholdCharacters ?? thresholdCharacters));
|
|
7692
|
+
let currentTurnStart = 0;
|
|
7693
|
+
messages.forEach((message, index) => {
|
|
7694
|
+
if (message.role === "user")
|
|
7695
|
+
currentTurnStart = index + 1;
|
|
7696
|
+
});
|
|
7691
7697
|
const uniqueArtifacts = new Map;
|
|
7692
7698
|
let artifactizedOutputs = 0;
|
|
7693
7699
|
let savedCharacters = 0;
|
|
7694
7700
|
const providerMessages = [];
|
|
7695
|
-
for (const message of messages) {
|
|
7701
|
+
for (const [index, message] of messages.entries()) {
|
|
7696
7702
|
options.signal?.throwIfAborted();
|
|
7703
|
+
const limit = index >= currentTurnStart ? currentTurnThreshold : thresholdCharacters;
|
|
7697
7704
|
if (!Array.isArray(message.content)) {
|
|
7698
7705
|
providerMessages.push(message);
|
|
7699
7706
|
continue;
|
|
@@ -7707,7 +7714,7 @@ async function artifactizeLargeToolOutputs(messages, options = {}) {
|
|
|
7707
7714
|
}
|
|
7708
7715
|
const output = part.output;
|
|
7709
7716
|
const serialized = serializeToolResultOutput(output);
|
|
7710
|
-
if (serialized.length <=
|
|
7717
|
+
if (serialized.length <= limit) {
|
|
7711
7718
|
providerContent.push(part);
|
|
7712
7719
|
continue;
|
|
7713
7720
|
}
|
|
@@ -7791,7 +7798,7 @@ async function toolOutputArtifactExists(handleOrDigest, dataDir = getLightcodeDa
|
|
|
7791
7798
|
throw error;
|
|
7792
7799
|
}
|
|
7793
7800
|
}
|
|
7794
|
-
var TOOL_OUTPUT_ARTIFACT_HANDLE_PREFIX = "lightcode-artifact://tool-output/sha256/", DEFAULT_TOOL_OUTPUT_ARTIFACT_THRESHOLD_CHARACTERS, DEFAULT_TOOL_OUTPUT_ARTIFACT_PREVIEW_CHARACTERS = 2400, MIN_TOOL_OUTPUT_ARTIFACT_PREVIEW_CHARACTERS = 512, SHA256_PATTERN, ARTIFACT_PREVIEW_MARKER = "[Lightcode tool-output artifact]";
|
|
7801
|
+
var TOOL_OUTPUT_ARTIFACT_HANDLE_PREFIX = "lightcode-artifact://tool-output/sha256/", DEFAULT_TOOL_OUTPUT_ARTIFACT_THRESHOLD_CHARACTERS, DEFAULT_CURRENT_TURN_TOOL_OUTPUT_THRESHOLD_CHARACTERS = 16000, DEFAULT_TOOL_OUTPUT_ARTIFACT_PREVIEW_CHARACTERS = 2400, MIN_TOOL_OUTPUT_ARTIFACT_PREVIEW_CHARACTERS = 512, SHA256_PATTERN, ARTIFACT_PREVIEW_MARKER = "[Lightcode tool-output artifact]";
|
|
7795
7802
|
var init_tool_output_artifacts = __esm(() => {
|
|
7796
7803
|
init_src();
|
|
7797
7804
|
DEFAULT_TOOL_OUTPUT_ARTIFACT_THRESHOLD_CHARACTERS = DEFAULT_TOOL_TEXT_OUTPUT_CHARS;
|
|
@@ -9210,7 +9217,8 @@ function createCodingAgent({
|
|
|
9210
9217
|
originalInputTokens: context.originalInputTokens
|
|
9211
9218
|
});
|
|
9212
9219
|
const artifactized = await artifactizeLargeToolOutputs(messages, {
|
|
9213
|
-
signal: context.assemblyAbortSignal
|
|
9220
|
+
signal: context.assemblyAbortSignal,
|
|
9221
|
+
currentTurnThresholdCharacters: DEFAULT_CURRENT_TURN_TOOL_OUTPUT_THRESHOLD_CHARACTERS
|
|
9214
9222
|
});
|
|
9215
9223
|
const assembled = assembler.assembleModelMessages(artifactized.messages, {
|
|
9216
9224
|
preserveRecentTokens: context.preserveRecentTokens
|
|
@@ -16805,6 +16813,7 @@ __export(exports_runtime, {
|
|
|
16805
16813
|
DEFAULT_PRUNE_QUANTIZE_USER_TURNS: () => DEFAULT_PRUNE_QUANTIZE_USER_TURNS,
|
|
16806
16814
|
DEFAULT_PRUNE_MIN_OUTPUT_CHARS: () => DEFAULT_PRUNE_MIN_OUTPUT_CHARS,
|
|
16807
16815
|
DEFAULT_INPUT_BUDGET_SAFETY_FRACTION: () => DEFAULT_INPUT_BUDGET_SAFETY_FRACTION,
|
|
16816
|
+
DEFAULT_CURRENT_TURN_TOOL_OUTPUT_THRESHOLD_CHARACTERS: () => DEFAULT_CURRENT_TURN_TOOL_OUTPUT_THRESHOLD_CHARACTERS,
|
|
16808
16817
|
DEFAULT_CONTEXT_WINDOW_TOKENS: () => DEFAULT_CONTEXT_WINDOW_TOKENS,
|
|
16809
16818
|
CheckpointConflictError: () => CheckpointConflictError,
|
|
16810
16819
|
ANTHROPIC_TOOL_OPTIONAL_PARAMETER_BUDGET: () => ANTHROPIC_TOOL_OPTIONAL_PARAMETER_BUDGET
|
package/package.json
CHANGED
package/server.js
CHANGED
|
@@ -2002,7 +2002,7 @@ var init_schema8 = __esm(() => {
|
|
|
2002
2002
|
|
|
2003
2003
|
// packages/ai/src/read-file/schema.ts
|
|
2004
2004
|
import { z as z19 } from "zod";
|
|
2005
|
-
var readFileDescription = "Read file content from the working directory.
|
|
2005
|
+
var readFileDescription = "Read file content from the working directory. Each call returns about 6,000 characters (roughly 150 lines); longer content is truncated head+tail. Small files: read them whole. Long files: find the spot with grep first, then read a startLine/endLine range of about 100-150 lines around it.", readFileInputSchema, readFileProviderInputSchema, readFileOutputSchema;
|
|
2006
2006
|
var init_schema9 = __esm(() => {
|
|
2007
2007
|
init_base_schemas();
|
|
2008
2008
|
readFileInputSchema = z19.object({
|
|
@@ -3068,7 +3068,7 @@ ${environmentContext.trim()}` : "");
|
|
|
3068
3068
|
var cwdPromptPlaceholder = "{cwd}", defaultCodingAgentSystemPrompt, toolCallingDisciplineAddendum;
|
|
3069
3069
|
var init_coding_agent_prompt = __esm(() => {
|
|
3070
3070
|
init_coding_agent_modes();
|
|
3071
|
-
defaultCodingAgentSystemPrompt = "You are a coding agent working inside the user's project at this working directory: {cwd}. " + 'You can already see the project \u2014 proactively read it. When the user asks you to review, explain, or work on "my code"/"this", inspect the working directory yourself with list_files, glob_search, grep, and read_file; NEVER ask the user to paste or share code that lives in this directory \u2014 open it. ' + "Use tools for filesystem and codebase tasks instead of guessing, and only interact with files under the working directory. " + "Prefer dedicated tools \u2014 glob_search for paths, grep for text search, structured git tools for repository inspection \u2014 and bash only when those are not enough. " + "Check the available skill descriptions for every task. When a skill is explicitly named or clearly matches the task, load it with the skill tool before acting and follow its instructions within the user's scope and tool permissions. Skill files may be installed outside the workspace; use the skill tool to read their relative supporting resources. Never claim to have used a skill you have not loaded. " + `Inspect context before risky operations. Progress notes: before a major tool action you may emit ONE short note (one sentence, ~15 words) saying what you are about to do. After a tool returns, mention a finding only if it changes your plan, and state it as fact grounded in what the tool actually returned \u2014 cite the file/line/symbol. NEVER claim you found, changed, or fixed something before a tool result confirms it. Skip notes for routine reads, and do not restate the todo list in prose.
|
|
3071
|
+
defaultCodingAgentSystemPrompt = "You are a coding agent working inside the user's project at this working directory: {cwd}. " + 'You can already see the project \u2014 proactively read it. When the user asks you to review, explain, or work on "my code"/"this", inspect the working directory yourself with list_files, glob_search, grep, and read_file; NEVER ask the user to paste or share code that lives in this directory \u2014 open it. ' + "Use tools for filesystem and codebase tasks instead of guessing, and only interact with files under the working directory. " + "Prefer dedicated tools \u2014 glob_search for paths, grep for text search, structured git tools for repository inspection \u2014 and bash only when those are not enough. " + "Gather context efficiently \u2014 every tool round trip costs the user seconds. Locate before you read: use grep or glob_search to find the relevant files and line numbers, then read those regions in generous ranges (about 100-150 lines) instead of many small slices or re-reading the same file. When several reads or searches do not depend on each other, request them together in one step. Skip generated output (dist/, build/, minified bundles, node_modules) unless the task is about it. Stop exploring once you have enough evidence to act or answer. " + "Check the available skill descriptions for every task. When a skill is explicitly named or clearly matches the task, load it with the skill tool before acting and follow its instructions within the user's scope and tool permissions. Skill files may be installed outside the workspace; use the skill tool to read their relative supporting resources. Never claim to have used a skill you have not loaded. " + `Inspect context before risky operations. Progress notes: before a major tool action you may emit ONE short note (one sentence, ~15 words) saying what you are about to do. After a tool returns, mention a finding only if it changes your plan, and state it as fact grounded in what the tool actually returned \u2014 cite the file/line/symbol. NEVER claim you found, changed, or fixed something before a tool result confirms it. Skip notes for routine reads, and do not restate the todo list in prose.
|
|
3072
3072
|
|
|
3073
3073
|
` + `Task list discipline \u2014 use the todo_write tool to keep a visible, evolving checklist:
|
|
3074
3074
|
` + `- Create the list FIRST. For any task with roughly three or more distinct steps, or any multi-file or multi-stage work, call todo_write as your very first action \u2014 before reading or editing \u2014 with every step listed and all of them set to pending.
|
|
@@ -3083,7 +3083,7 @@ var init_coding_agent_prompt = __esm(() => {
|
|
|
3083
3083
|
` + `When the task is complete, end with a short summary (a few lines) grounded in the todos you actually completed and the real file diffs \u2014 name the files you edited, do not list steps you did not verify, and do not repeat the todo card verbatim. If anything is incomplete or you are blocked, say so plainly.
|
|
3084
3084
|
|
|
3085
3085
|
` + "Long-running processes (dev servers, watchers): never run them as plain foreground bash \u2014 the bash tool enforces a timeout and will kill them. Start them detached with output redirected to a log " + '(Windows: start /B cmd /c "npm run dev > dev.log 2>&1"; Unix: nohup npm run dev > dev.log 2>&1 &), then read the log to confirm startup and the actual port (do not assume the default). ' + "Never kill processes or free ports you did not open yourself.";
|
|
3086
|
-
toolCallingDisciplineAddendum = "Invoke tools only through the function-calling interface. " + "Never write tool calls as XML or plain text such as <tool_call>, <function_call>, <invoke>, or bare JSON in your message. " + "Tool arguments must be valid JSON matching the tool's schema. " + "
|
|
3086
|
+
toolCallingDisciplineAddendum = "Invoke tools only through the function-calling interface. " + "Never write tool calls as XML or plain text such as <tool_call>, <function_call>, <invoke>, or bare JSON in your message. " + "Tool arguments must be valid JSON matching the tool's schema. " + "You may request several independent tool calls in one response; wait for their results before making calls that depend on them.";
|
|
3087
3087
|
});
|
|
3088
3088
|
|
|
3089
3089
|
// packages/ai/src/common/coerce-tool-input.ts
|
|
@@ -7080,12 +7080,19 @@ async function artifactizeLargeToolOutputs(messages, options = {}) {
|
|
|
7080
7080
|
if (previewCharacters < MIN_TOOL_OUTPUT_ARTIFACT_PREVIEW_CHARACTERS) {
|
|
7081
7081
|
throw new RangeError(`Tool-output artifact previews must allow at least ${MIN_TOOL_OUTPUT_ARTIFACT_PREVIEW_CHARACTERS} characters.`);
|
|
7082
7082
|
}
|
|
7083
|
+
const currentTurnThreshold = Math.max(0, Math.floor(options.currentTurnThresholdCharacters ?? thresholdCharacters));
|
|
7084
|
+
let currentTurnStart = 0;
|
|
7085
|
+
messages.forEach((message, index) => {
|
|
7086
|
+
if (message.role === "user")
|
|
7087
|
+
currentTurnStart = index + 1;
|
|
7088
|
+
});
|
|
7083
7089
|
const uniqueArtifacts = new Map;
|
|
7084
7090
|
let artifactizedOutputs = 0;
|
|
7085
7091
|
let savedCharacters = 0;
|
|
7086
7092
|
const providerMessages = [];
|
|
7087
|
-
for (const message of messages) {
|
|
7093
|
+
for (const [index, message] of messages.entries()) {
|
|
7088
7094
|
options.signal?.throwIfAborted();
|
|
7095
|
+
const limit = index >= currentTurnStart ? currentTurnThreshold : thresholdCharacters;
|
|
7089
7096
|
if (!Array.isArray(message.content)) {
|
|
7090
7097
|
providerMessages.push(message);
|
|
7091
7098
|
continue;
|
|
@@ -7099,7 +7106,7 @@ async function artifactizeLargeToolOutputs(messages, options = {}) {
|
|
|
7099
7106
|
}
|
|
7100
7107
|
const output = part.output;
|
|
7101
7108
|
const serialized = serializeToolResultOutput(output);
|
|
7102
|
-
if (serialized.length <=
|
|
7109
|
+
if (serialized.length <= limit) {
|
|
7103
7110
|
providerContent.push(part);
|
|
7104
7111
|
continue;
|
|
7105
7112
|
}
|
|
@@ -7131,7 +7138,7 @@ async function artifactizeLargeToolOutputs(messages, options = {}) {
|
|
|
7131
7138
|
savedCharacters
|
|
7132
7139
|
};
|
|
7133
7140
|
}
|
|
7134
|
-
var TOOL_OUTPUT_ARTIFACT_HANDLE_PREFIX = "lightcode-artifact://tool-output/sha256/", DEFAULT_TOOL_OUTPUT_ARTIFACT_THRESHOLD_CHARACTERS, DEFAULT_TOOL_OUTPUT_ARTIFACT_PREVIEW_CHARACTERS = 2400, MIN_TOOL_OUTPUT_ARTIFACT_PREVIEW_CHARACTERS = 512, SHA256_PATTERN, ARTIFACT_PREVIEW_MARKER = "[Lightcode tool-output artifact]";
|
|
7141
|
+
var TOOL_OUTPUT_ARTIFACT_HANDLE_PREFIX = "lightcode-artifact://tool-output/sha256/", DEFAULT_TOOL_OUTPUT_ARTIFACT_THRESHOLD_CHARACTERS, DEFAULT_CURRENT_TURN_TOOL_OUTPUT_THRESHOLD_CHARACTERS = 16000, DEFAULT_TOOL_OUTPUT_ARTIFACT_PREVIEW_CHARACTERS = 2400, MIN_TOOL_OUTPUT_ARTIFACT_PREVIEW_CHARACTERS = 512, SHA256_PATTERN, ARTIFACT_PREVIEW_MARKER = "[Lightcode tool-output artifact]";
|
|
7135
7142
|
var init_tool_output_artifacts = __esm(() => {
|
|
7136
7143
|
init_src();
|
|
7137
7144
|
DEFAULT_TOOL_OUTPUT_ARTIFACT_THRESHOLD_CHARACTERS = DEFAULT_TOOL_TEXT_OUTPUT_CHARS;
|
|
@@ -8617,7 +8624,8 @@ function createCodingAgent({
|
|
|
8617
8624
|
originalInputTokens: context.originalInputTokens
|
|
8618
8625
|
});
|
|
8619
8626
|
const artifactized = await artifactizeLargeToolOutputs(messages, {
|
|
8620
|
-
signal: context.assemblyAbortSignal
|
|
8627
|
+
signal: context.assemblyAbortSignal,
|
|
8628
|
+
currentTurnThresholdCharacters: DEFAULT_CURRENT_TURN_TOOL_OUTPUT_THRESHOLD_CHARACTERS
|
|
8621
8629
|
});
|
|
8622
8630
|
const assembled = assembler.assembleModelMessages(artifactized.messages, {
|
|
8623
8631
|
preserveRecentTokens: context.preserveRecentTokens
|
|
@@ -14621,7 +14629,8 @@ async function runSubagentToolTask(input, context2, deps) {
|
|
|
14621
14629
|
abortSignal: context2.abortSignal,
|
|
14622
14630
|
prepareStep: async ({ messages }) => {
|
|
14623
14631
|
const artifactized = await artifactizeLargeToolOutputs(messages, {
|
|
14624
|
-
signal: context2.abortSignal
|
|
14632
|
+
signal: context2.abortSignal,
|
|
14633
|
+
currentTurnThresholdCharacters: DEFAULT_CURRENT_TURN_TOOL_OUTPUT_THRESHOLD_CHARACTERS
|
|
14625
14634
|
});
|
|
14626
14635
|
const turn = assembler.assembleModelMessages(artifactized.messages, {
|
|
14627
14636
|
preserveRecentTokens
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/app/geist-latin.woff2)format(woff2)}:root{--buncss-light: ;--buncss-dark:initial;color-scheme:dark;font-synthesis:none;--base:#0b0b0c;--sidebar:#0e0e0f;--panel:#0b0b0c;--elevated:#1d1d20;--hover:#17171a;--inset:#141416;--border:#262629;--border-soft:#1c1c1f;--border-strong:#36363b;--accent:#5cc8bb;--accent-soft:#5cc8bb1f;--accent-border:#5cc8bb59;--accent-text:#9be3d9;--primary:#ececec;--primary-hover:#fff;--on-primary:#0b0b0c;--text:#ececec;--text-secondary:#a3a3a9;--text-muted:#727279;--text-faint:#55555b;--success:#86cf98;--warning:#e2bd78;--error:#ef8a80;--info:#9db8f2;--focus:#ececec8c;--mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-family:Geist Variable,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}html,body,#root{width:100%;height:100%;margin:0}body{overflow:hidden;background:var(--base);color:var(--text);text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;min-width:320px;font-size:14px;line-height:1.5}button,textarea,input,select{color:inherit;font:inherit}button,select,label,summary{-webkit-tap-highlight-color:transparent}button{border:0}button:not(:disabled),select:not(:disabled),summary{cursor:pointer}label:has(input:not(:disabled)){cursor:pointer}button:disabled,select:disabled,textarea:disabled,input:disabled{cursor:not-allowed;opacity:.5}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}::selection{color:var(--text);background:#2f4d49}*{scrollbar-width:thin;scrollbar-color:#2a2a2e transparent}.sr-only{position:absolute;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0}.app-shell{display:grid;grid-template-columns:252px minmax(0,1fr);background:var(--base);width:100%;height:100dvh}.session-rail{position:relative;z-index:30;display:flex;overflow:hidden;background:var(--sidebar);border-right:1px solid var(--border-soft);flex-direction:column;min-width:0;height:100%}.rail-header{display:flex;justify-content:space-between;align-items: center;min-height:52px;padding:0 10px 0 18px}.brand-lockup{display:flex;color:var(--text);letter-spacing:-.01em;align-items: center;gap:8px;font-size:14px;font-weight:600}.brand-mark,.authorization-mark{display:inline-flex;color:var(--text);justify-content:center;align-items: center}.rail-nav{display:grid;gap:1px;padding:2px 8px 6px}.rail-nav-item{display:flex;color:var(--text-secondary);text-align:left;background:0 0;border-radius:8px;align-items: center;gap:10px;width:100%;min-height:32px;padding:0 10px;transition:background-color .14s ease-out,color .14s ease-out;font-size:13.5px}.rail-nav-item>svg{color:var(--text-muted);flex:none}.rail-nav-item:hover:not(:disabled),.rail-nav-item:focus-within{background:var(--hover);color:var(--text)}.rail-nav-item kbd{color:var(--text-faint);opacity:0;margin-left:auto;transition:opacity .14s ease-out;font-family:inherit;font-size:11px}.rail-nav-item:hover kbd,.rail-nav-item:focus-within kbd{opacity:1}.rail-nav-item:focus-visible kbd{opacity:1}.session-search input{outline:none;background:0 0;border:0;width:100%;min-width:0;padding:6px 0;font-size:13.5px}.session-search input::placeholder{color:var(--text-secondary);opacity:1}.session-search input::-webkit-search-cancel-button{display:none}.project-button-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}.rail-section-heading{display:flex;color:var(--text-muted);justify-content:space-between;align-items: center;padding:16px 18px 6px;font-size:12px;font-weight:500}.session-list{overflow-y:auto;scrollbar-color:transparent transparent;flex:1;min-height:80px;padding:0 8px 16px}.session-list:hover{scrollbar-color:#2a2a2e transparent}.session-item{position:relative;display:flex;color:var(--text-secondary);text-align:left;background:0 0;border-radius:8px;align-items: center;gap:10px;width:100%;min-height:32px;padding:0 10px;transition:background-color .14s ease-out,color .14s ease-out;font-size:13.5px}.session-item:hover{background:var(--hover);color:var(--text)}.session-item.active{background:var(--elevated);color:var(--text)}.session-marker{display:none}.session-spinner{border:1.5px solid var(--accent);animation:spin .9s linear infinite;border-top-color:#0000;border-radius:50%;flex:none;width:12px;height:12px}.session-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}.rail-state{display:flex;color:var(--text-muted);align-items: flex-start;gap:8px;padding:6px 10px}.rail-state p{margin:0;font-size:12.5px}.rail-state button{background:var(--elevated);border-radius:6px;min-height:28px;padding:2px 10px;font-size:12px}.session-skeleton,.folder-skeleton,.conversation-skeleton{display:grid;gap:12px;padding:12px}.session-skeleton span,.folder-skeleton span,.conversation-skeleton span{display:block;background:var(--elevated);animation:skeleton-pulse 1.4s ease-in-out infinite alternate;border-radius:4px;height:10px}.session-skeleton span:first-child{width:82%}.session-skeleton span:nth-child(2){width:74%}.session-skeleton span:nth-child(3){width:68%}.session-skeleton span:nth-child(4){width:61%}.folder-skeleton span:first-child{width:58%}.folder-skeleton span:nth-child(2){width:71%}.folder-skeleton span:nth-child(3){width:84%}.folder-skeleton span:nth-child(4){width:67%}.folder-skeleton span:nth-child(5){width:79%}.folder-skeleton span:nth-child(6){width:62%}.folder-skeleton span:nth-child(7){width:75%}@keyframes skeleton-pulse{0%{opacity:.45}to{opacity:.95}}.workspace-main{display:flex;overflow:hidden;background:var(--panel);flex-direction:column;min-width:0;min-height:0}.top-bar{display:flex;flex:none;align-items: center;gap:8px;min-height:52px;padding:0 12px 0 22px}.top-bar-title{overflow:hidden;color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;margin:0;font-size:13.5px;font-weight:500}.top-bar-actions{display:flex;flex:0 auto;align-items: center;gap:4px;min-width:0}.top-bar .icon-button{color:var(--text-secondary);width:36px;height:36px}.chat-surface{position:relative;display:flex;overflow:hidden;flex-direction:column;flex:1;min-width:0;min-height:0}.chat-with-changes{display:flex;flex:1;min-height:0}.changes-toggle{display:inline-flex;color:var(--text-muted);background:0 0;border-radius:8px;justify-content:center;align-items: center;gap:6px;min-width:32px;height:32px;padding:0 8px;transition:background-color .14s ease-out,color .14s ease-out;font-size:12px}.changes-toggle:hover,.changes-toggle.active{background:var(--elevated);color:var(--text)}.changes-count{background:var(--elevated);color:var(--text-secondary);font-family:var(--mono);border-radius:999px;padding:0 6px;font-size:10px;line-height:16px}.changes-toggle.active .changes-count{background:var(--border-strong)}.workspace-controls{display:flex;color:var(--text-muted);align-items: center;gap:2px;min-width:0}.workspace-path{display:flex;color:var(--text-secondary);text-align:left;background:0 0;border-radius:8px;align-items: center;gap:7px;min-width:0;max-width:260px;height:32px;padding:0 9px;transition:background-color .14s ease-out,color .14s ease-out;font-size:13px}.workspace-path:hover:not(:disabled){background:var(--elevated);color:var(--text)}.workspace-icon{display:inline-flex;color:var(--text-muted);align-items: center}.workspace-path-copy{min-width:0}.workspace-path-copy strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}.workspace-path>svg:last-child{color:var(--text-muted);flex:none}.ribbon-status{display:flex;color:var(--text-muted);white-space:nowrap;align-items: center;gap:7px;margin-right:4px;font-size:12px}.live-dot{display:inline-block;background:var(--warning);border-radius:50%;flex:none;width:6px;height:6px}.live-dot.active{background:var(--accent);animation:live-pulse 1.1s ease-out infinite alternate}@keyframes live-pulse{0%{opacity:.55}to{opacity:1}}.ribbon-model,.ribbon-select{position:relative;display:inline-flex;color:var(--text-muted);white-space:nowrap;background:0 0;border-radius:999px;flex:none;align-items: center;gap:4px;min-width:0;height:32px;padding:0 10px;transition:background-color .14s ease-out,color .14s ease-out;font-size:13px}.ribbon-model{flex-shrink:1;max-width:220px}.ribbon-model>span{overflow:hidden;text-overflow:ellipsis}.ribbon-model>svg,.ribbon-select>svg{opacity:.7;flex:none}.ribbon-model:hover:not(:disabled),.ribbon-select:hover:not(.disabled){background:var(--elevated);color:var(--text)}.ribbon-select select{position:absolute;z-index:1;appearance:none;outline:0;color:inherit;opacity:0;background:0 0;border:0;width:100%;height:100%;font-size:13px;inset:0}.ribbon-select>svg,.ribbon-select-value{pointer-events:none}.ribbon-select-value{min-width:0}.ribbon-select.disabled{opacity:.55}.ribbon-select select:focus-visible{outline:0}.ribbon-select:focus-within{outline:2px solid var(--focus);outline-offset:1px}.changes-panel{display:flex;border-left:1px solid var(--border);background:var(--base);flex-direction:column;flex:none;width:min(460px,38vw);min-width:320px;min-height:0}@media (max-width:1099px){.changes-panel{position:fixed;z-index:75;width:min(460px,100vw);min-width:0;inset:0 0 0 auto;box-shadow:-18px 0 44px #00000080}}.changes-panel-header{display:flex;border-bottom:1px solid var(--border-soft);align-items: center;gap:8px;min-height:50px;padding:8px 10px 8px 14px}.changes-panel-header h2{display:flex;color:var(--text);align-items: center;gap:7px;margin:0;font-size:13px;font-weight:650}.changes-branch{overflow:hidden;color:var(--text-muted);font-family:var(--mono);text-overflow:ellipsis;white-space:nowrap;margin-right:auto;font-size:11px}.changes-list{overflow-y:auto;list-style:none;flex:none;max-height:42%;margin:0;padding:6px}.changes-row{display:grid;grid-template-columns:20px minmax(0,1fr)auto;color:var(--text-secondary);text-align:left;background:0 0;border-radius:7px;align-items: center;gap:8px;width:100%;min-height:40px;padding:5px 8px}.changes-row:hover,.changes-row.selected{background:var(--elevated);color:var(--text)}.change-kind{font-family:var(--mono);text-align:center;font-size:11px;font-weight:700}.change-kind.created,.change-kind.untracked{color:var(--success)}.change-kind.modified,.change-kind.renamed{color:var(--warning)}.change-kind.deleted{color:var(--error)}.changes-path{display:grid;min-width:0}.changes-path strong,.changes-path small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.changes-path strong{font-size:12px;font-weight:600}.changes-path small{color:var(--text-muted);font-family:var(--mono);font-size:10px}.changes-stats{display:inline-flex;font-family:var(--mono);gap:6px;font-size:10px}.changes-stats .added{color:var(--success)}.changes-stats .removed{color:var(--error)}.changes-diff{overflow:auto;border-top:1px solid var(--border-soft);flex:1;min-height:0;padding:10px}.changes-diff .diff-view{font-family:var(--mono);white-space:pre;margin:0;font-size:11px;line-height:1.55}.changes-state,.changes-hint{display:flex;color:var(--text-muted);align-items: center;gap:8px;margin:0;padding:14px;font-size:12px}.changes-state p{margin:0}.conversation-scroll{overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable;flex:1;min-height:0}.conversation-column{width:min(100%,760px);margin:0 auto;padding-inline-start:24px;padding-inline-end:24px}.conversation-scroll>.conversation-column{display:flex;flex-direction:column;min-height:100%;padding-top:20px;padding-bottom:32px}.conversation-empty{display:grid;text-align:center;justify-items:center;margin:auto 0;padding:48px 0 80px}.conversation-empty h2,.authorization-gate h1{color:var(--text);letter-spacing:-.02em;margin:0;font-size:24px;font-weight:500;line-height:1.25}.conversation-empty p{color:var(--text-muted);max-width:52ch;margin:10px 0 0;font-size:14.5px}.chat-message{display:grid;grid-template-columns:minmax(0,1fr);content-visibility:auto;contain-intrinsic-size:auto 160px;padding:12px 0}.streaming-message-text p{white-space:pre-wrap}.chat-message.role-user{justify-items:end;padding-top:20px}.role-user .message-parts{background:var(--elevated);border-radius:18px;max-width:min(80%,600px);padding:10px 16px}.role-user .message-text{font-size:14.5px;line-height:1.6}.message-parts{min-width:0}.message-text{color:var(--text);font-size:15px;line-height:1.7}.message-text p{white-space:normal;overflow-wrap:anywhere;max-width:72ch;margin:0 0 15px}.message-text p:last-child{margin-bottom:0}.message-text :-webkit-any(h1,h2,h3,h4,h5,h6){color:var(--text);letter-spacing:-.018em;max-width:46ch;margin:28px 0 12px;font-size:22px;font-weight:680;line-height:1.3}.message-text :-moz-any(h1,h2,h3,h4,h5,h6){color:var(--text);letter-spacing:-.018em;max-width:46ch;margin:28px 0 12px;font-size:22px;font-weight:680;line-height:1.3}.message-text :is(h1,h2,h3,h4,h5,h6){color:var(--text);letter-spacing:-.018em;max-width:46ch;margin:28px 0 12px;font-size:22px;font-weight:680;line-height:1.3}.message-text h2{font-size:20px}.message-text :-webkit-any(h3,h4,h5,h6){font-size:17px}.message-text :-moz-any(h3,h4,h5,h6){font-size:17px}.message-text :is(h3,h4,h5,h6){font-size:17px}.message-text>:first-child{margin-top:0}.message-text>:last-child{margin-bottom:0}.message-parts>.message-text+.message-text{margin-top:20px}.message-text li>p{margin-bottom:8px}.message-text hr{border:0;border-top:1px solid var(--border);margin-block-start:24px;margin-block-end:24px}.message-text .task-list-item{list-style:none}.message-text input[type=checkbox]{accent-color:var(--accent);margin-right:8px}.markdown-table-scroll{overflow-x:auto;border:1px solid var(--border);border-radius:8px;max-width:100%;margin-block-start:20px;margin-block-end:20px}.markdown-table-scroll table{border-collapse:collapse;text-align:left;width:100%;font-size:14px;line-height:1.6}.markdown-table-scroll :-webkit-any(th,td){vertical-align:top;border-bottom:1px solid var(--border-soft);overflow-wrap:anywhere;min-width:120px;padding:12px 16px}.markdown-table-scroll :-moz-any(th,td){vertical-align:top;border-bottom:1px solid var(--border-soft);overflow-wrap:anywhere;min-width:120px;padding:12px 16px}.markdown-table-scroll :is(th,td){vertical-align:top;border-bottom:1px solid var(--border-soft);overflow-wrap:anywhere;min-width:120px;padding:12px 16px}.markdown-table-scroll th{background:var(--inset);color:var(--text-secondary);font-weight:600}.markdown-table-scroll tr:last-child td{border-bottom:0}.message-text ul,.message-text ol{max-width:72ch;margin:0 0 15px;padding-left:22px}.message-text li+li{margin-top:4px}.message-text blockquote{border-left:2px solid var(--accent);color:var(--text-secondary);white-space:pre-wrap;max-width:72ch;margin:12px 0 15px;padding-left:13px}.message-text a{color:var(--info);text-underline-offset:2px}.inline-code,.message-text :not(pre)>code{background:var(--elevated);color:#e2e3e6;font-family:var(--mono);overflow-wrap:anywhere;border-radius:5px;padding:1px 6px;font-size:.9em}.code-block{overflow:hidden;border:1px solid var(--border);background:var(--inset);border-radius:11px;margin:14px 0 18px}.code-header{display:flex;border-bottom:1px solid var(--border-soft);color:var(--text-muted);font-family:var(--mono);justify-content:space-between;align-items: center;min-height:34px;padding:0 12px;font-size:11px}.code-header button{color:var(--text-secondary);font-family:inherit;font-size:inherit;background:0 0;min-height:44px}.code-block pre,.tool-details pre,.authorization-gate pre{overflow:auto;font-family:var(--mono);white-space:pre-wrap;overflow-wrap:anywhere;margin:0;font-size:12px;line-height:1.65}.code-block pre{color:#e2e3e6;white-space:pre;overflow-wrap:normal;padding:14px 16px 17px}.activity-group{margin:4px 0 10px}.activity-summary{display:inline-flex;color:var(--text-muted);background:0 0;align-items: center;gap:6px;min-height:30px;padding:0;transition:color .14s ease-out;font-size:13.5px}.activity-summary:hover{color:var(--text-secondary)}.activity-summary>svg{transition:transform .16s ease-out}.activity-group.open>.activity-summary>svg{transform:rotate(90deg)}.activity-list{position:relative;display:grid;gap:0;margin:2px 0 10px}.activity-list:has(>.activity-item+.activity-item):before{position:absolute;background:var(--border);content:"";width:1px;top:15px;bottom:15px;left:9.5px}.activity-item{position:relative;min-width:0}.activity-item>summary{display:flex;color:var(--text-muted);list-style:none;align-items: center;gap:10px;min-height:30px;transition:color .14s ease-out;font-size:13.5px}.activity-item>summary::-webkit-details-marker{display:none}.activity-item>summary:hover{color:var(--text-secondary)}.activity-icon{position:relative;z-index:1;display:inline-grid;background:var(--panel);color:var(--text-faint);border-radius:50%;flex:none;place-items: center;width:20px;height:20px}.activity-item>summary:hover .activity-icon{color:var(--text-muted)}.activity-spinner{border:1.5px solid var(--text-secondary);animation:spin .8s linear infinite;border-top-color:#0000;border-radius:50%;width:11px;height:11px}.activity-label{display:flex;overflow:hidden;white-space:nowrap;align-items:baseline;gap:7px;min-width:0}.activity-verb{flex:none}.activity-target{overflow:hidden;color:var(--text-secondary);font-family:var(--mono);text-overflow:ellipsis;min-width:0;font-size:12px}.activity-item:not(.state-output-available):not(.state-output-error):not(.state-output-denied):not(.reasoning-part)>summary{color:var(--text)}.activity-item.state-output-error>summary,.activity-item.state-output-error .activity-icon{color:var(--error)}.activity-item.state-output-denied>summary .activity-verb{color:var(--text-faint);text-decoration:line-through}.activity-item.state-approval-requested>summary,.activity-item.state-approval-requested .activity-icon{color:var(--warning)}.activity-note{flex:none;font-size:12px}.tool-badge{color:var(--text-faint);font-family:var(--mono);white-space:nowrap;flex:none;font-size:11px}.tool-badge.failed{color:var(--error)}.activity-chevron{color:var(--text-faint);opacity:0;flex:none;transition:opacity .14s ease-out,transform .16s ease-out}.activity-item>summary:hover .activity-chevron,.activity-item[open]>summary .activity-chevron{opacity:1}.activity-item>summary:focus-visible .activity-chevron{opacity:1}.activity-item[open]>summary .activity-chevron{transform:rotate(90deg)}.tool-details{display:grid;gap:10px;padding:4px 0 12px 30px}.reasoning-body{padding:2px 0 10px 30px}.reasoning-body .message-text{color:var(--text-muted);font-size:13.5px;line-height:1.65}.shimmer{background:linear-gradient(90deg,var(--text-muted)0%,var(--text-muted)35%,var(--text)50%,var(--text-muted)65%,var(--text-muted)100%);color:#0000;animation:shimmer 2s linear infinite;background-size:250% 100%;-webkit-background-clip:text;background-clip:text}@keyframes shimmer{0%{background-position:100% 0}to{background-position:-150% 0}}.tool-view{display:grid;gap:6px;min-width:0}.tool-view-path,.tool-view-note{color:var(--text-muted);font-family:var(--mono);overflow-wrap:anywhere;font-size:11px}.tool-view-list{display:grid;grid-auto-rows:max-content;overflow:auto;color:var(--text-secondary);font-family:var(--mono);list-style:none;gap:2px;max-height:240px;margin:0;padding:0;font-size:11px}.tool-view-list li{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tool-details pre.diff-view{white-space:pre;overflow-wrap:normal}.diff-line.added{color:var(--success);background:#8bd49c14}.diff-line.removed{color:var(--error);background:#f28b8214}.diff-line.hunk{color:var(--info)}.diff-line.meta{color:var(--text-muted)}.tool-details pre.command-line{color:var(--text)}.tool-details pre.command-output.failed{border-color:#f28b8259}.tool-event .tool-raw summary{display:inline-flex;color:var(--text-muted);cursor:pointer;min-height:32px;padding:0;font-size:11px}.tool-raw{display:grid;gap:10px}.tool-raw>div>span,.tool-details>div:not(.tool-view)>span{display:block;color:var(--text-muted);letter-spacing:.04em;text-transform:uppercase;margin-bottom:4px;font-size:10px;font-weight:650}.tool-details pre{border:1px solid var(--border-soft);background:var(--base);color:var(--text-secondary);border-radius:7px;max-height:280px;padding:10px}.source-link,.attachment-line{display:flex;color:var(--info);text-decoration:none;align-items: center;gap:7px;width:max-content;max-width:100%;margin:8px 0;font-size:12px}.source-link span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.source-link:not(.static):hover{text-decoration:underline}.source-link.static,.attachment-line{color:var(--text-muted)}.slash-command-menu{position:absolute;z-index:45;overflow:hidden;border:1px solid var(--border-strong);background:var(--inset);border-radius:11px;bottom:calc(100% + 8px);left:0;right:0;box-shadow:0 16px 38px #0000006b}.slash-command-menu-header{display:flex;border-bottom:1px solid var(--border-soft);color:var(--text-muted);letter-spacing:.02em;text-transform:uppercase;justify-content:space-between;align-items: center;gap:12px;min-height:34px;padding:7px 10px 6px 12px;font-size:10px}.slash-command-menu-header span:last-child{letter-spacing:0;text-transform:none}.slash-command-menu kbd{border:1px solid var(--border);background:var(--elevated);color:var(--text-secondary);font:inherit;border-radius:4px;padding:1px 4px}.slash-command-options{overflow-y:auto;overscroll-behavior:contain;max-height:min(390px,48dvh);padding:5px}.slash-command-option{display:grid;grid-template-columns:27px minmax(0,1fr)auto;color:var(--text-secondary);text-align:left;background:0 0;border-radius:7px;align-items: center;gap:8px;width:100%;min-height:49px;padding:6px 9px}.appearance-starter .slash-command-options{max-height:min(310px,34dvh)}.appearance-starter .slash-command-menu{top:calc(100% + 8px);bottom:auto}.slash-command-option:hover,.slash-command-option.selected{background:var(--elevated);color:var(--text)}.slash-command-option.selected{box-shadow:inset 2px 0 0 var(--accent)}.slash-command-icon{display:grid;border:1px solid var(--border-soft);background:var(--inset);color:var(--text-muted);border-radius:6px;place-items: center;width:26px;height:26px}.slash-command-copy{display:grid;gap:2px;min-width:0}.slash-command-copy>span{display:flex;align-items:baseline;gap:7px;min-width:0}.slash-command-copy code{color:var(--accent-text);font-size:12px;font-weight:650}.slash-command-copy small,.slash-command-enter{color:var(--text-muted);font-size:10px}.slash-command-copy>small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.slash-command-enter{opacity:0}.slash-command-option.selected .slash-command-enter{opacity:1}.slash-command-empty{color:var(--text-muted);text-align:center;padding:18px 12px;font-size:12px}.slash-command-empty code{color:var(--accent-text)}.command-result{display:grid;grid-template-columns:26px minmax(0,1fr)auto;overflow-y:auto;border:1px solid var(--border);background:var(--elevated);color:var(--text-secondary);border-radius:9px;align-items: start;gap:8px;max-height:min(250px,36dvh);margin-bottom:7px;padding:9px 9px 9px 10px}.command-result.tone-success{border-color:#315446}.command-result.tone-error{border-color:#674244}.command-result-icon{display:grid;color:var(--accent-text);place-items: center;width:24px;height:24px}.command-result.tone-success .command-result-icon{color:#8bd6ac}.command-result.tone-error .command-result-icon{color:#f4aaa3}.command-result>div{min-width:0}.command-result strong{display:block;color:var(--text);font-size:11px}.command-result p{color:var(--text-secondary);overflow-wrap:anywhere;white-space:pre-wrap;margin:3px 0 0;font:10.5px/1.5 ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace}.command-result>button{display:grid;color:var(--text-muted);border-radius:6px;place-items: center;width:28px;height:28px}.command-result>button:hover{background:var(--inset);color:var(--text)}.context-meter{display:inline-flex;font-family:var(--mono);white-space:nowrap;align-items: center;gap:6px;margin-left:auto}.context-meter-bar{position:relative;overflow:hidden;background:var(--border-soft);border-radius:999px;width:44px;height:4px}.context-meter-bar>span{position:absolute;border-radius:inherit;background:var(--text-muted);inset:0 auto 0 0}.context-meter.warning{color:var(--warning)}.context-meter.warning .context-meter-bar>span{background:var(--warning)}.context-meter.critical{color:var(--error)}.context-meter.critical .context-meter-bar>span{background:var(--error)}.inline-spinner{display:inline-block;animation:spin .8s linear infinite;border:2px solid;border-top-color:#0000;border-radius:50%;flex:none;width:14px;height:14px}@keyframes spin{to{transform:rotate(360deg)}}.model-picker{overflow:hidden;border:1px solid var(--border);background:var(--panel);color:var(--text);border-radius:14px;width:min(560px,100% - 32px);max-height:calc(100dvh - 48px);padding:0}.model-picker::backdrop{background:#000000a6}.model-picker-content{display:flex;flex-direction:column;max-height:calc(100dvh - 50px);padding:24px}.model-picker header{display:flex;justify-content:space-between;align-items: flex-start;gap:16px;margin-bottom:20px}.model-picker h2{letter-spacing:-.035em;margin:0;font-size:23px;font-weight:550}.model-picker header p{color:var(--text-muted);margin:6px 0 0;font-size:12px}.model-search{flex-shrink:0}.model-list{overflow-y:auto;min-height:100px;margin:16px -8px}.model-option{display:flex;text-align:left;background:0 0;border-radius:8px;align-items: center;gap:16px;width:100%;min-height:64px;padding:12px}.model-option:hover:not(:disabled){background:var(--elevated)}.model-option.selected{background:var(--accent-soft);color:var(--accent-text)}.model-option>span:first-child{flex:1;min-width:0}.model-option strong,.model-option small{display:block;overflow-wrap:anywhere}.model-option strong{font-size:14px;font-weight:550}.model-option small{font:11px var(--mono);color:var(--text-muted);margin-top:4px}.model-option.selected small{color:var(--accent-text)}.model-capability{white-space:nowrap;font-size:11px}.model-picker footer{display:flex;border-top:1px solid var(--border);color:var(--text-muted);flex-shrink:0;justify-content:space-between;align-items: center;gap:10px;padding-top:16px;font-size:11px}.model-list-empty,.model-picker-error{color:var(--text-secondary);padding:12px;font-size:13px}.model-picker-error{color:var(--error)}.authorization-gate{display:grid;background:var(--base);align-content: center;justify-items:start;width:min(100% - 40px,560px);height:100%;margin:0 auto}.authorization-mark{border:1px solid var(--accent-border);background:var(--accent-soft);border-radius:13px;width:48px;height:48px;margin-bottom:22px}.authorization-gate p{color:var(--text-secondary);margin:13px 0 17px;font-size:15px}.authorization-gate pre{border:1px solid var(--border);background:var(--inset);color:var(--accent-text);border-radius:9px;min-width:190px;padding:11px 14px}.authorization-gate small{color:var(--text-muted);max-width:58ch;margin-top:13px}.project-browser-backdrop{position:fixed;z-index:80;display:grid;background:#06090dc7;place-items: center;padding:24px;inset:0}.project-browser{display:grid;grid-template-rows:auto auto minmax(0,1fr)auto;overflow:hidden;border:1px solid var(--border-strong);background:var(--panel);border-radius:14px;width:min(100%,1040px);height:min(700px,100dvh - 48px);box-shadow:0 24px 64px #0000008c}.pb-header{display:flex;justify-content:space-between;align-items: flex-start;gap:12px;padding:16px 18px 12px}.pb-header h1{letter-spacing:-.015em;margin:0;font-size:17px;font-weight:660}.pb-header p{color:var(--text-muted);margin:3px 0 0;font-size:12px}.pb-toolbar{display:flex;border-bottom:1px solid var(--border-soft);align-items: center;gap:8px;padding:0 14px 12px 12px}.pb-address{display:flex;overflow-x:auto;border:1px solid var(--border);background:var(--inset);color:var(--text-muted);white-space:nowrap;scrollbar-width:none;border-radius:8px;flex:auto;align-items: center;gap:1px;min-width:0;min-height:34px;padding:2px 6px;font-size:12px}.pb-crumb-group{display:inline-flex;align-items: center}.pb-crumb{color:var(--text-secondary);background:0 0;border-radius:5px;padding:4px 6px}.pb-crumb.home{display:inline-flex;color:var(--text-muted);padding:4px 5px}.pb-crumb:hover:not(:disabled){background:var(--elevated);color:var(--text)}.pb-crumb[aria-current=location]{color:var(--text);font-weight:600}.pb-crumb-label{color:var(--text-secondary);padding:0 6px}.pb-filter{display:flex;border:1px solid var(--border);background:var(--inset);color:var(--text-muted);border-radius:8px;flex:0 0 220px;align-items: center;gap:7px;min-height:34px;padding:0 10px}.pb-filter:focus-within{border-color:var(--accent-border)}.pb-filter input{outline:0;color:var(--text);font:inherit;background:0 0;border:0;width:100%;min-width:0;font-size:12px}.pb-main{display:grid;grid-template-columns:210px minmax(0,1fr);min-height:0}.pb-sidebar{display:flex;overflow-y:auto;border-right:1px solid var(--border-soft);background:var(--base);flex-direction:column;gap:1px;min-height:0;padding:10px 8px}.pb-sidebar h2{color:var(--text-muted);letter-spacing:.06em;text-transform:uppercase;margin:12px 8px 4px;font-size:10.5px;font-weight:650}.pb-side-item{display:flex;color:var(--text-secondary);text-align:left;background:0 0;border-radius:7px;align-items: center;gap:9px;min-height:32px;padding:5px 9px;font-size:12.5px}.pb-side-item>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pb-side-item>svg{color:var(--text-muted);flex:none}.pb-side-item:hover:not(:disabled){background:var(--elevated);color:var(--text)}.pb-side-item.active{background:var(--accent-soft);color:var(--accent-text)}.pb-side-item.active>svg{color:var(--accent-text)}.pb-side-item.missing{opacity:.5;text-decoration:line-through}.pb-content{overflow-y:auto;min-height:0;padding:10px 12px}.pb-list{display:grid;align-content: start;gap:1px}.pb-list.loading{opacity:.55;pointer-events:none}.pb-row{display:flex;color:var(--text-muted);border-radius:7px;align-items: center;gap:6px;padding-right:8px}.pb-row:hover,.pb-row:focus-within{background:var(--elevated)}.pb-row-main{display:flex;color:var(--text-secondary);text-align:left;background:0 0;border-radius:7px;flex:auto;align-items: center;gap:10px;min-width:0;min-height:36px;padding:6px 10px;font-size:13px}.pb-row-main>svg{color:var(--accent-text);flex:none}.pb-row:hover .pb-row-main{color:var(--text)}.pb-row-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pb-row-main .entry-note{margin-left:auto}.pb-row-open{border:1px solid var(--border);background:var(--panel);color:var(--text-secondary);opacity:0;border-radius:6px;flex:none;padding:3px 11px;font-size:11.5px}.pb-row:hover .pb-row-open,.pb-row:focus-within .pb-row-open{opacity:1}.pb-row-open:hover:not(:disabled){border-color:var(--accent-border);color:var(--accent-text)}.pb-row.file .pb-row-main,.pb-row.file .pb-row-main>svg{color:var(--text-muted)}@media (hover:none){.pb-row-open{opacity:1}}.pb-home{display:grid;gap:22px;padding:6px 4px}.pb-home h2{color:var(--text-muted);letter-spacing:.06em;text-transform:uppercase;margin:0 0 9px;font-size:10.5px;font-weight:650}.pb-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:8px}.pb-card{display:flex;border:1px solid var(--border);background:var(--inset);color:var(--text-secondary);text-align:left;border-radius:10px;align-items: center;gap:11px;min-width:0;padding:11px 12px}.pb-card>svg{color:var(--accent-text);flex:none}.pb-card>span{display:grid;gap:2px;min-width:0}.pb-card strong{overflow:hidden;color:var(--text);text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:600}.pb-card small{overflow:hidden;color:var(--text-muted);font-family:var(--mono);text-overflow:ellipsis;white-space:nowrap;font-size:10.5px}.pb-card:hover:not(:disabled),.pb-tile:hover:not(:disabled){border-color:var(--border-strong);background:var(--elevated)}.pb-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}.pb-tile{display:grid;border:1px solid var(--border);background:var(--inset);color:var(--text-secondary);text-align:left;border-radius:10px;justify-items:start;gap:3px;min-width:0;padding:12px}.pb-tile>svg{color:var(--accent-text);margin-bottom:6px}.pb-tile strong{color:var(--text);font-size:13px;font-weight:600}.pb-tile small{overflow:hidden;color:var(--text-muted);font-family:var(--mono);text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:10px}.pb-tile.missing{opacity:.55;border-style:dashed}.pb-footer{display:flex;border-top:1px solid var(--border-soft);background:var(--base);justify-content:space-between;align-items: center;gap:16px;min-height:60px;padding:10px 14px 10px 16px}.pb-footer.has-root-confirmation{min-height:74px}.pb-footer-info{display:grid;gap:5px;min-width:0}.pb-footer .selected-path{max-width:440px}.pb-view-options{display:flex;gap:14px}.project-browser-backdrop.compact{padding:0}.compact .project-browser{border:0;border-radius:0;width:100%;height:100dvh}.compact .pb-main{grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr)}.compact .pb-sidebar{overflow-x:auto;overflow-y:hidden;border-right:0;border-bottom:1px solid var(--border-soft);flex-direction:row;gap:6px;padding:8px}.compact .pb-sidebar h2{display:none}.compact .pb-side-item{border:1px solid var(--border);flex:none;min-height:40px}.compact .pb-toolbar{flex-wrap:wrap}.compact .pb-filter{flex:100%;min-height:40px}.compact .pb-row-main{min-height:44px}.compact .pb-footer{flex-direction:column;align-items:stretch;gap:8px}.compact .project-browser-actions{flex-wrap:wrap;justify-content:flex-end}.compact .pb-footer .selected-path{max-width:100%}.compact .project-browser .icon-button{width:44px;height:44px}.icon-button{display:inline-flex;color:var(--text-muted);background:0 0;border-radius:8px;justify-content:center;align-items: center;width:34px;height:34px}.icon-button:hover:not(:disabled){background:var(--elevated);color:var(--text)}.icon-button.compact{width:28px;height:28px}.picker-fallback-notice{display:grid;grid-template-columns:auto minmax(0,1fr)auto;border:1px solid var(--border);background:var(--inset);color:var(--text-secondary);border-radius:9px;align-items: center;gap:10px;margin:2px 2px 8px;padding:10px 12px}.picker-fallback-notice.info>svg{color:var(--info)}.picker-fallback-notice.error>svg{color:var(--error)}.picker-fallback-notice>span{display:grid;min-width:0}.picker-fallback-notice strong{color:var(--text);font-size:12px}.picker-fallback-notice small{color:var(--text-muted);font-size:11px}.picker-fallback-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:7px}.picker-pending-banner{position:fixed;z-index:90;display:grid;grid-template-columns:auto minmax(0,1fr)auto;border:1px solid var(--border);background:var(--elevated);color:var(--accent-text);border-radius:10px;align-items: center;gap:10px;width:min(440px,100vw - 32px);padding:10px 12px;bottom:16px;right:16px;box-shadow:0 12px 32px #00000073}.picker-pending-banner>span:not(.inline-spinner){display:grid;gap:3px;min-width:0}.picker-pending-banner strong{color:var(--text);font-size:12px}.picker-pending-banner small{color:var(--text-muted);font-size:11px;line-height:1.45}.launch-folder-offer{display:flex;border:1px solid var(--border-soft);background:0 0;border-radius:12px;flex-wrap:wrap;justify-content:space-between;align-items: center;gap:10px 14px;margin-top:12px;padding:10px 10px 10px 14px}.launch-folder-offer>span{display:grid;flex:220px;gap:2px;min-width:0}.launch-folder-offer strong{overflow:hidden;color:var(--text);font-family:var(--mono);text-overflow:ellipsis;white-space:nowrap;font-size:12px}.launch-folder-offer small{color:var(--text-muted);font-size:11px}.launch-folder-offer .launch-folder-broad{color:var(--warning)}.starter-recent-projects{display:flex;flex-wrap:wrap;align-items: center;gap:6px}.starter-recent-projects small{color:var(--text-muted);margin-right:4px;font-size:11px}.starter-recent-projects button{display:inline-flex;overflow:hidden;border:1px solid var(--border);background:var(--inset);color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap;border-radius:999px;align-items: center;gap:6px;max-width:220px;min-height:32px;padding:4px 11px;font-size:12px}.starter-recent-projects button:hover:not(:disabled){border-color:var(--border-strong);color:var(--text)}.folder-loading-status{position:sticky;z-index:2;display:flex;border:1px solid var(--border-soft);background:color-mix(in srgb,var(--panel)92%,transparent);color:var(--text-muted);backdrop-filter:blur(6px);border-radius:7px;align-items: center;gap:8px;min-height:36px;margin:0 2px 6px;padding:7px 10px;font-size:11px;top:0}.entry-note{color:var(--text-muted);font-family:var(--mono);font-size:10px}.browser-state{display:grid;color:var(--text-muted);text-align:center;align-content: center;justify-items:center;min-height:220px;padding:28px}.browser-state h2{color:var(--text);margin:13px 0 3px;font-size:15px;font-weight:640}.browser-state p{max-width:50ch;margin:0 0 14px;font-size:12px}.error-state>svg{color:var(--error)}.load-more-button{border:1px solid var(--border);background:var(--inset);color:var(--text-secondary);border-radius:8px;min-height:38px;margin:9px}.checkbox-control{display:flex;color:var(--text-muted);white-space:nowrap;align-items: center;gap:8px;font-size:11px}.checkbox-control input{accent-color:var(--accent);width:15px;height:15px}.broad-root-warning{display:grid;grid-template-columns:auto minmax(180px,1fr);color:var(--warning);align-items: start;gap:2px 8px;max-width:520px;font-size:11px}.broad-root-warning>svg{margin-top:1px}.broad-root-warning button{grid-column:2;color:var(--text-secondary);text-decoration:underline;background:0 0;width:max-content;padding:1px 0;font-size:11px}.project-browser-actions{justify-content:flex-end;min-width:0}.selected-path{overflow:hidden;color:var(--text-muted);font-family:var(--mono);text-overflow:ellipsis;white-space:nowrap;max-width:310px;font-size:10px}.agent-working{display:flex;color:var(--text-muted);align-items:baseline;gap:8px;padding:10px 0 4px;font-size:13.5px}.agent-working-time{color:var(--text-faint);font-variant-numeric:tabular-nums;font-size:12.5px}.conversation-controls{position:relative;z-index:4;background:var(--panel);flex:none;padding:0 0 18px}.conversation-controls:before{position:absolute;background:linear-gradient(to bottom,transparent,var(--panel));content:"";pointer-events:none;height:28px;top:-28px;left:0;right:0}.inline-error,.new-session-error{display:flex;color:#f2aaa3;background:#1c1213;border:1px solid #4a2a2c;border-radius:12px;align-items: center;gap:9px;margin-bottom:10px;padding:9px 12px;font-size:12.5px}.inline-error span{flex:1}.inline-error button{color:var(--text);background:0 0;font-weight:600}.new-session-error{margin:12px 0 0}.approval-dock,.prompt-dock{overflow:hidden;border:1px solid var(--border);background:var(--inset);border-radius:16px;margin-bottom:10px}.approval-row{display:grid;grid-template-columns:auto minmax(0,1fr)auto;align-items: center;gap:12px;padding:12px 14px}.approval-row+.approval-row{border-top:1px solid var(--border-soft)}.approval-icon{display:inline-flex;color:var(--warning)}.approval-row strong,.prompt-dock strong{color:var(--text);font-size:13px;font-weight:600}.approval-row p,.prompt-dock p{color:var(--text-secondary);margin:2px 0;font-size:13px}.approval-row small{color:var(--text-muted);font-size:11.5px}.approval-actions,.project-browser-actions,.prompt-options,.prompt-custom{display:flex;align-items: center;gap:8px}.prompt-options{flex-wrap:wrap}.prompt-dock{display:grid;gap:10px;padding:14px}.prompt-custom input{border:1px solid var(--border);outline:0;background:var(--base);border-radius:10px;flex:1;min-width:0;min-height:34px;padding:6px 11px}.prompt-custom input:focus-visible{border-color:var(--border-strong)}.primary-button,.secondary-button{display:inline-flex;border-radius:999px;justify-content:center;align-items: center;gap:7px;min-height:34px;padding:6px 14px;transition:background-color .14s ease-out,border-color .14s ease-out,color .14s ease-out;font-size:13px;font-weight:500}.primary-button{background:var(--primary);color:var(--on-primary)}.primary-button:hover:not(:disabled){background:var(--primary-hover)}.primary-button:disabled{background:var(--elevated);color:var(--text-muted);opacity:1}.secondary-button{border:1px solid var(--border);color:var(--text-secondary);background:0 0}.secondary-button:hover:not(:disabled){border-color:var(--border-strong);background:var(--elevated);color:var(--text)}.compact-primary{min-height:32px;padding:5px 12px}.jump-to-latest{display:flex;border:1px solid var(--border);background:var(--inset);color:var(--text-secondary);border-radius:999px;align-items: center;gap:6px;min-height:32px;margin:0 auto 12px;padding:4px 12px;font-size:12.5px}.jump-to-latest:hover{color:var(--text)}.command-composer-shell{position:relative;isolation:isolate}.composer,.starter-composer{position:relative;overflow:hidden;border:1px solid var(--border);background:var(--inset);border-radius:22px;transition:border-color .16s ease-out,box-shadow .16s ease-out;box-shadow:0 14px 40px #00000059}.composer:focus-within,.starter-composer:focus-within{border-color:var(--border-strong)}.composer.disabled{opacity:.75}.command-composer-shell.is-streaming:before{position:absolute;z-index:-1;content:"";filter:blur(14px);pointer-events:none;animation:composer-glow 2.6s ease-in-out infinite alternate;background:radial-gradient(#5cc8bb8c,#5cc8bb00 70%);border-radius:50%;height:54px;top:-22px;left:12%;right:12%}@keyframes composer-glow{0%{opacity:.45;transform:scaleX(.92)}to{opacity:1;transform:scaleX(1)}}.composer textarea,.starter-composer textarea{display:block;resize:none;outline:0;color:var(--text);field-sizing:content;background:0 0;border:0;width:100%;min-height:54px;max-height:240px;padding:16px 20px 4px;font-size:15px;line-height:1.55}.starter-composer textarea{min-height:88px;padding-top:18px}.composer textarea::placeholder,.starter-composer textarea::placeholder,.prompt-custom input::placeholder{color:var(--text-muted);opacity:1}.composer-toolbar,.starter-toolbar{display:flex;align-items: center;gap:2px;min-height:50px;padding:4px 10px 10px}.composer-toolbar-spacer{flex:1}.composer-command-trigger{display:inline-grid;color:var(--text-muted);font-family:var(--mono);background:0 0;border-radius:50%;flex:none;place-items: center;width:32px;height:32px;transition:background-color .14s ease-out,color .14s ease-out;font-size:15px}.composer-command-trigger:hover{background:var(--elevated);color:var(--text)}.workspace-controls-agent{overflow-x:auto;scrollbar-width:none;flex:0 auto}.workspace-controls-agent::-webkit-scrollbar{display:none}.draft-status{color:var(--text-muted);margin-right:8px;font-size:12px}.send-button,.abort-button{display:inline-grid;background:var(--primary);color:var(--on-primary);border-radius:50%;flex:none;place-items: center;width:34px;height:34px;margin-left:6px;transition:background-color .14s ease-out,transform .14s ease-out}.send-button:hover:not(:disabled),.abort-button:hover{background:var(--primary-hover)}.send-button:active:not(:disabled),.abort-button:active{transform:scale(.94)}.send-button:disabled{background:var(--elevated);color:var(--text-muted);opacity:1}.abort-button svg{fill:currentColor}.button-loading{border:2px solid #8a8a90;border-top-color:var(--on-primary);animation:spin .8s linear infinite;border-radius:50%;width:13px;height:13px}.context-meter{color:var(--text-faint);margin:0 6px 0 0;font-size:11px}.context-meter-bar{width:36px}.slash-command-menu,.command-result{border-radius:16px}.slash-command-option.selected{box-shadow:none}.slash-command-copy code,.slash-command-empty code{color:var(--text)}.model-option.selected{background:var(--elevated);color:var(--text)}.model-option.selected small{color:var(--text-secondary)}.model-search{display:flex;border:1px solid var(--border);color:var(--text-muted);background:var(--inset);border-radius:10px;align-items: center;gap:8px;min-height:40px;padding:0 12px}.model-search:focus-within{border-color:var(--border-strong)}.model-search input{outline:none;background:0 0;border:0;width:100%;min-width:0;padding:9px 0;font-size:13.5px}.new-session-surface{display:flex;flex-direction:column;flex:1;min-height:0}.new-session-body{display:grid;overflow-y:auto;flex:1;place-items: center;min-height:0;padding:24px 24px 12vh}.new-session-inner{width:min(100%,720px)}.new-session-title{text-align:center;margin-bottom:24px}.new-session-title h1{color:var(--text);letter-spacing:-.025em;text-wrap:balance;overflow-wrap:anywhere;margin:0;font-size:clamp(24px,2.3vw,30px);font-weight:500;line-height:1.25}.title-project{color:var(--text-secondary)}.starter-description{color:var(--text-muted);margin:10px 0 0;font-size:14.5px}.starter-suggestions{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin-top:16px}.starter-suggestions button{display:inline-flex;border:1px solid var(--border);color:var(--text-secondary);background:0 0;border-radius:999px;align-items: center;gap:7px;min-height:32px;padding:4px 13px 4px 11px;transition:background-color .14s ease-out,border-color .14s ease-out,color .14s ease-out;font-size:13px}.starter-suggestions button>svg{color:var(--text-muted)}.starter-suggestions button:hover:not(:disabled){border-color:var(--border-strong);background:var(--elevated);color:var(--text)}.starter-projects{display:grid;overflow:hidden;border:1px solid var(--border-soft);border-radius:16px;margin-top:20px}.starter-project{display:flex;color:var(--text-muted);text-align:left;background:0 0;align-items: center;gap:12px;min-height:52px;padding:8px 16px;transition:background-color .14s ease-out}.starter-project+.starter-project{border-top:1px solid var(--border-soft)}.starter-project:hover:not(:disabled){background:var(--hover)}.starter-project-copy{display:grid;flex:1;min-width:0}.starter-project-copy strong,.starter-project-copy small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.starter-project-copy strong{color:var(--text);font-size:13.5px;font-weight:500}.starter-project-copy small{color:var(--text-muted);font-size:12px}.starter-project-action{color:var(--text-muted);font-size:12.5px}.starter-project:hover .starter-project-action{color:var(--text)}.rail-scrim,.mobile-only{display:none}@media (max-width:760px){.app-shell{display:block}.mobile-only{display:inline-flex}.session-rail{position:fixed;z-index:70;visibility:hidden;width:min(86vw,300px);transition:transform .19s cubic-bezier(.16,1,.3,1),visibility 0s linear .19s;inset:0 auto 0 0;transform:translate(-102%)}.session-rail.open{visibility:visible;transition-delay:0s;transform:translate(0)}.rail-scrim{position:fixed;z-index:60;display:block;background:#0009;width:100%;height:100%;inset:0}.rail-header .icon-button{width:44px;height:44px}.rail-nav-item,.session-item{min-height:44px}.workspace-main{width:100%;height:100dvh}.top-bar{padding:0 8px}.top-bar .icon-button{width:44px;height:44px}.workspace-path{max-width:44vw;height:44px}.changes-toggle{min-width:44px;height:44px}.conversation-column{padding-inline-start:16px;padding-inline-end:16px}.conversation-scroll>.conversation-column{padding-top:8px;padding-bottom:20px}.conversation-controls{padding-bottom:10px}.role-user .message-parts{max-width:88%}.composer-toolbar,.starter-toolbar{padding-inline-start:6px;padding-inline-end:6px}.ribbon-model{max-width:120px}.context-meter{display:none}.send-button,.abort-button{width:40px;height:40px}.composer-command-trigger,.ribbon-model,.ribbon-select{min-height:40px}.slash-command-menu-header span:last-child{display:none}.slash-command-option{min-height:52px}.approval-row{grid-template-columns:auto minmax(0,1fr)}.approval-actions{grid-column:2;justify-content:flex-start}.approval-actions button,.prompt-options button,.prompt-custom button,.prompt-custom input,.command-result>button,.starter-suggestions button,.jump-to-latest,.model-picker .icon-button{min-height:44px}.command-result>button,.model-picker .icon-button{width:44px;min-width:44px}.new-session-body{align-items: start;padding:16vh 16px 24px}.model-picker-content{padding:18px}.model-capability{white-space:normal;text-align:right;max-width:76px}}@media (max-width:460px){.ribbon-model{max-width:96px}.ribbon-select{padding-inline-start:8px;padding-inline-end:8px}.approval-actions,.prompt-options{flex-direction:column;align-items:stretch}.primary-button,.secondary-button{width:100%}.project-browser-actions{flex-wrap:wrap}}@media (prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
|