fix(session-ui): summarize collapsed tool groups like the TUI

Replace the "Used N <tool titles>" label with per-kind counts that match
the TUI activity summary, e.g. "2 commands, 1 edit, 2 thoughts, 1 read,
2 tools". Thoughts are counted instead of dropped, a thought-only group
reads "1 thought", and Code Mode execute counts its nested calls.
This commit is contained in:
Brendonovich committed 2026-10-07 11:47:59 +00:00
1 parent 10b11ba946
commit 169fff0ae6
86 files changed
+106 -482

No files matched your search

@@ -38,7 +38,7 @@ test("patch file borders retain a full CSS pixel at 390px on high-density displa
reducedMotion: true,
viewport: { width: 390, height: 900 },
})
await page.getByRole("button", { name: "Used 1 Patch", exact: true }).click()
await page.getByRole("button", { name: "1 edit", exact: true }).click()
const patch = page.locator('[data-component="apply-patch-tool"]')
const trigger = patch.getByRole("button", { name: /patch-border.ts/ })
await expect(trigger).toHaveAttribute("aria-expanded", "false")
@@ -223,7 +223,7 @@ for (const scenario of scenarios) {
.closest('[data-component="edit-tool"]')
?.querySelector('[data-slot="collapsible-trigger"][data-locked]')
// Grouped file headers stack below the stuck Used header.
// Grouped file headers stack below the stuck tool group header.
const group = element
.closest('[data-component="collapsed-tool-group"]')
?.querySelector(':scope > [data-component="collapsible"] > [data-slot="collapsible-trigger"]')
@@ -931,10 +931,10 @@ for (const delivery of ["steer", "queue"] as const) {
})
const tools = page.locator('[data-timeline-part-ids="tool_queue_read,tool_queue_grep"]')
await expect(tools).toBeVisible()
await expect(tools).toHaveText(/^Used\s*2\s*Read, Grep$/)
await expect(tools).toHaveText(/^1 read, 1 tool$/)
await expect(tools.locator('[data-component="context-tool-group-trigger"]')).toHaveAttribute(
"aria-label",
"Used 2 Read, Grep",
"1 read, 1 tool",
)
await expect(thinking).toHaveCount(0)
await expect(pending).toBeVisible()
@@ -943,7 +943,7 @@ for (const delivery of ["steer", "queue"] as const) {
])
await transcript.screenshot({ path: testInfo.outputPath("pending-steer.png") })
await expect(tools.or(pending)).toHaveText([/^Used\s*2\s*Read, Grep$/, /U2: Also check the retry path\./])
await expect(tools.or(pending)).toHaveText([/^1 read, 1 tool$/, /U2: Also check the retry path\./])
await expect(transcript.locator('[data-timeline-row="AssistantPart"]').filter({ has: tools })).toHaveAttribute(
"data-message-id",
userID,
@@ -990,7 +990,7 @@ for (const delivery of ["steer", "queue"] as const) {
await expect(response).toHaveAttribute("data-message-id", inboxID)
await expect(thinking).toHaveCount(0)
await expect(tools.or(pending).or(response)).toHaveText([
/^Used\s*2\s*Read, Grep$/,
/^1 read, 1 tool$/,
/U2: Also check the retry path\./,
/A3: Now checking the retry path for U2\./,
])
@@ -19,7 +19,7 @@ test("space activates a focused timeline button instead of scrolling", async ({
seedHistory: true,
})
const scroller = page.locator(".scroll-view__viewport", { has: page.locator("[data-timeline-row]") })
const trigger = page.getByRole("button", { name: "Used 1 Shell", exact: true })
const trigger = page.getByRole("button", { name: "1 command", exact: true })
await expect
.poll(() => scroller.evaluate((element) => element.scrollHeight - element.clientHeight))
.toBeGreaterThan(300)
@@ -16,7 +16,7 @@ for (const locale of ["de", "ar"] as const) {
})
const group = page.locator(`[data-timeline-part-ids="${ids.join(",")}"]`)
const label = locale === "de" ? "2 Lesen und Glob verwendet" : "استُخدمت 2 أداتان: \u2068قراءة وGlob\u2069"
const label = locale === "de" ? "1 Lesevorgang und 1 tool" : "1 قراءة و1 tool"
await expect(group.getByRole("button")).toHaveAccessibleName(label)
await expect(group.locator('[data-component="context-tool-group-trigger"]')).toHaveAttribute("aria-label", label)
await expect(page.locator("html")).toHaveAttribute("lang", locale)
@@ -26,7 +26,7 @@ test("keeps failed search calls and their error cards inside the collapsed stack
await setupTimeline(page, { messages: [userMessage(), assistantMessage(parts)] })
const group = page.locator('[data-component="collapsed-tool-group"]')
const summary = group.getByRole("button", { name: "Used 2 Glob, Grep", exact: true })
const summary = group.getByRole("button", { name: "2 tools", exact: true })
await expect(summary).toHaveAttribute("aria-expanded", "false")
await summary.click()
await expect(group.locator('[data-kind="tool-error-card"]')).toHaveCount(2)
@@ -2,7 +2,7 @@ import { expect, test } from "@playwright/test"
import { timelinePresets } from "@opencode/session-ui/timeline/detail"
import { assistantMessage, partUpdated, setupTimeline, toolPart, userMessage } from "../utils/timeline"
test("keeps shell and question failures in their Used group", async ({ page }) => {
test("keeps shell and question failures in their tool group", async ({ page }) => {
const shellID = "prt_transition_error_shell"
const questionID = "prt_transition_error_question"
@@ -59,7 +59,7 @@ test("keeps the parent title anchored when opening a subagent", async ({ page })
const start = await titleInlineStart(page.locator("[data-session-title]").getByRole("heading", { name: parentTitle }))
await page.getByRole("button", { name: "Used 1 Agent", exact: true }).click()
await page.getByRole("button", { name: "1 tool", exact: true }).click()
await page.locator(`a[href="${sessionHref(childID)}"]`).click()
await expectSessionTitle(page, taskDescription)
@@ -181,7 +181,7 @@ test("shows parent lineage while the child timeline loads", async ({ page }) =>
await page.goto(sessionHref(parentID))
await expectSessionTitle(page, parentTitle)
await page.getByRole("button", { name: "Used 1 Agent", exact: true }).click()
await page.getByRole("button", { name: "1 tool", exact: true }).click()
await page.locator(`a[href="${sessionHref(childID)}"]`).click()
await Promise.all([requested.promise, expect(page).toHaveURL(sessionHref(childID))])
await Promise.all([
@@ -206,7 +206,7 @@ test("keeps the parent visible while the child session resolves", async ({ page
await page.goto(sessionHref(parentID))
await expectSessionTitle(page, parentTitle)
await page.getByRole("button", { name: "Used 1 Agent", exact: true }).click()
await page.getByRole("button", { name: "1 tool", exact: true }).click()
await page.locator(`a[href="${sessionHref(childID)}"]`).click()
await requested.promise
await Promise.all([expect(page).toHaveURL(sessionHref(parentID)), expectSessionTitle(page, parentTitle)]).finally(
@@ -370,7 +370,7 @@ function titleInlineStart(title: Locator) {
async function openChildFromParent(page: Page) {
await page.goto(sessionHref(parentID))
await expectSessionTitle(page, parentTitle)
await page.getByRole("button", { name: "Used 1 Agent", exact: true }).click()
await page.getByRole("button", { name: "1 tool", exact: true }).click()
const card = page.locator(`a[href="${sessionHref(childID)}"]`)
await expect(card).toBeVisible()
@@ -127,7 +127,7 @@ test("keeps a grouped tool summary stable as its calls complete", async ({ page
})
const context = page.locator(contextSelector)
const label = "Used 4 Read, Glob, Grep, List"
const label = "1 read, 3 tools"
const trigger = context.locator(':scope > [data-component="collapsible"] > [data-slot="collapsible-trigger"]')
await expect(trigger).toHaveAccessibleName(label)
// Open the group so each call shows whether it is still running.
@@ -235,10 +235,10 @@ test.describe("static projection", () => {
await expect(page.locator('[data-timeline-part-id="prt_expanded_shell"]')).toBeVisible()
const group = page.locator('[data-timeline-part-ids="prt_collapsed_patch,prt_collapsed_read"]')
await expect(group.getByRole("button", { name: "Used 2 Patch, Read", exact: true })).toBeVisible()
await expect(group.getByRole("button", { name: "1 edit, 1 read", exact: true })).toBeVisible()
await expect(group.locator('[data-component="context-tool-group-trigger"]')).toHaveAttribute(
"aria-label",
"Used 2 Patch, Read",
"1 edit, 1 read",
)
await expect(page.locator('[data-timeline-spacing="tool"]')).toHaveCSS("padding-top", "8px")
})
@@ -302,7 +302,7 @@ test("combines adjacent patch calls and repeated files into one group", async ({
await expect(page.locator(`[data-timeline-part-id="${first}"], [data-timeline-part-id="${second}"]`)).toHaveCount(0)
})
test("keeps a failed patch in Used without losing the surviving file choice", async ({ page }) => {
test("keeps a failed patch in its tool group without losing the surviving file choice", async ({ page }) => {
const failed = "prt_grouped_patch_failed"
const surviving = "prt_grouped_patch_surviving"
@@ -582,7 +582,7 @@ test.describe("Working", () => {
await expect(working).toHaveCount(0)
})
test("keeps Working instead of Used 1 Thought while reasoning is the only activity", async ({ page }) => {
test("keeps Working instead of a thought group while reasoning is the only activity", async ({ page }) => {
const timeline = await setupTimeline(page, {
messages: [
userMessage(),
@@ -595,7 +595,7 @@ test.describe("Working", () => {
const group = page.locator('[data-component="collapsed-tool-group"]')
await expect(working).toBeVisible()
await expect(group).toHaveCount(0)
await expect(page.getByRole("button", { name: "Used 1 Thought" })).toHaveCount(0)
await expect(page.getByRole("button", { name: "1 thought" })).toHaveCount(0)
await timeline.send(partUpdated(toolPart("prt_after_thought", "read", "running", { filePath: "package.json" })))
await expect(group).toBeVisible()
@@ -719,7 +719,7 @@ test.describe("Working", () => {
const trigger = page
.locator('[data-component="collapsed-tool-group"]')
.getByRole("button", { name: "Used 2 Shell", exact: true, includeHidden: true })
.getByRole("button", { name: "2 commands", exact: true, includeHidden: true })
await expect(trigger).toHaveAttribute("aria-expanded", "false")
await expect(working).toBeVisible()
@@ -955,7 +955,7 @@ test.describe("background shortcut", () => {
.locator('[data-timeline-part-ids="call_backgrounded,call_shell_backgrounded,call_blocking"]')
.locator(':scope > [data-component="collapsible"] > [data-slot="collapsible-trigger"]')
await expect(used).toHaveText(/^Used\s*3\s*Agent, Shell$/)
await expect(used).toHaveText(/^1 command, 2 tools$/)
await expect(used).toHaveAttribute("aria-expanded", "false")
await page.getByRole("button", { name: "3 running", exact: true }).click()
const list = page.getByRole("menu", { name: "3 running", exact: true })
@@ -1511,7 +1511,7 @@ test("changes timeline presets and saves custom thinking details", async ({ page
.toEqual({ placement: "grouped", details: "collapsed" })
await settings.getByRole("button", { name: "Back to app", exact: true }).click()
await expect(settings).toBeHidden()
await page.getByRole("button", { name: "Used 1 Thought", exact: true }).click()
await page.getByRole("button", { name: "1 thought", exact: true }).click()
await expect(part.getByRole("button")).toHaveAttribute("aria-expanded", "false")
await part.getByRole("button").click()
await expect(part.getByText("The selected mode controls these details.", { exact: true })).toBeVisible()
@@ -374,7 +374,7 @@ function MessageTimelineView(
return message?.type === "compaction" && message.status === "running"
}
// Used and read groups keep the fallback, so each new read does not swap Working out for its short call.
// Tool groups and read groups keep the fallback, so each new read does not swap Working out for its short call.
if (!Predicate.isTagged(row, "AssistantPart") || row.group.type === "context" || row.group.type === "read")
return false
@@ -1,9 +1,9 @@
import { expect, story } from "../../storybook/playwright/story"
story("keeps grouped file choices when the Used group reopens", async ({ mount }) => {
story("keeps grouped file choices when the tool group reopens", async ({ mount }) => {
const root = await mount("current-session-research-agents--agent-research", { args: { scenario: "workflow" } })
const group = root.locator('[data-component="collapsed-tool-group"]').filter({ hasText: "Patch" })
const disclosure = group.getByRole("button", { name: /^Used \d+ .*Edit.*Write.*Patch$/ })
const group = root.locator('[data-component="collapsed-tool-group"]').filter({ hasText: /\d+ edits/ })
const disclosure = group.getByRole("button", { name: /\d+ edits/ })
await disclosure.click()
const files = group.locator(
@@ -43,7 +43,7 @@ story("merges follow-up patches into one stack with distinct files", async ({ mo
await root.getByRole("button", { name: "Start follow-up patch" }).click()
await expect(group.locator('[data-component="context-tool-group-trigger"]')).toHaveAttribute(
"aria-label",
"Used 3 Shell, Patch",
"1 command, 2 edits",
)
await expect(patches).toHaveCount(1)
await expect(patches.locator('[data-slot="apply-patch-filename"]')).toHaveText(["a.ts", "b.ts"])
@@ -7,10 +7,10 @@ const runs = [
"context.tsx",
]
story("collapses each run of reads inside a Used group into one row", async ({ mount }) => {
story("collapses each run of reads inside a tool group into one row", async ({ mount }) => {
const root = await mount("current-read-group--used-group", { args: { width: "960" } })
const group = root.locator('[data-component="collapsed-tool-group"]')
await expect(group.getByRole("button", { name: "Used 65 Read, Shell", exact: true })).toBeVisible()
await expect(group.getByRole("button", { name: "2 commands, 8 thoughts, 63 reads", exact: true })).toBeVisible()
const reads = group.locator('[data-component="read-tool-group"]')
await expect(reads).toHaveCount(9)
await expect(reads.locator('[data-slot="basic-tool-tool-subtitle"]').first()).toHaveText(runs[0]!)
@@ -60,7 +60,7 @@ story("truncates long read rows and expands them in place", async ({ mount }) =>
await expect(row).toHaveAttribute("aria-expanded", "true")
})
story("merges adjacent reads when tools render outside a Used group", async ({ mount }) => {
story("merges adjacent reads when tools render outside a tool group", async ({ mount }) => {
const root = await mount("current-read-group--without-used-group", { args: { width: "960" } })
await expect(root.locator('[data-component="collapsed-tool-group"]')).toHaveCount(0)
const reads = root.locator('[data-timeline-row="AssistantPart"] [data-component="read-tool-group"]')
@@ -9,7 +9,7 @@ const png = Buffer.from(
story.beforeEach(async ({ mount }) => {
const root = await mount("current-tool-group--mixed-tools")
await expect(root.getByRole("button", { name: "Used 4 Shell, Read, Agent", exact: true })).toBeVisible()
await expect(root.getByRole("button", { name: "1 command, 1 read, 2 tools", exact: true })).toBeVisible()
})
for (const grouped of [true, false]) {
@@ -16,14 +16,14 @@ for (const tool of ["shell", "execute", "subagent"]) {
await timeline.getByRole("button", { name: "Start tool", exact: true }).click()
await expect(group).toHaveAttribute("data-timeline-part-ids", "tool_context_lifecycle,tool_shell_lifecycle")
const original = await group.elementHandle()
const title = tool === "subagent" ? "Agent" : tool === "execute" ? "Execute" : "Shell"
const label = tool === "shell" ? "1 command, 1 read" : "1 read, 1 tool"
for (const action of [undefined, "Complete input", "Run command", "Complete command"]) {
if (action) await timeline.getByRole("button", { name: action, exact: true }).click()
await expect(group).toHaveAttribute("data-timeline-part-ids", "tool_context_lifecycle,tool_shell_lifecycle")
await expect(group.locator('[data-component="context-tool-group-trigger"]')).toHaveAttribute(
"aria-label",
`Used 2 Read, ${title}`,
label,
)
await expect(timeline.locator('[data-timeline-row="AssistantPart"]')).toHaveCount(1)
await expect(trigger).toHaveAttribute("aria-expanded", String(open))
@@ -42,7 +42,7 @@ for (const expanded of [false, true]) {
const trigger = expanded
? timeline.locator('[data-timeline-part-id="tool_shell_lifecycle"] [data-slot="collapsible-trigger"]')
: timeline.getByRole("button", { name: "Used 1 Shell", exact: true })
: timeline.getByRole("button", { name: "1 command", exact: true })
await expect(trigger).toHaveAttribute("aria-expanded", String(expanded))
await trigger.click()
@@ -89,7 +89,7 @@ story("transitions a streaming shell from writing through command execution", as
await expect(subtitle).toHaveText("printf ready")
await expect(tool).not.toContainText("Writing command…")
await timeline.getByRole("button", { name: "Complete command" }).click()
const summary = timeline.getByRole("button", { name: "Used 1 Shell", exact: true })
const summary = timeline.getByRole("button", { name: "1 command", exact: true })
await expect(summary).toHaveAttribute("aria-expanded", "false")
await summary.click()
await expect(subtitle).toHaveText("printf ready")
@@ -115,7 +115,7 @@ story("shimmers and expands a running shell command", async ({ mount }) => {
// Moved from packages/app/e2e/regression/session-timeline-lifecycle-state.spec.ts
for (const open of [false, true]) {
story(
`keeps ${open ? "expanded" : "collapsed"} reasoning intent from Thinking through standalone shell into Used`,
`keeps ${open ? "expanded" : "collapsed"} reasoning intent from Thinking through standalone shell into a tool group`,
async ({ mount }) => {
const timeline = await mount("current-session-timeline-rows--conversation", { args: { scenario: "hidden" } })
const reasoning = timeline.locator('[data-timeline-part-id="msg_hidden_reasoning_lifecycle:reasoning:0"]')
@@ -137,7 +137,7 @@ for (const open of [false, true]) {
await expect(thought).not.toContainText("Inspecting stability")
await expect(thought).toHaveAttribute("aria-expanded", String(open))
await timeline.getByRole("button", { name: "Finish session" }).click()
const used = group.getByRole("button", { name: "Used 1 Shell", exact: true })
const used = group.getByRole("button", { name: "1 command, 1 thought", exact: true })
await expect(used).toHaveAttribute("aria-expanded", "false")
await used.click()
await expect(used).toHaveAttribute("aria-expanded", "true")
@@ -148,7 +148,7 @@ for (const open of [false, true]) {
)
await expect(group.locator('[data-component="context-tool-group-trigger"]')).toHaveAttribute(
"aria-label",
"Used 1 Shell",
"1 command, 1 thought",
)
await expect(timeline.locator('[data-timeline-row="Thinking"]')).toHaveCount(0)
await expect(used).toHaveAttribute("aria-expanded", "true")
@@ -58,11 +58,12 @@ for (const mode of ["hidden", "compact", "full"] as const) {
if (following === "tool") {
const group = timeline.locator('[data-component="collapsed-tool-group"]')
const trigger = group.locator(':scope > [data-component="collapsible"] > [data-slot="collapsible-trigger"]')
await expect(trigger).toHaveText(/^Used\s*1\s*Skill$/)
const label = mode === "hidden" ? "1 tool" : "1 thought, 1 tool"
await expect(trigger).toHaveText(label)
await expect(trigger).toHaveAttribute("aria-expanded", "false")
await expect(group.locator('[data-component="context-tool-group-trigger"]')).toHaveAttribute(
"aria-label",
"Used 1 Skill",
label,
)
await expect(timeline.getByText("Inspecting stability", { exact: true })).toBeHidden()
await trigger.click()
@@ -36,7 +36,7 @@ story("renders every tool error outcome without leaking hidden tools", async ({
const timeline = await mount("current-session-research-agents--agent-research", { args: { scenario: "failures" } })
const names = ["shell", "edit", "write", "patch", "webfetch", "websearch", "subagent", "skill", "mcp_probe"]
const group = timeline.locator(`[data-timeline-part-ids="${names.map((name) => `tool_error_${name}`).join(",")}"]`)
await expect(group.getByRole("button")).toHaveAccessibleName(/^Used 9 /)
await expect(group.getByRole("button")).toHaveAccessibleName("1 command, 3 edits, 5 tools")
await group.getByRole("button").click()
await expect(timeline.locator('[data-kind="tool-error-card"]')).toHaveCount(names.length + 1)
const dismissed = timeline.locator('[data-timeline-part-id="tool_error_question_dismissed"]')
@@ -63,7 +63,7 @@ story("transitions shell and question through running error outcomes", async ({
// Moved from packages/app/e2e/regression/session-timeline-tool-projection.spec.ts
story("labels all web search provider variants", async ({ mount }) => {
const timeline = await mount("current-session-research-agents--agent-research", { args: { scenario: "providers" } })
await timeline.getByRole("button", { name: "Used 3 Parallel Web Search, Exa Web Search, Web Search" }).click()
await timeline.getByRole("button", { name: "3 tools", exact: true }).click()
const tools = timeline.locator('[data-component="context-tool-group-list"]')
await expect(tools.getByRole("button", { name: /Parallel Web Search/ })).toBeVisible()
await expect(tools.getByRole("button", { name: /Exa Web Search/ })).toBeVisible()
@@ -96,10 +96,10 @@ story("labels read tools from their path input", async ({ mount }) => {
story("labels skill tools from IDs and result metadata", async ({ mount }) => {
const timeline = await mount("current-session-research-agents--agent-research", { args: { scenario: "skills" } })
const group = timeline.locator('[data-timeline-part-ids="tool_skill_id,tool_skill_name"]')
await expect(group.getByRole("button")).toHaveAccessibleName("Used 2 Skill")
await expect(group.getByRole("button")).toHaveAccessibleName("2 tools")
await expect(group.locator('[data-component="context-tool-group-trigger"]')).toHaveAttribute(
"aria-label",
"Used 2 Skill",
"2 tools",
)
await group.getByRole("button").click()
const loaded = group.locator('[data-component="tool-loaded-item"]')
@@ -124,10 +124,10 @@ story("groups every collapsed tool until visible text separates the stack", asyn
)
await expect(group).toBeVisible()
await expect(group.getByRole("button")).toHaveAccessibleName("Used 4 Glob, Grep, Shell, List")
await expect(group.getByRole("button")).toHaveAccessibleName("1 command, 3 tools")
await expect(group.locator('[data-component="context-tool-group-trigger"]')).toHaveAttribute(
"aria-label",
"Used 4 Glob, Grep, Shell, List",
"1 command, 3 tools",
)
await expect(timeline.locator('[data-timeline-row="AssistantPart"]')).toHaveCount(3)
await expect(timeline.locator('[data-timeline-spacing="content"]')).toHaveCount(2)
@@ -4,8 +4,8 @@ for (const open of [true, false]) {
story(`preserves ${open ? "expanded" : "collapsed"} tool choices when calls join the group`, async ({ mount }) => {
const root = await mount("current-session-file-changes--appending-tool-calls")
const group = root.locator('[data-component="collapsed-tool-group"]')
const trigger = group.getByRole("button", { name: /^Used \d+ Shell, Patch$/ })
await expect(trigger).toHaveAccessibleName("Used 2 Shell, Patch")
const trigger = group.getByRole("button", { name: /^1 command, \d+ edits?$/ })
await expect(trigger).toHaveAccessibleName("1 command, 1 edit")
await trigger.click()
const shell = group.locator('[data-timeline-part-id="tool_shell_existing"] [data-slot="collapsible-trigger"]')
await group.locator('[data-timeline-part-id="tool_patch_existing"]').evaluate((element) => {
@@ -34,9 +34,9 @@ for (const open of [true, false]) {
await root.getByRole("button", { name: "Append tool call", exact: true }).click()
await expect(group.locator('[data-component="context-tool-group-trigger"]')).toHaveAttribute(
"aria-label",
`Used ${count} Shell, Patch`,
`1 command, ${count - 1} edits`,
)
await expect(trigger).toHaveAccessibleName(`Used ${count} Shell, Patch`)
await expect(trigger).toHaveAccessibleName(`1 command, ${count - 1} edits`)
await expect(diff).toBeVisible()
await expect(shell).toHaveAttribute("aria-expanded", String(open))
await expect(first).toHaveAttribute("aria-expanded", String(open))
@@ -1,9 +1,9 @@
import { expect, story } from "../../storybook/playwright/story"
story("keeps the open Used header below the session title while scrolling", async ({ mount }) => {
story("keeps the open tool group header below the session title while scrolling", async ({ mount }) => {
const root = await mount("current-tool-group--sticky-header", { args: { height: "720" } })
const scroller = root.locator('[data-story="sticky-header-scroll"]')
const header = root.getByRole("button", { name: "Used 37 Write, Shell, Grep, Edit", exact: true })
const header = root.getByRole("button", { name: "29 commands, 2 edits, 36 thoughts, 6 tools", exact: true })
const top = (locator: typeof header) =>
locator.evaluate((node) => {
@@ -16,7 +16,7 @@ story("keeps the open Used header below the session title while scrolling", asyn
await scroller.evaluate((node) => (node.scrollTop = 900))
await expect.poll(() => top(header)).toBe(48)
// Nested file headers stack below the stuck Used header instead of covering it.
// Nested file headers stack below the stuck tool group header instead of covering it.
const file = root.locator('[data-component="sticky-accordion-header"]').filter({ hasText: "model.ts" })
// Outside a timeline row the diff sizes itself only after it renders on screen (content-visibility: auto),
// and a header can stick only while its diff extends below it.
@@ -2,18 +2,18 @@ import { expect, story } from "../../storybook/playwright/story"
for (const reasoningDefaultOpen of [false, true]) {
story(
`keeps ordered thoughts and tool-only counts with reasoning ${reasoningDefaultOpen ? "expanded" : "collapsed"}`,
`keeps ordered thoughts and per-kind counts with reasoning ${reasoningDefaultOpen ? "expanded" : "collapsed"}`,
async ({ mount }) => {
const root = await mount("current-tool-group--mixed-reasoning", { args: { reasoningDefaultOpen } })
const group = root.locator('[data-component="collapsed-tool-group"]')
const used = group.getByRole("button", { name: /^Used \d+ Read, Skill$/ })
const used = group.getByRole("button", { name: /^2 thoughts, \d+ reads?, 3 tools$/ })
const first = group.locator('[data-timeline-part-id="reasoning_first"]')
const second = group.locator('[data-timeline-part-id="reasoning_second"]')
await expect(used).toHaveAttribute("aria-expanded", "true")
await expect(used).toHaveAccessibleName("Used 4 Read, Skill")
await expect(used).toHaveAccessibleName("2 thoughts, 1 read, 3 tools")
await expect(group.locator('[data-component="context-tool-group-trigger"]')).toHaveAttribute(
"aria-label",
"Used 4 Read, Skill",
"2 thoughts, 1 read, 3 tools",
)
await expect(group.locator('[data-slot="context-tool-group-item"]')).toHaveText([
/Read.*group\.ts/,
@@ -35,10 +35,10 @@ for (const reasoningDefaultOpen of [false, true]) {
)
await first.getByRole("button", { name: "Thought", exact: true }).click()
await root.getByRole("button", { name: "Append follow-up read", exact: true }).click()
await expect(used).toHaveAccessibleName("Used 5 Read, Skill")
await expect(used).toHaveAccessibleName("2 thoughts, 2 reads, 3 tools")
await expect(group.locator('[data-component="context-tool-group-trigger"]')).toHaveAttribute(
"aria-label",
"Used 5 Read, Skill",
"2 thoughts, 2 reads, 3 tools",
)
await expect(group.locator('[data-slot="context-tool-group-item"]')).toHaveText([
/Read.*group\.ts/,
@@ -72,31 +72,15 @@ for (const reasoningDefaultOpen of [false, true]) {
)
}
story("summarizes subagents as Agent while retaining their card titles", async ({ mount }) => {
story("summarizes mixed tools by kind while retaining subagent card titles", async ({ mount }) => {
const root = await mount("current-tool-group--mixed-tools")
const group = root.locator('[data-component="collapsed-tool-group"]')
await expect(group.getByRole("button", { name: "Used 4 Shell, Read, Agent", exact: true })).toBeVisible()
await expect(group.getByRole("button", { name: "1 command, 1 read, 2 tools", exact: true })).toBeVisible()
const header = group.locator('[data-component="context-tool-group-trigger"]')
const prefix = header.locator('[data-slot="context-tool-group-prefix"]')
const count = header.locator('[data-slot="context-tool-group-count"]')
const title = header.locator('[data-slot="basic-tool-tool-title"]')
await expect(prefix).toHaveText("Used")
await expect(count).toHaveText("4")
await expect(title).toHaveText("Shell, Read, Agent")
await expect(title).toHaveText("1 command, 1 read, 2 tools")
await expect(title).toHaveCSS("white-space", "nowrap")
await expect(title).toHaveCSS("text-overflow", "ellipsis")
expect(await prefix.evaluate((node) => node.textContent)).toBe("Used")
expect(await count.evaluate((node) => node.textContent)).toBe("4")
expect(await prefix.locator("..").evaluate((node) => getComputedStyle(node).columnGap)).toBe("4px")
expect(await title.locator("..").evaluate((node) => getComputedStyle(node).columnGap)).toBe("4px")
expect(await count.evaluate((node) => getComputedStyle(node).fontVariantNumeric)).toBe("tabular-nums")
const colors = await Promise.all(
[prefix, count, title].map((part) => part.evaluate((node) => getComputedStyle(node).color)),
)
expect(colors[1]).toBe(colors[2])
expect(colors[0]).not.toBe(colors[1])
const gap = await group.evaluate((element) => {
const title = element.querySelector('[data-component="context-tool-group-trigger"]')!.getBoundingClientRect()
@@ -114,9 +98,9 @@ for (const width of [840, 390]) {
await page.setViewportSize({ width, height: 600 })
const root = await mount("current-tool-group--mixed-tools")
const group = root.locator('[data-component="collapsed-tool-group"]')
const trigger = group.getByRole("button", { name: "Used 4 Shell, Read, Agent", exact: true })
const trigger = group.getByRole("button", { name: "1 command, 1 read, 2 tools", exact: true })
const header = group.locator('[data-component="context-tool-group-trigger"]')
await expect(header).toHaveAttribute("aria-label", "Used 4 Shell, Read, Agent")
await expect(header).toHaveAttribute("aria-label", "1 command, 1 read, 2 tools")
await expect(header.locator('[data-component="tag"]')).toHaveCount(0)
await expect(trigger).toHaveAttribute("aria-expanded", "true")
@@ -625,33 +625,6 @@
min-width: 0;
}
[data-slot="context-tool-group-usage"] {
flex-shrink: 0;
display: flex;
align-items: center;
gap: 4px;
color: var(--v2-text-text-muted);
font-family: var(--v2-font-family-sans);
font-size: 13px;
font-weight: 440;
line-height: var(--line-height-compact);
letter-spacing: -0.04px;
& > [data-slot="context-tool-group-prefix"],
& > [data-slot="context-tool-group-count"] {
white-space: pre;
}
}
[data-slot="context-tool-group-count"] {
color: var(--v2-text-text-base);
font-variant-numeric: tabular-nums;
}
[data-slot="context-tool-group-prefix"] {
flex-shrink: 0;
}
[data-slot="basic-tool-tool-title"] {
overflow: hidden;
text-overflow: ellipsis;
+32 -64
View File
@@ -559,55 +559,16 @@ export function CurrentContextToolGroup(props: {
() => props.busy || tools().some((tool) => tool.state.status === "streaming" || tool.state.status === "running"),
)
const names = createMemo(() =>
i18n.list([
...new Set(
props.parts.flatMap((part) => {
if (part.type !== "tool" && part.type !== "shell") return []
return [
part.type !== "tool"
? i18n.t("ui.tool.shell")
: part.name === "skill"
? i18n.t("ui.tool.skill")
: part.name === "subagent"
? i18n.t("ui.tool.agent.default")
: getToolInfo(part.name, undefined, part.name === "websearch" ? currentToolMetadata(part) : undefined)
.title,
]
}),
),
]),
)
// Matches the TUI activity summary, e.g. "3 commands, 1 edit, 2 thoughts, 4 reads".
const label = createMemo(() => {
const thoughts = props.parts.filter((part) => part.type === "reasoning").length
const kinds = props.parts.flatMap(activityKinds)
const phrases = activityOrder.flatMap((kind) => {
const count = kinds.filter((item) => item === kind).length
if (!names() && !thoughts) {
const text = i18n.t("ui.messagePart.context.updates")
return count > 0 ? [i18n.plural(`ui.messagePart.context.${kind}`, count)] : []
})
return { text, title: "", before: text, count: "", between: "", after: "" }
}
const title = names() || i18n.plural("ui.messagePart.context.thought", thoughts)
const count = props.parts.filter((part) => part.type === "tool" || part.type === "shell").length || thoughts
const text = i18n.plural("ui.messagePart.tools.used", count, { tools: title })
const index = text.indexOf(title)
const before = text.slice(0, index).trim()
const countText = String(count)
const countIndex = before.indexOf(countText)
const after = text.slice(index + title.length).trim()
if (countIndex === -1) return { text, title, before, count: "", between: "", after }
return {
text,
title,
before: before.slice(0, countIndex).trim(),
count: countText,
between: before.slice(countIndex + countText.length).trim(),
after,
}
return phrases.length > 0 ? i18n.list(phrases) : i18n.t("ui.messagePart.context.updates")
})
const items = createMemo(() =>
@@ -698,25 +659,9 @@ export function CurrentContextToolGroup(props: {
open={props.open}
onOpenChange={change}
trigger={
<div data-component="context-tool-group-trigger" aria-label={label().text}>
<div data-component="context-tool-group-trigger" aria-label={label()}>
<span data-slot="context-tool-group-title">
<Show when={label().before || label().count || label().between}>
<span data-slot="context-tool-group-usage">
<Show when={label().before}>
{(before) => <span data-slot="context-tool-group-prefix">{before()}</span>}
</Show>
<Show when={label().count}>
{(count) => <span data-slot="context-tool-group-count">{count()}</span>}
</Show>
<Show when={label().between}>
{(between) => <span data-slot="context-tool-group-prefix">{between()}</span>}
</Show>
</span>
</Show>
<Show when={label().title}>{(title) => <span data-slot="basic-tool-tool-title">{title()}</span>}</Show>
<Show when={label().after}>
{(after) => <span data-slot="context-tool-group-prefix">{after()}</span>}
</Show>
<span data-slot="basic-tool-tool-title">{label()}</span>
</span>
</div>
}
@@ -929,6 +874,29 @@ export function CurrentContextToolGroup(props: {
)
}
const activityOrder = ["command", "edit", "thought", "read", "tool"] as const
function activityKinds(part: ContextGroupPart): (typeof activityOrder)[number][] {
if (part.type === "reasoning") return ["thought"]
if (part.type === "shell") return ["command"]
if (part.type !== "tool") return []
if (part.name === "shell" || part.name === "bash") return ["command"]
if (["edit", "write", "patch", "apply_patch"].includes(part.name)) return ["edit"]
if (part.name === "read") return ["read"]
if (part.name !== "execute") return ["tool"]
// Code Mode counts its nested calls rather than itself.
const calls = currentToolMetadata(part).toolCalls
const tools = Array.isArray(calls)
? calls.flatMap((call) =>
call !== null && typeof call === "object" && "tool" in call && typeof call.tool === "string" ? [call.tool] : [],
)
: []
if (tools.length === 0) return ["tool"]
return tools.map((tool) => (tool === "read" ? "read" : "tool"))
}
export function CurrentReadToolGroup(props: {
tools: SessionMessageAssistantTool[]
open?: boolean
-4
View File
@@ -223,8 +223,6 @@ export const dict: Record<string, string> = {
"ui.sessionTurn.retry.attemptRetrying": "ሙከራ {{attempt}} - {{line}}",
"ui.messagePart.context.notice.one": "{{count}} ማሳወቂያ",
"ui.messagePart.context.notice.other": "{{count}} ማሳወቂያዎች",
"ui.messagePart.context.thought.one": "ሐሳብ",
"ui.messagePart.context.thought.other": "ሐሳቦች",
"ui.promptInput.dropFiles.image": "ምስሎችን ወይም ፋይሎችን ለማከል ጣል",
"ui.promptInput.dropFiles.pdf": "PDF-ዎችን ወይም ፋይሎችን ለማከል ጣል",
"ui.promptInput.dropFiles.imagePdf": "ምስሎችን፣ PDF-ዎችን ወይም ፋይሎችን ለማከል ጣል",
@@ -240,8 +238,6 @@ export const dict: Record<string, string> = {
"ui.messagePart.compaction.interrupted": "ክፍለ ጊዜ መጨናነቅ ተቋርጧል",
"ui.messagePart.providerCompaction": "ክፍለ ጊዜ በአቅራቢው የታመቀ",
"ui.messagePart.compaction.usage": "{{input}} ውስጥ · {{output}} ወጥቷል",
"ui.messagePart.tools.used.one": "ጥቅም ላይ የዋለ {{count}} {{tools}}",
"ui.messagePart.tools.used.other": "ጥቅም ላይ የዋለ {{count}} {{tools}}",
"ui.tool.browser": "አሳሽ",
"ui.common.fileCount.one": "{{count}} ፋይል",
"ui.common.fileCount.other": "{{count}} ፋይሎች",
-12
View File
@@ -290,12 +290,6 @@ export const dict = {
"ui.messagePart.context.notice.few": "{{count}} إشعارات",
"ui.messagePart.context.notice.many": "{{count}} إشعارًا",
"ui.messagePart.context.notice.other": "{{count}} إشعار",
"ui.messagePart.context.thought.zero": "أفكار",
"ui.messagePart.context.thought.one": "فكرة",
"ui.messagePart.context.thought.two": "فكرتان",
"ui.messagePart.context.thought.few": "أفكار",
"ui.messagePart.context.thought.many": "فكرة",
"ui.messagePart.context.thought.other": "فكرة",
"ui.promptInput.dropFiles.image": "أفلت الصور أو الملفات لإضافتها",
"ui.promptInput.dropFiles.pdf": "أفلت ملفات \u2068PDF\u2069 أو الملفات لإضافتها",
"ui.promptInput.dropFiles.imagePdf": "أفلت الصور أو ملفات \u2068PDF\u2069 أو الملفات لإضافتها",
@@ -315,13 +309,7 @@ export const dict = {
"ui.messagePart.compaction.interrupted": "قوطع ضغط الجلسة",
"ui.messagePart.providerCompaction": "ضغط موفر الخدمة الجلسة",
"ui.messagePart.compaction.usage": "{{input}} إدخال · {{output}} إخراج",
"ui.messagePart.tools.used.one": "استُخدمت {{count}} أداة: \u2068{{tools}}\u2069",
"ui.messagePart.tools.used.other": "استُخدمت {{count}} أداة: \u2068{{tools}}\u2069",
"ui.tool.browser": "المتصفح",
"ui.messagePart.tools.used.zero": "لم تُستخدم أي أداة من أصل \u2068{{count}}\u2069: \u2068{{tools}}\u2069",
"ui.messagePart.tools.used.two": "استُخدمت {{count}} أداتان: \u2068{{tools}}\u2069",
"ui.messagePart.tools.used.few": "استُخدمت \u2068{{count}}\u2069 أدوات: \u2068{{tools}}\u2069",
"ui.messagePart.tools.used.many": "استُخدمت {{count}} أداة: \u2068{{tools}}\u2069",
"ui.messagePart.context.updates": "التحديثات",
"ui.promptInput.cancelUpload": "إلغاء الرفع",
-4
View File
@@ -224,8 +224,6 @@ export const dict: Record<string, string> = {
"ui.sessionTurn.retry.attemptRetrying": "Cəhd {{attempt}} - {{line}}",
"ui.messagePart.context.notice.one": "{{count}} bildiriş",
"ui.messagePart.context.notice.other": "{{count}} bildiriş",
"ui.messagePart.context.thought.one": "fikir",
"ui.messagePart.context.thought.other": "fikir",
"ui.promptInput.dropFiles.image": "Şəkillər və ya fayllar əlavə etmək üçün buraya atın",
"ui.promptInput.dropFiles.pdf": "PDF-lər və ya fayllar əlavə etmək üçün buraya atın",
"ui.promptInput.dropFiles.imagePdf": "Şəkillər, PDF-lər və ya fayllar əlavə etmək üçün buraya atın",
@@ -241,8 +239,6 @@ export const dict: Record<string, string> = {
"ui.messagePart.compaction.interrupted": "Sessiya sıxışdırılması dayandırıldı",
"ui.messagePart.providerCompaction": "Sessiya təminatçı tərəfindən sıxışdırıldı",
"ui.messagePart.compaction.usage": "{{input}} daxil · {{output}} çıxış",
"ui.messagePart.tools.used.one": "{{count}} {{tools}} istifadə edildi",
"ui.messagePart.tools.used.other": "{{count}} {{tools}} istifadə edildi",
"ui.tool.browser": "Brauzer",
"ui.common.fileCount.one": "{{count}} fayl",
"ui.common.fileCount.other": "{{count}} fayl",
-4
View File
@@ -224,8 +224,6 @@ export const dict = {
"ui.sessionTurn.retry.attemptRetrying": "Опит {{attempt}} - {{line}}",
"ui.messagePart.context.notice.one": "{{count}} известие",
"ui.messagePart.context.notice.other": "{{count}} известия",
"ui.messagePart.context.thought.one": "Мисъл",
"ui.messagePart.context.thought.other": "Мисли",
"ui.promptInput.dropFiles.image": "Пуснете изображения или файлове за добавяне",
"ui.promptInput.dropFiles.pdf": "Пуснете PDF файлове или други файлове за добавяне",
"ui.promptInput.dropFiles.imagePdf": "Пуснете изображения, PDF файлове или други файлове за добавяне",
@@ -241,8 +239,6 @@ export const dict = {
"ui.messagePart.compaction.interrupted": "Уплътняването на сесията е прекъснато",
"ui.messagePart.providerCompaction": "Сесията е уплътнена от доставчика",
"ui.messagePart.compaction.usage": "{{input}} входящи · {{output}} изходящи",
"ui.messagePart.tools.used.one": "Използван е {{count}} {{tools}}",
"ui.messagePart.tools.used.other": "Използвани са {{count}} {{tools}}",
"ui.tool.browser": "Браузър",
"ui.common.fileCount.one": "{{count}} файл",
"ui.common.fileCount.other": "{{count}} файла",
-4
View File
@@ -244,10 +244,6 @@ export const dict: Record<string, string> = {
"ui.messagePart.compaction.interrupted": "সেশন সংকোচন বাধাগ্রস্ত হয়েছে",
"ui.messagePart.providerCompaction": "প্রদানকারী সেশনটি সংকুচিত করেছে",
"ui.messagePart.compaction.usage": "{{input}} ইন · {{output}} আউট",
"ui.messagePart.context.thought.one": "চিন্তা",
"ui.messagePart.context.thought.other": "চিন্তাভাবনা",
"ui.messagePart.tools.used.one": "{{count}}টি {{tools}} ব্যবহার করা হয়েছে",
"ui.messagePart.tools.used.other": "{{count}}টি {{tools}} ব্যবহার করা হয়েছে",
"ui.tool.browser": "ব্রাউজার",
"ui.common.fileCount.one": "{{count}}টি ফাইল",
"ui.common.fileCount.other": "{{count}}টি ফাইল",
-6
View File
@@ -9,13 +9,7 @@ export const dict = {
"ui.messagePart.compaction.interrupted": "Compactação da sessão interrompida",
"ui.messagePart.providerCompaction": "Sessão compactada pelo provedor",
"ui.messagePart.compaction.usage": "Entrada {{input}} · Saída {{output}}",
"ui.messagePart.tools.used.one": "Usou {{count}} {{tools}}",
"ui.messagePart.tools.used.other": "Usou {{count}} {{tools}}",
"ui.tool.browser": "Navegador",
"ui.messagePart.context.thought.one": "Pensamento",
"ui.messagePart.context.thought.other": "Pensamentos",
"ui.messagePart.context.thought.many": "Pensamentos",
"ui.messagePart.tools.used.many": "Usou {{count}} {{tools}}",
"ui.sessionTurn.retry.attemptWaiting.one": "A tentativa {{attempt}} será repetida em {{count}} segundo",
"ui.sessionTurn.retry.attemptWaiting.many": "A tentativa {{attempt}} será repetida em {{count}} segundos",
"ui.sessionTurn.retry.attemptWaiting.other": "A tentativa {{attempt}} será repetida em {{count}} segundos",
-6
View File
@@ -257,15 +257,12 @@ export const dict = {
"ui.sessionTurn.retry.attemptRetrying": "Pokušaj {{attempt}} - {{line}}",
"ui.messagePart.context.notice.one": "{{count}} obavijest",
"ui.messagePart.context.notice.other": "{{count}} obavijesti",
"ui.messagePart.context.thought.one": "Misao",
"ui.messagePart.context.thought.other": "Misli",
"ui.promptInput.dropFiles.image": "Ispustite slike ili datoteke da ih dodate",
"ui.promptInput.dropFiles.pdf": "Ispustite PDF-ove ili datoteke za dodavanje",
"ui.promptInput.dropFiles.imagePdf": "Ispustite slike, PDF-ove ili datoteke za dodavanje",
"ui.promptInput.exitShell": "Izlaz",
"ui.sessionTimeline.notice.agentChanged": "Agent je promijenjen",
"ui.messagePart.context.notice.few": "{{count}} obavijesti",
"ui.messagePart.context.thought.few": "Misli",
"ui.sessionTurn.retry.attemptRetryingNow": "Pokušaj {{attempt}} – ponovni pokušaj",
"ui.sessionTurn.retry.attemptWaiting.one": "Pokušaj {{attempt}} – ponovni pokušaj za {{count}} sekundu",
"ui.sessionTurn.retry.attemptWaiting.few": "Pokušaj {{attempt}} – ponovni pokušaj za {{count}} sekunde",
@@ -277,9 +274,6 @@ export const dict = {
"ui.messagePart.compaction.interrupted": "Sažimanje sesije je prekinuto",
"ui.messagePart.providerCompaction": "Provajder je sažeo sesiju",
"ui.messagePart.compaction.usage": "{{input}} ulaz · {{output}} izlaz",
"ui.messagePart.tools.used.one": "Korišten {{count}} alat: {{tools}}",
"ui.messagePart.tools.used.few": "Korištena {{count}} alata: {{tools}}",
"ui.messagePart.tools.used.other": "Korišteno {{count}} alata: {{tools}}",
"ui.tool.browser": "Preglednik",
"ui.common.fileCount.one": "{{count}} datoteka",
"ui.common.fileCount.few": "{{count}} datoteke",
-6
View File
@@ -233,15 +233,12 @@ export const dict: Record<string, string> = {
"ui.sessionTurn.retry.attemptRetrying": "Intent {{attempt}} - {{line}}",
"ui.messagePart.context.notice.one": "{{count}} Avís",
"ui.messagePart.context.notice.other": "{{count}} Avisos",
"ui.messagePart.context.thought.one": "Pensament",
"ui.messagePart.context.thought.other": "Pensaments",
"ui.promptInput.dropFiles.image": "Deixa anar imatges o fitxers per afegir",
"ui.promptInput.dropFiles.pdf": "Deixa anar PDF o fitxers per afegir",
"ui.promptInput.dropFiles.imagePdf": "Deixa anar imatges, PDF o fitxers per afegir",
"ui.promptInput.exitShell": "Sortida",
"ui.sessionTimeline.notice.agentChanged": "L'agent ha canviat",
"ui.messagePart.context.notice.many": "{{count}} avisos",
"ui.messagePart.context.thought.many": "pensaments",
"ui.sessionTurn.retry.attemptRetryingNow": "Intent {{attempt}}: torna a intentar-ho",
"ui.sessionTurn.retry.attemptWaiting.one": "Intent {{attempt}}: es tornarà a provar d’aquí a {{count}} s",
"ui.sessionTurn.retry.attemptWaiting.many": "Intent {{attempt}}: es tornarà a provar d’aquí a {{count}} s",
@@ -253,10 +250,7 @@ export const dict: Record<string, string> = {
"ui.messagePart.compaction.interrupted": "Compactació de la sessió interrompuda",
"ui.messagePart.providerCompaction": "Sessió compactada pel proveïdor",
"ui.messagePart.compaction.usage": "{{input}} entra · {{output}} fora",
"ui.messagePart.tools.used.one": "Usat {{count}} {{tools}}",
"ui.messagePart.tools.used.other": "Usat {{count}} {{tools}}",
"ui.tool.browser": "Navegador",
"ui.messagePart.tools.used.many": "Usat {{count}} {{tools}}",
"ui.common.fileCount.one": "Fitxer {{count}}",
"ui.common.fileCount.other": "Fitxers {{count}}",
"ui.common.fileCount.many": "Fitxers {{count}}",
-8
View File
@@ -242,8 +242,6 @@ export const dict: Record<string, string> = {
"ui.sessionTurn.retry.attemptRetrying": "Pokus {{attempt}} - {{line}}",
"ui.messagePart.context.notice.one": "{{count}} oznámení",
"ui.messagePart.context.notice.other": "{{count}} oznámení",
"ui.messagePart.context.thought.one": "Myšlenka",
"ui.messagePart.context.thought.other": "Myšlenky",
"ui.promptInput.dropFiles.image": "Přetáhněte obrázky nebo soubory, které chcete přidat",
"ui.promptInput.dropFiles.pdf": "Přetáhněte soubory PDF nebo jiné soubory, které chcete přidat",
"ui.promptInput.dropFiles.imagePdf": "Přetáhněte obrázky, soubory PDF nebo jiné soubory, které chcete přidat",
@@ -251,8 +249,6 @@ export const dict: Record<string, string> = {
"ui.sessionTimeline.notice.agentChanged": "Agent změněn",
"ui.messagePart.context.notice.few": "{{count}} oznámení",
"ui.messagePart.context.notice.many": "{{count}} oznámení",
"ui.messagePart.context.thought.few": "Myšlenky",
"ui.messagePart.context.thought.many": "Myšlenky",
"ui.sessionTurn.retry.attemptRetryingNow": "Pokus {{attempt}} – opakování",
"ui.sessionTurn.retry.attemptWaiting.one": "Pokus {{attempt}} – další pokus za {{count}} sekundu",
"ui.sessionTurn.retry.attemptWaiting.few": "Pokus {{attempt}} – další pokus za {{count}} sekundy",
@@ -265,10 +261,6 @@ export const dict: Record<string, string> = {
"ui.messagePart.compaction.interrupted": "Komprimace relace byla přerušena",
"ui.messagePart.providerCompaction": "Relace byla komprimována poskytovatelem",
"ui.messagePart.compaction.usage": "{{input}} vstup · {{output}} výstup",
"ui.messagePart.tools.used.one": "Použit {{count}} nástroj: {{tools}}",
"ui.messagePart.tools.used.few": "Použity {{count}} nástroje: {{tools}}",
"ui.messagePart.tools.used.many": "Použito {{count}} nástroje: {{tools}}",
"ui.messagePart.tools.used.other": "Použito {{count}} nástrojů: {{tools}}",
"ui.tool.browser": "Prohlížeč",
"ui.common.fileCount.one": "{{count}} soubor",
"ui.common.fileCount.few": "{{count}} soubory",
-4
View File
@@ -8,11 +8,7 @@ export const dict = {
"ui.messagePart.compaction.interrupted": "Sessionskomprimering afbrudt",
"ui.messagePart.providerCompaction": "Session komprimeret af udbyder",
"ui.messagePart.compaction.usage": "{{input}} ind · {{output}} ud",
"ui.messagePart.tools.used.one": "Brugte {{count}} {{tools}}",
"ui.messagePart.tools.used.other": "Brugte {{count}} {{tools}}",
"ui.tool.browser": "Browser",
"ui.messagePart.context.thought.one": "Tanke",
"ui.messagePart.context.thought.other": "Tanker",
"ui.sessionTurn.retry.attemptWaiting.one": "Forsøg {{attempt}} gentages om {{count}} sekund",
"ui.sessionTurn.retry.attemptWaiting.other": "Forsøg {{attempt}} gentages om {{count}} sekunder",
"ui.sessionTurn.retry.attemptRetryingNow": "Forsøg {{attempt}} – prøver igen",
-4
View File
@@ -12,11 +12,7 @@ export const dict = {
"ui.messagePart.compaction.interrupted": "Sitzungskomprimierung unterbrochen",
"ui.messagePart.providerCompaction": "Vom Anbieter komprimierte Sitzung",
"ui.messagePart.compaction.usage": "{{input}} rein · {{output}} raus",
"ui.messagePart.tools.used.one": "{{count}} {{tools}} verwendet",
"ui.messagePart.tools.used.other": "{{count}} {{tools}} verwendet",
"ui.tool.browser": "Browser",
"ui.messagePart.context.thought.one": "Gedanke",
"ui.messagePart.context.thought.other": "Gedanken",
"ui.sessionTurn.retry.attemptWaiting.one": "Versuch {{attempt}} wird in {{count}} Sekunde wiederholt",
"ui.sessionTurn.retry.attemptWaiting.other": "Versuch {{attempt}} wird in {{count}} Sekunden wiederholt",
"ui.sessionTurn.retry.attemptRetryingNow": "Versuch {{attempt}} – erneuter Versuch",
-4
View File
@@ -246,10 +246,6 @@ export const dict: Record<string, string> = {
"ui.messagePart.compaction.interrupted": "ސެޝަން ކޮމްޕެކްޝަނަށް ހުއްޓުން އައިސްފި",
"ui.messagePart.providerCompaction": "ޕްރޮވައިޑަރ ސެޝަން ކޮމްޕެކްޓްކޮށްފި",
"ui.messagePart.compaction.usage": "\u2068{{input}}\u2069 އިން · \u2068{{output}}\u2069 އައުޓް",
"ui.messagePart.context.thought.one": "ވިސްނުން",
"ui.messagePart.context.thought.other": "ވިސްނުންތައް",
"ui.messagePart.tools.used.one": "\u2068{{count}}\u2069 \u2068{{tools}}\u2069 ބޭނުންކުރި",
"ui.messagePart.tools.used.other": "\u2068{{count}}\u2069 \u2068{{tools}}\u2069 ބޭނުންކުރި",
"ui.tool.browser": "ބްރައުޒާ",
"ui.common.fileCount.one": "\u2068{{count}}\u2069 ފައިލް",
"ui.common.fileCount.other": "\u2068{{count}}\u2069 ފައިލްތައް",
-4
View File
@@ -227,8 +227,6 @@ export const dict: Record<string, string> = {
"ui.sessionTurn.retry.attemptRetrying": "འབད་རྩོལ་ {{attempt}} - {{line}}",
"ui.messagePart.context.notice.one": "{{count}} གསལ་བསྒྲགས།",
"ui.messagePart.context.notice.other": "{{count}} གསལ་བསྒྲགས།",
"ui.messagePart.context.thought.one": "བསམ་བློ།",
"ui.messagePart.context.thought.other": "བསམ་བློ།",
"ui.promptInput.dropFiles.image": "ཁ་སྐོང་རྐྱབ་ནིའི་དོན་ལུ་ གཟུགས་བརྙན་ཚུ་ཡང་ན་ཡིག་སྣོད་ཚུ་བཀོག་བཞག།",
"ui.promptInput.dropFiles.pdf": "ཁ་སྐོང་བརྐྱབ་ནིའི་དོན་ལུ་ པི་ཌི་ཨེཕ་ཚུ་ཡང་ན་ཡིག་སྣོད་ཚུ་བཀོག་བཞག།",
"ui.promptInput.dropFiles.imagePdf":
@@ -245,8 +243,6 @@ export const dict: Record<string, string> = {
"ui.messagePart.compaction.interrupted": "ལཱ་ཡུན་བསྡམ་བཞག་འདི་བར་ཆད་བྱུང་ཡོདཔ།",
"ui.messagePart.providerCompaction": "ལཱ་ཡུན་བྱིན་མི་གིས་བསྡུ་སྒྲིག་འབད་ཡོདཔ།",
"ui.messagePart.compaction.usage": "{{input}} ནང་འཛུལ་ · {{output}} ཕྱིར་ཐོན།",
"ui.messagePart.tools.used.one": "ལག་ལེན་འཐབ་ཡོད་པའི་ {{count}} {{tools}}",
"ui.messagePart.tools.used.other": "ལག་ལེན་འཐབ་ཡོད་པའི་ {{count}} {{tools}}",
"ui.tool.browser": "བརའུ་ཟར་",
"ui.common.fileCount.one": "{{count}} ཡིག་སྣོད་",
"ui.common.fileCount.other": "{{count}} ཡིག་སྣོད་ཚུ།",
-4
View File
@@ -224,8 +224,6 @@ export const dict: Record<string, string> = {
"ui.sessionTurn.retry.attemptRetrying": "Προσπάθεια {{attempt}} - {{line}}",
"ui.messagePart.context.notice.one": "Ειδοποίηση {{count}}",
"ui.messagePart.context.notice.other": "Ειδοποιήσεις {{count}}",
"ui.messagePart.context.thought.one": "Σκέψη",
"ui.messagePart.context.thought.other": "Σκέψεις",
"ui.promptInput.dropFiles.image": "Αποθέστε εικόνες ή αρχεία για προσθήκη",
"ui.promptInput.dropFiles.pdf": "Αποθέστε αρχεία PDF ή αρχεία για προσθήκη",
"ui.promptInput.dropFiles.imagePdf": "Αποθέστε εικόνες, PDF ή αρχεία για προσθήκη",
@@ -241,8 +239,6 @@ export const dict: Record<string, string> = {
"ui.messagePart.compaction.interrupted": "Η συμπίεση συνεδρίας διακόπηκε",
"ui.messagePart.providerCompaction": "Η συνεδρία συμπυκνώθηκε από τον πάροχο",
"ui.messagePart.compaction.usage": "{{input}} σε · {{output}} έξω",
"ui.messagePart.tools.used.one": "Μεταχειρισμένα {{count}} {{tools}}",
"ui.messagePart.tools.used.other": "Μεταχειρισμένα {{count}} {{tools}}",
"ui.tool.browser": "Πρόγραμμα περιήγησης",
"ui.common.fileCount.one": "Αρχείο {{count}}",
"ui.common.fileCount.other": "Αρχεία {{count}}",
+8 -4
View File
@@ -116,6 +116,10 @@ const source = {
"ui.messagePart.providerCompaction": "Session compacted by provider",
"ui.messagePart.compaction.usage": "{{input}} in · {{output}} out",
"ui.messagePart.context.updates": "Updates",
"ui.messagePart.context.command.one": "{{count}} command",
"ui.messagePart.context.command.other": "{{count}} commands",
"ui.messagePart.context.edit.one": "{{count}} edit",
"ui.messagePart.context.edit.other": "{{count}} edits",
"ui.messagePart.context.read.one": "{{count}} read",
"ui.messagePart.context.read.other": "{{count}} reads",
"ui.messagePart.context.search.one": "{{count}} search",
@@ -124,12 +128,12 @@ const source = {
"ui.messagePart.context.list.other": "{{count}} lists",
"ui.messagePart.context.notice.one": "{{count}} Notice",
"ui.messagePart.context.notice.other": "{{count}} Notices",
"ui.messagePart.context.thought.one": "Thought",
"ui.messagePart.context.thought.other": "Thoughts",
"ui.messagePart.context.thought.one": "{{count}} thought",
"ui.messagePart.context.thought.other": "{{count}} thoughts",
"ui.messagePart.context.tool.one": "{{count}} tool",
"ui.messagePart.context.tool.other": "{{count}} tools",
"ui.messagePart.context.match.one": "({{count}} match)",
"ui.messagePart.context.match.other": "({{count}} matches)",
"ui.messagePart.tools.used.one": "Used {{count}} {{tools}}",
"ui.messagePart.tools.used.other": "Used {{count}} {{tools}}",
"ui.list.loading": "Loading",
"ui.list.empty": "No results",
-6
View File
@@ -9,13 +9,7 @@ export const dict = {
"ui.messagePart.compaction.interrupted": "Compactación de sesión interrumpida",
"ui.messagePart.providerCompaction": "Sesión compactada por proveedor",
"ui.messagePart.compaction.usage": "{{input}} entra · {{output}} sale",
"ui.messagePart.tools.used.one": "Se usó {{count}} {{tools}}",
"ui.messagePart.tools.used.other": "Se usaron {{count}} {{tools}}",
"ui.tool.browser": "Navegador",
"ui.messagePart.context.thought.one": "Pensamiento",
"ui.messagePart.context.thought.other": "Pensamientos",
"ui.messagePart.context.thought.many": "Pensamientos",
"ui.messagePart.tools.used.many": "Se usaron {{count}} {{tools}}",
"ui.sessionTurn.retry.attemptWaiting.one": "El intento {{attempt}} se repetirá dentro de {{count}} segundo",
"ui.sessionTurn.retry.attemptWaiting.many": "El intento {{attempt}} se repetirá dentro de {{count}} segundos",
"ui.sessionTurn.retry.attemptWaiting.other": "El intento {{attempt}} se repetirá dentro de {{count}} segundos",
-4
View File
@@ -224,8 +224,6 @@ export const dict: Record<string, string> = {
"ui.sessionTurn.retry.attemptRetrying": "Katse {{attempt}} – {{line}}",
"ui.messagePart.context.notice.one": "{{count}} Märkus",
"ui.messagePart.context.notice.other": "{{count}} Märkused",
"ui.messagePart.context.thought.one": "Mõte",
"ui.messagePart.context.thought.other": "Mõtted",
"ui.promptInput.dropFiles.image": "Pukseerige lisamiseks pildid või failid",
"ui.promptInput.dropFiles.pdf": "Pukseerige lisamiseks PDF-id või failid",
"ui.promptInput.dropFiles.imagePdf": "Pukseerige lisamiseks pilte, PDF-e või faile",
@@ -241,8 +239,6 @@ export const dict: Record<string, string> = {
"ui.messagePart.compaction.interrupted": "Seansi tihendamine katkestati",
"ui.messagePart.providerCompaction": "Pakkuja tihendas seansi",
"ui.messagePart.compaction.usage": "{{input}} sisse · {{output}} välja",
"ui.messagePart.tools.used.one": "Kasutatud {{count}} {{tools}}",
"ui.messagePart.tools.used.other": "Kasutatud {{count}} {{tools}}",
"ui.tool.browser": "Brauser",
"ui.common.fileCount.one": "{{count}} fail",
"ui.common.fileCount.other": "{{count}} failid",
-4
View File
@@ -227,8 +227,6 @@ export const dict: Record<string, string> = {
"ui.sessionTurn.retry.attemptRetrying": "تلاش {{attempt}} - \u2068{{line}}\u2069",
"ui.messagePart.context.notice.one": "{{count}} اعلان",
"ui.messagePart.context.notice.other": "{{count}} اعلان",
"ui.messagePart.context.thought.one": "فکر",
"ui.messagePart.context.thought.other": "فکرها",
"ui.promptInput.dropFiles.image": "تصاویر یا فایل‌ها را برای افزودن رها کنید",
"ui.promptInput.dropFiles.pdf": "فایل‌های \u2068PDF\u2069 یا فایل‌ها را برای افزودن رها کنید",
"ui.promptInput.dropFiles.imagePdf": "تصاویر، فایل‌های \u2068PDF\u2069 یا فایل‌ها را برای افزودن رها کنید",
@@ -244,8 +242,6 @@ export const dict: Record<string, string> = {
"ui.messagePart.compaction.interrupted": "فشرده‌سازی نشست قطع شد",
"ui.messagePart.providerCompaction": "نشست توسط ارائه‌دهنده فشرده شد",
"ui.messagePart.compaction.usage": "{{input}} ورودی · {{output}} خروجی",
"ui.messagePart.tools.used.one": "از {{count}} ابزار استفاده شد: \u2068{{tools}}\u2069",
"ui.messagePart.tools.used.other": "از {{count}} ابزار استفاده شد: \u2068{{tools}}\u2069",
"ui.tool.browser": "مرورگر",
"ui.messagePart.context.updates": "به‌روزرسانی‌ها",
-4
View File
@@ -8,11 +8,7 @@ export const dict: Record<string, string> = {
"ui.messagePart.compaction.interrupted": "Istunnon tiivistys keskeytetty",
"ui.messagePart.providerCompaction": "Palveluntarjoajan tiivistämä istunto",
"ui.messagePart.compaction.usage": "{{input}} sisään · {{output}} ulos",
"ui.messagePart.tools.used.one": "Käytettiin {{count}} {{tools}}",
"ui.messagePart.tools.used.other": "Käytettiin {{count}} {{tools}}",
"ui.tool.browser": "Selain",
"ui.messagePart.context.thought.one": "Ajatus",
"ui.messagePart.context.thought.other": "Ajatuksia",
"ui.sessionTurn.retry.attemptWaiting.one": "Yritys {{attempt}} toistetaan {{count}} sekunnin kuluttua",
"ui.sessionTurn.retry.attemptWaiting.other": "Yritys {{attempt}} toistetaan {{count}} sekunnin kuluttua",
"ui.sessionTurn.retry.attemptRetryingNow": "Yritys {{attempt}} – yritetään uudelleen",
-4
View File
@@ -224,8 +224,6 @@ export const dict: Record<string, string> = {
"ui.sessionTurn.retry.attemptRetrying": "Roynd {{attempt}} - {{line}}",
"ui.messagePart.context.notice.one": "{{count}} Fráboðan",
"ui.messagePart.context.notice.other": "{{count}} Fráboðanir",
"ui.messagePart.context.thought.one": "Hugsan",
"ui.messagePart.context.thought.other": "Tankar",
"ui.promptInput.dropFiles.image": "Slepp myndum ella fílum at leggja til",
"ui.promptInput.dropFiles.pdf": "Slepp PDF-fílum ella fílum at leggja til",
"ui.promptInput.dropFiles.imagePdf": "Slepp myndum, PDF-fílum ella fílum at leggja til",
@@ -241,8 +239,6 @@ export const dict: Record<string, string> = {
"ui.messagePart.compaction.interrupted": "Session komprimering avbrotin",
"ui.messagePart.providerCompaction": "Session komprimerað av veitara",
"ui.messagePart.compaction.usage": "{{input}} í · {{output}} út",
"ui.messagePart.tools.used.one": "Brúkt {{count}} {{tools}}",
"ui.messagePart.tools.used.other": "Brúkt {{count}} {{tools}}",
"ui.tool.browser": "Kaga",
"ui.common.fileCount.one": "{{count}} fíla",
"ui.common.fileCount.other": "{{count}} fílur",
-6
View File
@@ -9,13 +9,7 @@ export const dict = {
"ui.messagePart.compaction.interrupted": "Compactage de session interrompu",
"ui.messagePart.providerCompaction": "Session compactée par le fournisseur",
"ui.messagePart.compaction.usage": "Entrée {{input}} · Sortie {{output}}",
"ui.messagePart.tools.used.one": "{{count}} {{tools}} utilisé",
"ui.messagePart.tools.used.other": "{{count}} {{tools}} utilisés",
"ui.tool.browser": "Navigateur",
"ui.messagePart.context.thought.one": "Pensée",
"ui.messagePart.context.thought.other": "Pensées",
"ui.messagePart.context.thought.many": "Pensées",
"ui.messagePart.tools.used.many": "{{count}} {{tools}} utilisés",
"ui.sessionTurn.retry.attemptWaiting.one": "La tentative {{attempt}} sera relancée dans {{count}} seconde",
"ui.sessionTurn.retry.attemptWaiting.many": "La tentative {{attempt}} sera relancée dans {{count}} secondes",
"ui.sessionTurn.retry.attemptWaiting.other": "La tentative {{attempt}} sera relancée dans {{count}} secondes",
-6
View File
@@ -237,9 +237,6 @@ export const dict = {
"ui.messagePart.context.notice.one": "{{count}} הודעה",
"ui.messagePart.context.notice.two": "{{count}} הודעות",
"ui.messagePart.context.notice.other": "{{count}} הודעות",
"ui.messagePart.context.thought.one": "מחשבה",
"ui.messagePart.context.thought.two": "מחשבות",
"ui.messagePart.context.thought.other": "מחשבות",
"ui.promptInput.dropFiles.image": "שחרר תמונות או קבצים להוספה",
"ui.promptInput.dropFiles.pdf": "שחרר קובצי \u2068PDF\u2069 או קבצים להוספה",
"ui.promptInput.dropFiles.imagePdf": "שחרר תמונות, קובצי \u2068PDF\u2069 או קבצים להוספה",
@@ -256,10 +253,7 @@ export const dict = {
"ui.messagePart.compaction.interrupted": "דחיסת ההפעלה נקטעה",
"ui.messagePart.providerCompaction": "ההפעלה נדחסה על ידי הספק",
"ui.messagePart.compaction.usage": "{{input}} קלט · {{output}} פלט",
"ui.messagePart.tools.used.one": "נעשה שימוש ב-{{count}} כלי: \u2068{{tools}}\u2069",
"ui.messagePart.tools.used.other": "נעשה שימוש ב-{{count}} כלים: \u2068{{tools}}\u2069",
"ui.tool.browser": "דפדפן",
"ui.messagePart.tools.used.two": "נעשה שימוש ב-{{count}} כלים: \u2068{{tools}}\u2069",
"ui.messagePart.context.updates": "עדכונים",
"ui.promptInput.cancelUpload": "ביטול ההעלאה",
-4
View File
@@ -244,10 +244,6 @@ export const dict: Record<string, string> = {
"ui.messagePart.compaction.interrupted": "सत्र संक्षिप्तीकरण बाधित हुआ",
"ui.messagePart.providerCompaction": "प्रदाता ने सत्र संक्षिप्त किया",
"ui.messagePart.compaction.usage": "{{input}} इन · {{output}} आउट",
"ui.messagePart.context.thought.one": "विचार",
"ui.messagePart.context.thought.other": "विचार",
"ui.messagePart.tools.used.one": "{{count}} {{tools}} इस्तेमाल किया",
"ui.messagePart.tools.used.other": "{{count}} {{tools}} इस्तेमाल किए",
"ui.tool.browser": "ब्राउज़र",
"ui.common.fileCount.one": "{{count}} फ़ाइल",
"ui.common.fileCount.other": "{{count}} फ़ाइलें",
-6
View File
@@ -234,15 +234,12 @@ export const dict: Record<string, string> = {
"ui.sessionTurn.retry.attemptRetrying": "Pokušaj {{attempt}} - {{line}}",
"ui.messagePart.context.notice.one": "{{count}} obavijest",
"ui.messagePart.context.notice.other": "{{count}} obavijesti",
"ui.messagePart.context.thought.one": "Misao",
"ui.messagePart.context.thought.other": "Misli",
"ui.promptInput.dropFiles.image": "Ispustite slike ili datoteke za dodavanje",
"ui.promptInput.dropFiles.pdf": "Ispustite PDF-ove ili datoteke za dodavanje",
"ui.promptInput.dropFiles.imagePdf": "Ispustite slike, PDF-ove ili datoteke za dodavanje",
"ui.promptInput.exitShell": "Izlaz",
"ui.sessionTimeline.notice.agentChanged": "Promijenjen agent",
"ui.messagePart.context.notice.few": "{{count}} obavijesti",
"ui.messagePart.context.thought.few": "Misli",
"ui.sessionTurn.retry.attemptRetryingNow": "Pokušaj {{attempt}} – ponovni pokušaj",
"ui.sessionTurn.retry.attemptWaiting.one": "Pokušaj {{attempt}} – ponovni pokušaj za {{count}} sekundu",
"ui.sessionTurn.retry.attemptWaiting.few": "Pokušaj {{attempt}} – ponovni pokušaj za {{count}} sekunde",
@@ -254,9 +251,6 @@ export const dict: Record<string, string> = {
"ui.messagePart.compaction.interrupted": "Sažimanje sesije je prekinuto",
"ui.messagePart.providerCompaction": "Pružatelj je sažeo sesiju",
"ui.messagePart.compaction.usage": "{{input}} ulaz · {{output}} izlaz",
"ui.messagePart.tools.used.one": "Korišten je {{count}} alat: {{tools}}",
"ui.messagePart.tools.used.few": "Korištena su {{count}} alata: {{tools}}",
"ui.messagePart.tools.used.other": "Korišteno je {{count}} alata: {{tools}}",
"ui.tool.browser": "Preglednik",
"ui.common.fileCount.one": "{{count}} datoteka",
"ui.common.fileCount.few": "{{count}} datoteke",
-4
View File
@@ -226,8 +226,6 @@ export const dict: Record<string, string> = {
"ui.sessionTurn.retry.attemptRetrying": "{{attempt}} – {{line}} kísérlet",
"ui.messagePart.context.notice.one": "{{count}} Megjegyzés",
"ui.messagePart.context.notice.other": "{{count}} Megjegyzések",
"ui.messagePart.context.thought.one": "Gondolat",
"ui.messagePart.context.thought.other": "Gondolatok",
"ui.promptInput.dropFiles.image": "Húzza le a hozzáadandó képeket vagy fájlokat",
"ui.promptInput.dropFiles.pdf": "Dobja el a hozzáadandó PDF-eket vagy fájlokat",
"ui.promptInput.dropFiles.imagePdf": "Húzza le a hozzáadandó képeket, PDF-eket vagy fájlokat",
@@ -243,8 +241,6 @@ export const dict: Record<string, string> = {
"ui.messagePart.compaction.interrupted": "A munkamenet tömörítése megszakadt",
"ui.messagePart.providerCompaction": "A munkamenetet tömörítette a szolgáltató",
"ui.messagePart.compaction.usage": "{{input}} be · {{output}} ki",
"ui.messagePart.tools.used.one": "Használt {{count}} {{tools}}",
"ui.messagePart.tools.used.other": "Használt {{count}} {{tools}}",
"ui.tool.browser": "Böngésző",
"ui.common.fileCount.one": "{{count}} fájl",
"ui.common.fileCount.other": "{{count}} fájlokat",
-4
View File
@@ -225,8 +225,6 @@ export const dict: Record<string, string> = {
"ui.sessionTurn.retry.attemptRetrying": "Փորձ {{attempt}} - {{line}}",
"ui.messagePart.context.notice.one": "{{count}} ծանուցում",
"ui.messagePart.context.notice.other": "{{count}} ծանուցումներ",
"ui.messagePart.context.thought.one": "միտք",
"ui.messagePart.context.thought.other": "մտքեր",
"ui.promptInput.dropFiles.image": "Գցեք պատկերներ կամ ֆայլեր՝ ավելացնելու համար",
"ui.promptInput.dropFiles.pdf": "Գցեք PDF-ներ կամ ֆայլեր՝ ավելացնելու համար",
"ui.promptInput.dropFiles.imagePdf": "Գցեք պատկերներ, PDF-ներ կամ ֆայլեր՝ ավելացնելու համար",
@@ -242,8 +240,6 @@ export const dict: Record<string, string> = {
"ui.messagePart.compaction.interrupted": "Սեսիայի կոմպակտացումը ընդհատվել է",
"ui.messagePart.providerCompaction": "Սեսիան կոմպակտացվել է մատակարարի կողմից",
"ui.messagePart.compaction.usage": "{{input}} ներսում · {{output}} ելք",
"ui.messagePart.tools.used.one": "Կիրառում է {{count}} {{tools}}",
"ui.messagePart.tools.used.other": "Կիրառում է {{count}} {{tools}}",
"ui.tool.browser": "Բրաուզեր",
"ui.common.fileCount.one": "{{count}} ֆայլ",
"ui.common.fileCount.other": "{{count}} ֆայլ",
-4
View File
@@ -248,8 +248,6 @@ export const dict: Record<string, string> = {
"ui.sessionTurn.retry.attemptRetrying": "Percobaan {{attempt}} - {{line}}",
"ui.messagePart.context.notice.one": "{{count}} Pemberitahuan",
"ui.messagePart.context.notice.other": "{{count}} Pemberitahuan",
"ui.messagePart.context.thought.one": "Pemikiran",
"ui.messagePart.context.thought.other": "Pemikiran",
"ui.promptInput.dropFiles.image": "Jatuhkan gambar atau file untuk ditambahkan",
"ui.promptInput.dropFiles.pdf": "Jatuhkan PDF atau file untuk ditambahkan",
"ui.promptInput.dropFiles.imagePdf": "Jatuhkan gambar, PDF, atau file untuk ditambahkan",
@@ -267,8 +265,6 @@ export const dict: Record<string, string> = {
"ui.messagePart.providerCompaction": "Sesi dikompak oleh penyedia",
"ui.messagePart.compaction.usage": "{{input}} masuk · {{output}} keluar",
"ui.messagePart.context.updates": "Pembaruan",
"ui.messagePart.tools.used.one": "Menggunakan {{count}} {{tools}}",
"ui.messagePart.tools.used.other": "Menggunakan {{count}} {{tools}}",
"ui.tool.browser": "Peramban",
"ui.common.fileCount.one": "{{count}} berkas",
"ui.common.fileCount.other": "{{count}} berkas",
-4
View File
@@ -225,8 +225,6 @@ export const dict: Record<string, string> = {
"ui.sessionTurn.retry.attemptRetrying": "Tilraun {{attempt}} - {{line}}",
"ui.messagePart.context.notice.one": "{{count}} Tilkynning",
"ui.messagePart.context.notice.other": "{{count}} Tilkynningar",
"ui.messagePart.context.thought.one": "hugsun",
"ui.messagePart.context.thought.other": "Hugleiðingar",
"ui.promptInput.dropFiles.image": "Slepptu myndum eða skrám til að bæta við",
"ui.promptInput.dropFiles.pdf": "Slepptu PDF skjölum eða skrám til að bæta við",
"ui.promptInput.dropFiles.imagePdf": "Slepptu myndum, PDF-skjölum eða skrám til að bæta við",
@@ -242,8 +240,6 @@ export const dict: Record<string, string> = {
"ui.messagePart.compaction.interrupted": "Session þjöppun rofin",
"ui.messagePart.providerCompaction": "Session þjappað af veitanda",
"ui.messagePart.compaction.usage": "{{input}} inn · {{output}} út",
"ui.messagePart.tools.used.one": "Notað {{count}} {{tools}}",
"ui.messagePart.tools.used.other": "Notað {{count}} {{tools}}",
"ui.tool.browser": "Vafri",
"ui.common.fileCount.one": "{{count}} skrá",
"ui.common.fileCount.other": "{{count}} skrár",
-6
View File
@@ -9,13 +9,7 @@ export const dict: Record<string, string> = {
"ui.messagePart.compaction.interrupted": "Compattazione della sessione interrotta",
"ui.messagePart.providerCompaction": "Sessione compattata dal provider",
"ui.messagePart.compaction.usage": "{{input}} dentro · {{output}} fuori",
"ui.messagePart.tools.used.one": "{{count}} {{tools}} utilizzato",
"ui.messagePart.tools.used.other": "{{count}} {{tools}} utilizzati",
"ui.tool.browser": "Navigatore",
"ui.messagePart.context.thought.one": "Pensiero",
"ui.messagePart.context.thought.other": "Pensieri",
"ui.messagePart.context.thought.many": "Pensieri",
"ui.messagePart.tools.used.many": "{{count}} {{tools}} utilizzati",
"ui.sessionTurn.retry.attemptWaiting.one": "Il tentativo {{attempt}} verrà ripetuto tra {{count}} secondo",
"ui.sessionTurn.retry.attemptWaiting.many": "Il tentativo {{attempt}} verrà ripetuto tra {{count}} secondi",
"ui.sessionTurn.retry.attemptWaiting.other": "Il tentativo {{attempt}} verrà ripetuto tra {{count}} secondi",
-4
View File
@@ -245,8 +245,6 @@ export const dict = {
"ui.sessionTurn.retry.attemptRetrying": "試行 {{attempt}} - {{line}}",
"ui.messagePart.context.notice.one": "{{count}} 通知",
"ui.messagePart.context.notice.other": "{{count}} 件の通知",
"ui.messagePart.context.thought.one": "思考",
"ui.messagePart.context.thought.other": "思考",
"ui.promptInput.dropFiles.image": "画像またはファイルをドロップして追加します",
"ui.promptInput.dropFiles.pdf": "PDF またはファイルをドロップして追加します",
"ui.promptInput.dropFiles.imagePdf": "画像、PDF、またはファイルをドロップして追加します",
@@ -264,8 +262,6 @@ export const dict = {
"ui.messagePart.providerCompaction": "プロバイダーによってセッションが圧縮されました",
"ui.messagePart.compaction.usage": "{{input}} 入力 · {{output}} 出力",
"ui.messagePart.context.updates": "更新",
"ui.messagePart.tools.used.one": "{{count}} {{tools}} 使用済み",
"ui.messagePart.tools.used.other": "{{count}} {{tools}} 使用済み",
"ui.tool.browser": "ブラウザー",
"ui.common.fileCount.one": "{{count}} ファイル",
"ui.common.fileCount.other": "{{count}} ファイル",
-4
View File
@@ -225,8 +225,6 @@ export const dict: Record<string, string> = {
"ui.sessionTurn.retry.attemptRetrying": "მცდელობა {{attempt}} - {{line}}",
"ui.messagePart.context.notice.one": "{{count}} შეტყობინება",
"ui.messagePart.context.notice.other": "{{count}} შეტყობინება",
"ui.messagePart.context.thought.one": "აზრი",
"ui.messagePart.context.thought.other": "აზრი",
"ui.promptInput.dropFiles.image": "დასამატებლად ჩააგდეთ სურათები ან ფაილები",
"ui.promptInput.dropFiles.pdf": "დასამატებლად ჩააგდეთ PDF-ები ან ფაილები",
"ui.promptInput.dropFiles.imagePdf": "დასამატებლად ჩააგდეთ სურათები, PDF-ები ან ფაილები",
@@ -242,8 +240,6 @@ export const dict: Record<string, string> = {
"ui.messagePart.compaction.interrupted": "სესიის შეკუმშვა დაყოვნდა",
"ui.messagePart.providerCompaction": "სესია მოწოდებულმა მხარემ შეკუმშა",
"ui.messagePart.compaction.usage": "{{input}} შემოსული · {{output}} გამომავალი",
"ui.messagePart.tools.used.one": "გამოყენებულია {{count}} {{tools}}",
"ui.messagePart.tools.used.other": "გამოყენებულია {{count}} {{tools}}",
"ui.tool.browser": "ბრაუზერი",
"ui.common.fileCount.one": "{{count}} ფაილი",
"ui.common.fileCount.other": "{{count}} ფაილი",
-4
View File
@@ -227,8 +227,6 @@ export const dict = {
"ui.sessionTurn.retry.attemptRetrying": "ព្យាយាម {{attempt}} - {{line}}",
"ui.messagePart.context.notice.one": "សេចក្តីជូនដំណឹង {{count}}",
"ui.messagePart.context.notice.other": "{{count}} សេចក្តីជូនដំណឹង",
"ui.messagePart.context.thought.one": "គំនិត",
"ui.messagePart.context.thought.other": "គំនិត",
"ui.promptInput.dropFiles.image": "ទម្លាក់រូបភាព ឬឯកសារដើម្បីបន្ថែម",
"ui.promptInput.dropFiles.pdf": "ទម្លាក់ឯកសារ PDF ឬឯកសារដើម្បីបន្ថែម",
"ui.promptInput.dropFiles.imagePdf": "ទម្លាក់រូបភាព PDF ឬឯកសារដើម្បីបន្ថែម",
@@ -246,8 +244,6 @@ export const dict = {
"ui.messagePart.providerCompaction": "សម័យត្រូវបានសង្ខេបដោយអ្នកផ្គត់ផ្គង់",
"ui.messagePart.compaction.usage": "{{input}} ចូល · {{output}} ចេញ",
"ui.messagePart.context.updates": "បច្ចុប្បន្នភាព",
"ui.messagePart.tools.used.one": "បានប្រើ {{count}} {{tools}}",
"ui.messagePart.tools.used.other": "បានប្រើ {{count}} {{tools}}",
"ui.tool.browser": "ម៉ាស៊ីនរកមើល",
"ui.common.fileCount.one": "{{count}} ឯកសារ",
"ui.common.fileCount.other": "{{count}} ឯកសារ",
-4
View File
@@ -247,8 +247,6 @@ export const dict = {
"ui.sessionTurn.retry.attemptRetrying": "{{attempt}} 시도 - {{line}}",
"ui.messagePart.context.notice.one": "{{count}} 통지",
"ui.messagePart.context.notice.other": "{{count}}개의 통지",
"ui.messagePart.context.thought.one": "생각",
"ui.messagePart.context.thought.other": "생각",
"ui.promptInput.dropFiles.image": "추가할 이미지나 파일을 드롭하세요.",
"ui.promptInput.dropFiles.pdf": "추가할 PDF 또는 파일을 드롭하세요.",
"ui.promptInput.dropFiles.imagePdf": "추가할 이미지, PDF 또는 파일을 드롭하세요.",
@@ -266,8 +264,6 @@ export const dict = {
"ui.messagePart.providerCompaction": "공급자가 세션을 압축함",
"ui.messagePart.compaction.usage": "입력 {{input}} · 출력 {{output}}",
"ui.messagePart.context.updates": "업데이트",
"ui.messagePart.tools.used.one": "{{count}} {{tools}} 사용됨",
"ui.messagePart.tools.used.other": "{{count}} {{tools}} 사용됨",
"ui.tool.browser": "브라우저",
"ui.common.fileCount.one": "파일 {{count}}개",
"ui.common.fileCount.other": "파일 {{count}}개",
-4
View File
@@ -226,8 +226,6 @@ export const dict = {
"ui.sessionTurn.retry.attemptRetrying": "ພະຍາຍາມ {{attempt}} - {{line}}",
"ui.messagePart.context.notice.one": "{{count}} ແຈ້ງການ",
"ui.messagePart.context.notice.other": "{{count}} ປະກາດ",
"ui.messagePart.context.thought.one": "ຄວາມຄິດ",
"ui.messagePart.context.thought.other": "ຄວາມຄິດ",
"ui.promptInput.dropFiles.image": "ວາງຮູບພາບ ຫຼືໄຟລ໌ເພື່ອເພີ່ມ",
"ui.promptInput.dropFiles.pdf": "ວາງ PDF ຫຼືໄຟລ໌ເພື່ອເພີ່ມ",
"ui.promptInput.dropFiles.imagePdf": "ວາງຮູບພາບ, PDFs, ຫຼືໄຟລ໌ທີ່ຈະເພີ່ມ",
@@ -245,8 +243,6 @@ export const dict = {
"ui.messagePart.providerCompaction": "ການກະທົບການປະຕິບັດງານຕາມຜູ້ສະຫນອງ",
"ui.messagePart.compaction.usage": "{{input}} ເຂົ້າ ·{{output}} ອອກ",
"ui.messagePart.context.updates": "ອັບເດດ",
"ui.messagePart.tools.used.one": "ໃຊ້ {{count}} {{tools}}",
"ui.messagePart.tools.used.other": "ໃຊ້ {{count}} {{tools}}",
"ui.tool.browser": "ເບຣາວເຊີ",
"ui.common.fileCount.one": "{{count}} ໄຟລ໌",
"ui.common.fileCount.other": "{{count}} ໄຟລ໌",
-8
View File
@@ -242,22 +242,18 @@ export const dict: Record<string, string> = {
"ui.sessionTurn.retry.attemptRetrying": "Bandymas {{attempt}} – {{line}}",
"ui.messagePart.context.notice.one": "{{count}} Pastaba",
"ui.messagePart.context.notice.other": "{{count}} pastabų",
"ui.messagePart.context.thought.one": "mintis",
"ui.messagePart.context.thought.other": "minčių",
"ui.promptInput.dropFiles.image": "Numeskite vaizdus ar failus, kuriuos norite pridėti",
"ui.promptInput.dropFiles.pdf": "Numeskite PDF ar failus, kad pridėtumėte",
"ui.promptInput.dropFiles.imagePdf": "Numeskite vaizdus, PDF failus ar failus, kuriuos norite pridėti",
"ui.promptInput.exitShell": "Išeiti",
"ui.sessionTimeline.notice.agentChanged": "Agentas pasikeitė",
"ui.messagePart.context.notice.few": "{{count}} pastabos",
"ui.messagePart.context.thought.few": "mintys",
"ui.sessionTurn.retry.attemptRetryingNow": "Bandymas {{attempt}} – bandoma dar kartą",
"ui.sessionTurn.retry.attemptWaiting.one": "{{attempt}} bandymas – kartojama po {{count}} sek.",
"ui.sessionTurn.retry.attemptWaiting.few": "{{attempt}} bandymas – kartojama po {{count}} sek.",
"ui.sessionTurn.retry.attemptWaiting.many": "{{attempt}} bandymas – kartojama po {{count}} sek.",
"ui.sessionTurn.retry.attemptWaiting.other": "{{attempt}} bandymas – kartojama po {{count}} sek.",
"ui.messagePart.context.notice.many": "{{count}} pastabų",
"ui.messagePart.context.thought.many": "minčių",
"ui.messagePart.compaction.started": "Pradėtas sesijos tankinimas",
"ui.messagePart.compaction.running": "Suspaudimas",
"ui.messagePart.compaction.failed": "Sesijos sutankinimas nepavyko",
@@ -265,11 +261,7 @@ export const dict: Record<string, string> = {
"ui.messagePart.compaction.interrupted": "Sesijos tankinimas nutrauktas",
"ui.messagePart.providerCompaction": "Sesiją suglaudino teikėjas",
"ui.messagePart.compaction.usage": "{{input}} į · {{output}} išėjimas",
"ui.messagePart.tools.used.one": "Naudotas {{count}} {{tools}}",
"ui.messagePart.tools.used.other": "Naudotas {{count}} {{tools}}",
"ui.tool.browser": "Naršyklė",
"ui.messagePart.tools.used.few": "Naudotas {{count}} {{tools}}",
"ui.messagePart.tools.used.many": "Naudotas {{count}} {{tools}}",
"ui.common.fileCount.one": "{{count}} failas",
"ui.common.fileCount.other": "{{count}} failus",
"ui.common.fileCount.few": "{{count}} failus",
-6
View File
@@ -233,15 +233,12 @@ export const dict: Record<string, string> = {
"ui.sessionTurn.retry.attemptRetrying": "Mēģinājums {{attempt}} — {{line}}",
"ui.messagePart.context.notice.one": "{{count}} Paziņojums",
"ui.messagePart.context.notice.other": "{{count}} Paziņojumi",
"ui.messagePart.context.thought.one": "Doma",
"ui.messagePart.context.thought.other": "Domas",
"ui.promptInput.dropFiles.image": "Nometiet attēlus vai failus, lai pievienotu",
"ui.promptInput.dropFiles.pdf": "Nometiet PDF failus vai failus, lai tos pievienotu",
"ui.promptInput.dropFiles.imagePdf": "Nometiet attēlus, PDF failus vai failus, lai tos pievienotu",
"ui.promptInput.exitShell": "Iziet",
"ui.sessionTimeline.notice.agentChanged": "Mainīts aģents",
"ui.messagePart.context.notice.zero": "{{count}} paziņojumu",
"ui.messagePart.context.thought.zero": "domu",
"ui.sessionTurn.retry.attemptRetryingNow": "Mēģinājums {{attempt}} — atkārtots mēģinājums",
"ui.sessionTurn.retry.attemptWaiting.zero": "{{attempt}}. mēģinājums — atkārtots mēģinājums pēc {{count}} s",
"ui.sessionTurn.retry.attemptWaiting.one": "{{attempt}}. mēģinājums — atkārtots mēģinājums pēc {{count}} s",
@@ -253,10 +250,7 @@ export const dict: Record<string, string> = {
"ui.messagePart.compaction.interrupted": "Sesijas blīvēšana pārtraukta",
"ui.messagePart.providerCompaction": "Sesiju sablīvējis nodrošinātājs",
"ui.messagePart.compaction.usage": "{{input}} iekšā · {{output}} izeja",
"ui.messagePart.tools.used.one": "Lietots {{count}} {{tools}}",
"ui.messagePart.tools.used.other": "Lietots {{count}} {{tools}}",
"ui.tool.browser": "Pārlūkprogramma",
"ui.messagePart.tools.used.zero": "Lietots {{count}} {{tools}}",
"ui.common.fileCount.one": "{{count}} fails",
"ui.common.fileCount.other": "{{count}} faili",
"ui.common.fileCount.zero": "{{count}} faili",
-4
View File
@@ -224,8 +224,6 @@ export const dict = {
"ui.sessionTurn.retry.attemptRetrying": "Обид {{attempt}} - {{line}}",
"ui.messagePart.context.notice.one": "{{count}} известување",
"ui.messagePart.context.notice.other": "{{count}} известувања",
"ui.messagePart.context.thought.one": "мисла",
"ui.messagePart.context.thought.other": "мисли",
"ui.promptInput.dropFiles.image": "Спуштете слики или датотеки за да додадете",
"ui.promptInput.dropFiles.pdf": "Спуштете PDF-датотеки или други датотеки за додавање",
"ui.promptInput.dropFiles.imagePdf": "Спуштете слики, PDF-датотеки или други датотеки за додавање",
@@ -241,8 +239,6 @@ export const dict = {
"ui.messagePart.compaction.interrupted": "Компактирањето на сесијата е прекинато",
"ui.messagePart.providerCompaction": "Сесијата е компактирана од провајдер",
"ui.messagePart.compaction.usage": "{{input}} во · {{output}} надвор",
"ui.messagePart.tools.used.one": "Користени {{count}} {{tools}}",
"ui.messagePart.tools.used.other": "Користени {{count}} {{tools}}",
"ui.tool.browser": "Прелистувач",
"ui.common.fileCount.one": "{{count}} датотека",
"ui.common.fileCount.other": "{{count}} датотеки",
-4
View File
@@ -224,8 +224,6 @@ export const dict = {
"ui.sessionTurn.retry.attemptRetrying": "Оролдлого {{attempt}} - {{line}}",
"ui.messagePart.context.notice.one": "{{count}} мэдэгдэл",
"ui.messagePart.context.notice.other": "{{count}} мэдэгдэл",
"ui.messagePart.context.thought.one": "бодол",
"ui.messagePart.context.thought.other": "бодол",
"ui.promptInput.dropFiles.image": "Зураг эсвэл файл нэмэхийн тулд чирж оруулна уу",
"ui.promptInput.dropFiles.pdf": "PDF эсвэл файл нэмэхийн тулд чирж оруулна уу",
"ui.promptInput.dropFiles.imagePdf": "Зураг, PDF эсвэл файл нэмэхийн тулд чирж оруулна уу",
@@ -241,8 +239,6 @@ export const dict = {
"ui.messagePart.compaction.interrupted": "Хуралдааны шахалт тасалдсан",
"ui.messagePart.providerCompaction": "Сесси сэлгэгчээр шахагдсан",
"ui.messagePart.compaction.usage": "{{input}} орж · {{output}} гарах",
"ui.messagePart.tools.used.one": "Ашигласан {{count}} {{tools}}",
"ui.messagePart.tools.used.other": "Ашигласан {{count}} {{tools}}",
"ui.tool.browser": "Хөтөч",
"ui.common.fileCount.one": "{{count}} файл",
"ui.common.fileCount.other": "{{count}} файл",
-4
View File
@@ -226,8 +226,6 @@ export const dict: Record<string, string> = {
"ui.sessionTurn.retry.attemptRetrying": "Percubaan {{attempt}} - {{line}}",
"ui.messagePart.context.notice.one": "{{count}} Notis",
"ui.messagePart.context.notice.other": "{{count}} Notis",
"ui.messagePart.context.thought.one": "Pemikiran",
"ui.messagePart.context.thought.other": "Pemikiran",
"ui.promptInput.dropFiles.image": "Lepaskan imej atau fail untuk ditambahkan",
"ui.promptInput.dropFiles.pdf": "Lepaskan PDF atau fail untuk ditambahkan",
"ui.promptInput.dropFiles.imagePdf": "Lepaskan imej, PDF atau fail untuk ditambahkan",
@@ -245,8 +243,6 @@ export const dict: Record<string, string> = {
"ui.messagePart.providerCompaction": "Sesi dipadatkan oleh penyedia",
"ui.messagePart.compaction.usage": "{{input}} masuk · {{output}} keluar",
"ui.messagePart.context.updates": "Kemas kini",
"ui.messagePart.tools.used.one": "Menggunakan {{count}} {{tools}}",
"ui.messagePart.tools.used.other": "Menggunakan {{count}} {{tools}}",
"ui.tool.browser": "Pelayar",
"ui.common.fileCount.one": "{{count}} fail",
"ui.common.fileCount.other": "{{count}} fail",
-4
View File
@@ -227,8 +227,6 @@ export const dict = {
"ui.sessionTurn.retry.attemptRetrying": "ကြိုးစားမှု {{attempt}} - {{line}}",
"ui.messagePart.context.notice.one": "{{count}} အသိပေးချက်",
"ui.messagePart.context.notice.other": "{{count}} သတိပေးချက်များ",
"ui.messagePart.context.thought.one": "အတွေး",
"ui.messagePart.context.thought.other": "အတွေး",
"ui.promptInput.dropFiles.image": "ထည့်ရန် ပုံများ သို့မဟုတ် ဖိုင်များကို ချပေးပါ။",
"ui.promptInput.dropFiles.pdf": "ထည့်ရန် PDFs သို့မဟုတ် ဖိုင်များကို ချလိုက်ပါ။",
"ui.promptInput.dropFiles.imagePdf": "ထည့်ရန် ပုံများ၊ PDF သို့မဟုတ် ဖိုင်များကို ချလိုက်ပါ။",
@@ -246,8 +244,6 @@ export const dict = {
"ui.messagePart.providerCompaction": "ပံ့ပိုးသူမှ အစည်းအဝေး ဖိုင်ကို ပေါင်းချုပ်ပြီးဖြစ်သည်",
"ui.messagePart.compaction.usage": "{{input}} ကို ဝင် · {{output}} ကို ထုတ်",
"ui.messagePart.context.updates": "အပ်ဒိတ်များ",
"ui.messagePart.tools.used.one": "{{count}} {{tools}} ကို အသုံးပြုခဲ့သည်",
"ui.messagePart.tools.used.other": "{{count}} {{tools}} ကို အသုံးပြုခဲ့သည်",
"ui.tool.browser": "ဘရောက်ဇာ",
"ui.common.fileCount.one": "{{count}} ဖိုင်",
"ui.common.fileCount.other": "{{count}} ဖိုင်",
-4
View File
@@ -244,10 +244,6 @@ export const dict: Record<string, string> = {
"ui.messagePart.compaction.interrupted": "सत्र सङ्कुचन अवरुद्ध भयो",
"ui.messagePart.providerCompaction": "प्रदायकले सत्र सङ्कुचित गर्‍यो",
"ui.messagePart.compaction.usage": "{{input}} इन · {{output}} आउट",
"ui.messagePart.context.thought.one": "विचार",
"ui.messagePart.context.thought.other": "विचारहरू",
"ui.messagePart.tools.used.one": "{{count}} {{tools}} प्रयोग गरियो",
"ui.messagePart.tools.used.other": "{{count}} {{tools}} प्रयोग गरिए",
"ui.tool.browser": "ब्राउजर",
"ui.common.fileCount.one": "{{count}} फाइल",
"ui.common.fileCount.other": "{{count}} फाइलहरू",
-4
View File
@@ -8,11 +8,7 @@ export const dict: Record<string, string> = {
"ui.messagePart.compaction.interrupted": "Sessieverdichting onderbroken",
"ui.messagePart.providerCompaction": "Sessie gecomprimeerd per provider",
"ui.messagePart.compaction.usage": "{{input}} in · {{output}} uit",
"ui.messagePart.tools.used.one": "{{count}} {{tools}} gebruikt",
"ui.messagePart.tools.used.other": "{{count}} {{tools}} gebruikt",
"ui.tool.browser": "Browser",
"ui.messagePart.context.thought.one": "Gedachte",
"ui.messagePart.context.thought.other": "Gedachten",
"ui.sessionTurn.retry.attemptWaiting.one": "Poging {{attempt}} wordt over {{count}} seconde opnieuw uitgevoerd",
"ui.sessionTurn.retry.attemptWaiting.other": "Poging {{attempt}} wordt over {{count}} seconden opnieuw uitgevoerd",
"ui.sessionTurn.retry.attemptRetryingNow": "Poging {{attempt}} – opnieuw proberen",
-4
View File
@@ -12,11 +12,7 @@ export const dict: Record<Keys, string> = {
"ui.messagePart.compaction.interrupted": "Sesjonskomprimering avbrutt",
"ui.messagePart.providerCompaction": "Økt komprimert av leverandør",
"ui.messagePart.compaction.usage": "{{input}} inn · {{output}} ut",
"ui.messagePart.tools.used.one": "Brukte {{count}} {{tools}}",
"ui.messagePart.tools.used.other": "Brukte {{count}} {{tools}}",
"ui.tool.browser": "Nettleser",
"ui.messagePart.context.thought.one": "Tanke",
"ui.messagePart.context.thought.other": "Tanker",
"ui.sessionTurn.retry.attemptWaiting.one": "Forsøk {{attempt}} gjentas om {{count}} sekund",
"ui.sessionTurn.retry.attemptWaiting.other": "Forsøk {{attempt}} gjentas om {{count}} sekunder",
"ui.sessionTurn.retry.attemptRetryingNow": "Forsøk {{attempt}} – prøver igjen",
-4
View File
@@ -245,10 +245,6 @@ export const dict: Record<string, string> = {
"ui.messagePart.compaction.interrupted": "سیشن کمپیکشن رک گئی",
"ui.messagePart.providerCompaction": "پرووائیڈر نے سیشن کمپیکٹ کیتا",
"ui.messagePart.compaction.usage": "\u2068{{input}}\u2069 اِن · \u2068{{output}}\u2069 آؤٹ",
"ui.messagePart.context.thought.one": "خیال",
"ui.messagePart.context.thought.other": "خیال",
"ui.messagePart.tools.used.one": "\u2068{{count}}\u2069 \u2068{{tools}}\u2069 ورتیا",
"ui.messagePart.tools.used.other": "\u2068{{count}}\u2069 \u2068{{tools}}\u2069 ورتے",
"ui.tool.browser": "براؤزر",
"ui.common.fileCount.one": "\u2068{{count}}\u2069 فائل",
"ui.common.fileCount.other": "\u2068{{count}}\u2069 فائلاں",
-8
View File
@@ -262,8 +262,6 @@ export const dict = {
"ui.sessionTurn.retry.attemptRetrying": "Próba {{attempt}} - {{line}}",
"ui.messagePart.context.notice.one": "{{count}} powiadomienie",
"ui.messagePart.context.notice.other": "{{count}} powiadomienia",
"ui.messagePart.context.thought.one": "myśl",
"ui.messagePart.context.thought.other": "myśli",
"ui.promptInput.dropFiles.image": "Upuść obrazy lub pliki, które chcesz dodać",
"ui.promptInput.dropFiles.pdf": "Upuść pliki PDF lub inne pliki do dodania",
"ui.promptInput.dropFiles.imagePdf": "Upuść obrazy, pliki PDF lub inne pliki do dodania",
@@ -271,8 +269,6 @@ export const dict = {
"ui.sessionTimeline.notice.agentChanged": "Zmiana agenta",
"ui.messagePart.context.notice.few": "{{count}} powiadomienia",
"ui.messagePart.context.notice.many": "{{count}} powiadomień",
"ui.messagePart.context.thought.few": "myśli",
"ui.messagePart.context.thought.many": "myśli",
"ui.sessionTurn.retry.attemptRetryingNow": "Próba {{attempt}} – ponawianie",
"ui.sessionTurn.retry.attemptWaiting.one": "Próba {{attempt}} – ponowienie za {{count}} sekundę",
"ui.sessionTurn.retry.attemptWaiting.few": "Próba {{attempt}} – ponowienie za {{count}} sekundy",
@@ -285,13 +281,9 @@ export const dict = {
"ui.messagePart.compaction.interrupted": "Kompaktowanie sesji przerwane",
"ui.messagePart.providerCompaction": "Sesja skompaktowana przez dostawcę",
"ui.messagePart.compaction.usage": "{{input}} w · {{output}} na zewnątrz",
"ui.messagePart.tools.used.one": "Użyto {{count}} {{tools}}",
"ui.messagePart.tools.used.other": "Użyto {{count}} {{tools}}",
"ui.tool.browser": "Przeglądarka",
"ui.common.fileCount.one": "{{count}} plik",
"ui.common.fileCount.other": "{{count}} pliku",
"ui.messagePart.tools.used.few": "Użyto {{count}} {{tools}}",
"ui.messagePart.tools.used.many": "Użyto {{count}} {{tools}}",
"ui.common.fileCount.few": "{{count}} pliki",
"ui.common.fileCount.many": "{{count}} plików",
"ui.messagePart.context.updates": "Aktualizacje",
-6
View File
@@ -234,15 +234,12 @@ export const dict: Record<string, string> = {
"ui.sessionTurn.retry.attemptRetrying": "Încercarea {{attempt}} - {{line}}",
"ui.messagePart.context.notice.one": "{{count}} Notă",
"ui.messagePart.context.notice.other": "{{count}} de notificări",
"ui.messagePart.context.thought.one": "Gând",
"ui.messagePart.context.thought.other": "de gânduri",
"ui.promptInput.dropFiles.image": "Aruncă imagini sau fișiere de adăugat",
"ui.promptInput.dropFiles.pdf": "Aruncați PDF-uri sau fișiere de adăugat",
"ui.promptInput.dropFiles.imagePdf": "Aruncă imagini, PDF-uri sau fișiere de adăugat",
"ui.promptInput.exitShell": "Ieșire",
"ui.sessionTimeline.notice.agentChanged": "Agent schimbat",
"ui.messagePart.context.notice.few": "{{count}} notificări",
"ui.messagePart.context.thought.few": "gânduri",
"ui.sessionTurn.retry.attemptRetryingNow": "Încercare {{attempt}} - reîncercare",
"ui.sessionTurn.retry.attemptWaiting.one": "Încercarea {{attempt}} – reîncercare în {{count}} s",
"ui.sessionTurn.retry.attemptWaiting.few": "Încercarea {{attempt}} – reîncercare în {{count}} s",
@@ -254,10 +251,7 @@ export const dict: Record<string, string> = {
"ui.messagePart.compaction.interrupted": "Compactarea sesiunii întreruptă",
"ui.messagePart.providerCompaction": "Sesiune compactată de furnizor",
"ui.messagePart.compaction.usage": "{{input}} în · {{output}} afară",
"ui.messagePart.tools.used.one": "Folosit {{count}} {{tools}}",
"ui.messagePart.tools.used.other": "Folosit {{count}} {{tools}}",
"ui.tool.browser": "Browser",
"ui.messagePart.tools.used.few": "Folosit {{count}} {{tools}}",
"ui.common.fileCount.one": "Fișierul {{count}}",
"ui.common.fileCount.other": "Fișierele {{count}}",
"ui.common.fileCount.few": "Fișierele {{count}}",
-8
View File
@@ -261,8 +261,6 @@ export const dict = {
"ui.sessionTurn.retry.attemptRetrying": "Попытка {{attempt}} - {{line}}",
"ui.messagePart.context.notice.one": "{{count}} уведомление",
"ui.messagePart.context.notice.other": "{{count}} уведомления",
"ui.messagePart.context.thought.one": "мысль",
"ui.messagePart.context.thought.other": "мысли",
"ui.promptInput.dropFiles.image": "Перетащите изображения или файлы для добавления.",
"ui.promptInput.dropFiles.pdf": "Перетащите PDF-файлы или другие файлы для добавления",
"ui.promptInput.dropFiles.imagePdf": "Перетащите изображения, PDF-файлы или другие файлы для добавления",
@@ -270,8 +268,6 @@ export const dict = {
"ui.sessionTimeline.notice.agentChanged": "Агент изменен.",
"ui.messagePart.context.notice.few": "{{count}} уведомления",
"ui.messagePart.context.notice.many": "{{count}} уведомлений",
"ui.messagePart.context.thought.few": "мысли",
"ui.messagePart.context.thought.many": "мыслей",
"ui.sessionTurn.retry.attemptRetryingNow": "Попытка {{attempt}} — повторная попытка",
"ui.sessionTurn.retry.attemptWaiting.one": "Попытка {{attempt}} — повтор через {{count}} секунду",
"ui.sessionTurn.retry.attemptWaiting.few": "Попытка {{attempt}} — повтор через {{count}} секунды",
@@ -284,13 +280,9 @@ export const dict = {
"ui.messagePart.compaction.interrupted": "Компактизация сессии прервана",
"ui.messagePart.providerCompaction": "Сессия скомпактирована провайдером",
"ui.messagePart.compaction.usage": "{{input}} в · {{output}} из",
"ui.messagePart.tools.used.one": "Использовано {{count}} {{tools}}",
"ui.messagePart.tools.used.other": "Использовано {{count}} {{tools}}",
"ui.tool.browser": "Браузер",
"ui.common.fileCount.one": "{{count}} файл",
"ui.common.fileCount.other": "{{count}} файла",
"ui.messagePart.tools.used.few": "Использовано {{count}} {{tools}}",
"ui.messagePart.tools.used.many": "Использовано {{count}} {{tools}}",
"ui.common.fileCount.few": "{{count}} файла",
"ui.common.fileCount.many": "{{count}} файлов",
"ui.messagePart.context.updates": "Обновления",
-4
View File
@@ -242,10 +242,6 @@ export const dict: Record<string, string> = {
"ui.messagePart.compaction.interrupted": "සැසි සංක්ෂිප්ත කිරීම බාධා විය",
"ui.messagePart.providerCompaction": "සපයන්නා විසින් සැසිය සංක්ෂිප්ත කරන ලදී",
"ui.messagePart.compaction.usage": "ඇතුළට {{input}} · පිටතට {{output}}",
"ui.messagePart.context.thought.one": "සිතුවිල්ල",
"ui.messagePart.context.thought.other": "සිතුවිලි",
"ui.messagePart.tools.used.one": "{{tools}} {{count}}ක් භාවිත කළා",
"ui.messagePart.tools.used.other": "{{tools}} {{count}}ක් භාවිත කළා",
"ui.tool.browser": "බ්‍රවුසරය",
"ui.common.fileCount.one": "ගොනුව {{count}}",
"ui.common.fileCount.other": "ගොනු {{count}}",
-8
View File
@@ -1,6 +1,4 @@
export const dict: Record<string, string> = {
"ui.messagePart.tools.used.few": "Použité {{count}}×: {{tools}}",
"ui.messagePart.tools.used.many": "Použité {{count}}×: {{tools}}",
"ui.common.fileCount.few": "{{count}} súbory",
"ui.common.fileCount.many": "{{count}} súboru",
"ui.sessionTurn.diffs.changed.few": "{{count}} zmenené súbory",
@@ -23,8 +21,6 @@ export const dict: Record<string, string> = {
"ui.common.question.many": "otázky",
"ui.messagePart.context.notice.few": "{{count}} upozornenia",
"ui.messagePart.context.notice.many": "{{count}} upozornenia",
"ui.messagePart.context.thought.few": "myšlienky",
"ui.messagePart.context.thought.many": "myšlienky",
"ui.sessionTurn.retry.attemptWaiting.few": "Pokus {{attempt}} – ďalší pokus o {{count}} sekundy",
"ui.sessionTurn.retry.attemptWaiting.many": "Pokus {{attempt}} – ďalší pokus o {{count}} sekundy",
"ui.sessionReview.title": "Zmeny v relácii",
@@ -252,8 +248,6 @@ export const dict: Record<string, string> = {
"ui.sessionTurn.retry.attemptRetrying": "Pokus {{attempt}} - {{line}}",
"ui.messagePart.context.notice.one": "{{count}} upozornenie",
"ui.messagePart.context.notice.other": "{{count}} upozornení",
"ui.messagePart.context.thought.one": "myšlienka",
"ui.messagePart.context.thought.other": "myšlienok",
"ui.promptInput.dropFiles.image": "Presuňte obrázky alebo súbory, ktoré chcete pridať",
"ui.promptInput.dropFiles.pdf": "Presuňte súbory PDF alebo iné súbory, ktoré chcete pridať",
"ui.promptInput.dropFiles.imagePdf": "Presuňte obrázky, súbory PDF alebo iné súbory, ktoré chcete pridať",
@@ -269,8 +263,6 @@ export const dict: Record<string, string> = {
"ui.messagePart.compaction.interrupted": "Kompakcia relácie prerušena",
"ui.messagePart.providerCompaction": "Reláciu skomprimoval poskytovateľ",
"ui.messagePart.compaction.usage": "{{input}} vstup · {{output}} výstup",
"ui.messagePart.tools.used.one": "Použitý {{count}} {{tools}}",
"ui.messagePart.tools.used.other": "Použité {{count}} {{tools}}",
"ui.tool.browser": "Webový prehliadač",
"ui.common.fileCount.one": "{{count}} súbor",
"ui.common.fileCount.other": "{{count}} súborov",
-8
View File
@@ -1,6 +1,4 @@
export const dict: Record<string, string> = {
"ui.messagePart.tools.used.two": "{{tools}} uporabljeno {{count}}-krat",
"ui.messagePart.tools.used.few": "{{tools}} uporabljeno {{count}}-krat",
"ui.common.fileCount.two": "{{count}} datoteki",
"ui.common.fileCount.few": "{{count}} datoteke",
"ui.sessionTurn.diffs.changed.two": "{{count}} spremenjeni datoteki",
@@ -23,8 +21,6 @@ export const dict: Record<string, string> = {
"ui.common.question.few": "vprašanja",
"ui.messagePart.context.notice.two": "{{count}} obvestili",
"ui.messagePart.context.notice.few": "{{count}} obvestila",
"ui.messagePart.context.thought.two": "misli",
"ui.messagePart.context.thought.few": "misli",
"ui.sessionTurn.retry.attemptWaiting.two": "Poskus {{attempt}} – ponovni poskus čez {{count}} sekundi",
"ui.sessionTurn.retry.attemptWaiting.few": "Poskus {{attempt}} – ponovni poskus čez {{count}} sekunde",
"ui.sessionReview.title": "Spremembe seje",
@@ -253,8 +249,6 @@ export const dict: Record<string, string> = {
"ui.sessionTurn.retry.attemptRetrying": "Poskus {{attempt}} - {{line}}",
"ui.messagePart.context.notice.one": "{{count}} obvestilo",
"ui.messagePart.context.notice.other": "{{count}} obvestil",
"ui.messagePart.context.thought.one": "misel",
"ui.messagePart.context.thought.other": "misli",
"ui.promptInput.dropFiles.image": "Spustite slike ali datoteke, ki jih želite dodati",
"ui.promptInput.dropFiles.pdf": "Spustite datoteke PDF ali druge datoteke, ki jih želite dodati",
"ui.promptInput.dropFiles.imagePdf": "Spustite slike, datoteke PDF ali druge datoteke, ki jih želite dodati",
@@ -270,8 +264,6 @@ export const dict: Record<string, string> = {
"ui.messagePart.compaction.interrupted": "Kompaktiranje sej prekinjeno",
"ui.messagePart.providerCompaction": "Seja je bila skrčena s strani ponudnika",
"ui.messagePart.compaction.usage": "{{input}} v · {{output}} ven",
"ui.messagePart.tools.used.one": "Uporabljen {{count}} {{tools}}",
"ui.messagePart.tools.used.other": "Uporabljenih {{count}} {{tools}}",
"ui.tool.browser": "Spletni brskalnik",
"ui.common.fileCount.one": "{{count}} datoteka",
"ui.common.fileCount.other": "{{count}} datotek",
-4
View File
@@ -224,8 +224,6 @@ export const dict: Record<string, string> = {
"ui.sessionTurn.retry.attemptRetrying": "Përpjekje {{attempt}} - {{line}}",
"ui.messagePart.context.notice.one": "Njoftim {{count}}",
"ui.messagePart.context.notice.other": "{{count}} Njoftimet",
"ui.messagePart.context.thought.one": "Mendimi",
"ui.messagePart.context.thought.other": "Mendime",
"ui.promptInput.dropFiles.image": "Hidhni imazhe ose skedarë për të shtuar",
"ui.promptInput.dropFiles.pdf": "Hidhni PDF ose skedarë për të shtuar",
"ui.promptInput.dropFiles.imagePdf": "Hidhni imazhe, PDF ose skedarë për të shtuar",
@@ -241,8 +239,6 @@ export const dict: Record<string, string> = {
"ui.messagePart.compaction.interrupted": "Ngjeshja e sesionit u ndërpre",
"ui.messagePart.providerCompaction": "Sesioni i ngjeshur nga ofruesi",
"ui.messagePart.compaction.usage": "{{input}} në · {{output}} jashtë",
"ui.messagePart.tools.used.one": "E përdorur {{count}} {{tools}}",
"ui.messagePart.tools.used.other": "E përdorur {{count}} {{tools}}",
"ui.tool.browser": "Shfletuesi",
"ui.common.fileCount.one": "Skedari {{count}}",
"ui.common.fileCount.other": "Skedarët {{count}}",
-6
View File
@@ -1,5 +1,4 @@
export const dict = {
"ui.messagePart.tools.used.few": "{{tools}} коришћен {{count}} пута",
"ui.common.fileCount.few": "{{count}} фајла",
"ui.sessionTurn.diffs.changed.few": "{{count}} промењене датотеке",
"ui.messagePart.context.read.few": "{{count}} читања",
@@ -11,7 +10,6 @@ export const dict = {
"ui.common.file.few": "датотеке",
"ui.common.question.few": "питања",
"ui.messagePart.context.notice.few": "{{count}} обавештења",
"ui.messagePart.context.thought.few": "мисли",
"ui.sessionTurn.retry.attemptWaiting.few": "Покушај {{attempt}} – поновни покушај за {{count}} секунде",
"ui.sessionReview.title": "Промене сесије",
"ui.sessionReview.title.git": "Git промене",
@@ -239,8 +237,6 @@ export const dict = {
"ui.sessionTurn.retry.attemptRetrying": "Покушај {{attempt}} - {{line}}",
"ui.messagePart.context.notice.one": "{{count}} обавештење",
"ui.messagePart.context.notice.other": "{{count}} обавештења",
"ui.messagePart.context.thought.one": "мисао",
"ui.messagePart.context.thought.other": "мисли",
"ui.promptInput.dropFiles.image": "Испустите слике или датотеке за додавање",
"ui.promptInput.dropFiles.pdf": "Испустите PDF датотеке или друге датотеке за додавање",
"ui.promptInput.dropFiles.imagePdf": "Испустите слике, PDF датотеке или друге датотеке за додавање",
@@ -256,8 +252,6 @@ export const dict = {
"ui.messagePart.compaction.interrupted": "Компактовање сесије прекинуто",
"ui.messagePart.providerCompaction": "Сесија компактована од провајдера",
"ui.messagePart.compaction.usage": "{{input}} улаз · {{output}} излаз",
"ui.messagePart.tools.used.one": "Коришћено {{count}} {{tools}}",
"ui.messagePart.tools.used.other": "Коришћено {{count}} {{tools}}",
"ui.tool.browser": "Прегледник",
"ui.common.fileCount.one": "{{count}} фајл",
"ui.common.fileCount.other": "{{count}} фајлова",
-4
View File
@@ -8,11 +8,7 @@ export const dict: Record<string, string> = {
"ui.messagePart.compaction.interrupted": "Sessionskomprimering avbröts",
"ui.messagePart.providerCompaction": "Session komprimerad av leverantör",
"ui.messagePart.compaction.usage": "{{input}} in · {{output}} ut",
"ui.messagePart.tools.used.one": "Använde {{count}} {{tools}}",
"ui.messagePart.tools.used.other": "Använde {{count}} {{tools}}",
"ui.tool.browser": "Webbläsare",
"ui.messagePart.context.thought.one": "Tanke",
"ui.messagePart.context.thought.other": "Tankar",
"ui.sessionTurn.retry.attemptWaiting.one": "Försök {{attempt}} upprepas om {{count}} sekund",
"ui.sessionTurn.retry.attemptWaiting.other": "Försök {{attempt}} upprepas om {{count}} sekunder",
"ui.sessionTurn.retry.attemptRetryingNow": "Försök {{attempt}} – försöker igen",
-4
View File
@@ -225,8 +225,6 @@ export const dict = {
"ui.sessionTurn.retry.attemptRetrying": "Кӯшиши {{attempt}} - {{line}}",
"ui.messagePart.context.notice.one": "{{count}} огоҳӣ",
"ui.messagePart.context.notice.other": "{{count}} огоҳиҳо",
"ui.messagePart.context.thought.one": "андеша",
"ui.messagePart.context.thought.other": "андешаҳо",
"ui.promptInput.dropFiles.image": "Барои илова тасвирҳо ё файлҳоро гузоред",
"ui.promptInput.dropFiles.pdf": "Барои илова PDF ё файлҳоро гузоред",
"ui.promptInput.dropFiles.imagePdf": "Барои илова тасвирҳо, PDF ё файлҳоро гузоред",
@@ -242,8 +240,6 @@ export const dict = {
"ui.messagePart.compaction.interrupted": "Фишурдани сессия қатъ карда шуд",
"ui.messagePart.providerCompaction": "Сеанс аз ҷониби провайдер фишурда шудааст",
"ui.messagePart.compaction.usage": "{{input}} дар · {{output}} берун",
"ui.messagePart.tools.used.one": "Истифода бурда мешавад {{count}} {{tools}}",
"ui.messagePart.tools.used.other": "Истифода бурда мешавад {{count}} {{tools}}",
"ui.tool.browser": "Браузер",
"ui.common.fileCount.one": "{{count}} файл",
"ui.common.fileCount.other": "{{count}} файл",
-4
View File
@@ -246,8 +246,6 @@ export const dict = {
"ui.sessionTurn.retry.attemptRetrying": "พยายาม {{attempt}} - {{line}}",
"ui.messagePart.context.notice.one": "{{count}} ประกาศ",
"ui.messagePart.context.notice.other": "{{count}} ประกาศ",
"ui.messagePart.context.thought.one": "ความคิด",
"ui.messagePart.context.thought.other": "ความคิด",
"ui.promptInput.dropFiles.image": "วางรูปภาพหรือไฟล์ที่จะเพิ่ม",
"ui.promptInput.dropFiles.pdf": "วาง PDF หรือไฟล์ที่จะเพิ่ม",
"ui.promptInput.dropFiles.imagePdf": "วางรูปภาพ, PDF หรือไฟล์ที่จะเพิ่ม",
@@ -265,8 +263,6 @@ export const dict = {
"ui.messagePart.providerCompaction": "เซสชันถูกบีบอัดโดยผู้ให้บริการ",
"ui.messagePart.compaction.usage": "{{input}} เข้า · {{output}} ออก",
"ui.messagePart.context.updates": "การอัปเดต",
"ui.messagePart.tools.used.one": "ใช้ {{count}} {{tools}}",
"ui.messagePart.tools.used.other": "ใช้ {{count}} {{tools}}",
"ui.tool.browser": "เบราว์เซอร์",
"ui.common.fileCount.one": "{{count}} ไฟล์",
"ui.common.fileCount.other": "{{count}} ไฟล์",
-4
View File
@@ -224,8 +224,6 @@ export const dict: Record<string, string> = {
"ui.sessionTurn.retry.attemptRetrying": "Synanyşyk {{attempt}} - {{line}}",
"ui.messagePart.context.notice.one": "{{count}} bildiriş",
"ui.messagePart.context.notice.other": "{{count}} bildiriş",
"ui.messagePart.context.thought.one": "pikir",
"ui.messagePart.context.thought.other": "pikir",
"ui.promptInput.dropFiles.image": "Goşmak üçin suratlary ýa-da faýllary taşlaň",
"ui.promptInput.dropFiles.pdf": "Goşmak üçin PDF-leri ýa-da faýllary taşlaň",
"ui.promptInput.dropFiles.imagePdf": "Goşmak üçin suratlary, PDF-leri ýa-da faýllary taşlaň",
@@ -241,8 +239,6 @@ export const dict: Record<string, string> = {
"ui.messagePart.compaction.interrupted": "Sessiýanyň gysylmagy kesildi",
"ui.messagePart.providerCompaction": "Sessiýa üpjün ediji tarapyndan gysyldy",
"ui.messagePart.compaction.usage": "{{input}} in · {{output}} çykýar",
"ui.messagePart.tools.used.one": "Ulanylan {{count}} {{tools}}",
"ui.messagePart.tools.used.other": "Ulanylan {{count}} {{tools}}",
"ui.tool.browser": "Brauzer",
"ui.common.fileCount.one": "{{count}} faýl",
"ui.common.fileCount.other": "{{count}} faýl",
-4
View File
@@ -250,8 +250,6 @@ export const dict = {
"ui.sessionTurn.retry.attemptRetrying": "{{attempt}} - {{line}}'yu deneyin",
"ui.messagePart.context.notice.one": "{{count}} Bildirimi",
"ui.messagePart.context.notice.other": "{{count}} Bildirimleri",
"ui.messagePart.context.thought.one": "Düşünce",
"ui.messagePart.context.thought.other": "Düşünceler",
"ui.promptInput.dropFiles.image": "Eklenecek resimleri veya dosyaları bırakın",
"ui.promptInput.dropFiles.pdf": "Eklenecek PDF'leri veya dosyaları bırakın",
"ui.promptInput.dropFiles.imagePdf": "Eklenecek görselleri, PDF'leri veya dosyaları bırakın",
@@ -267,8 +265,6 @@ export const dict = {
"ui.messagePart.compaction.interrupted": "Oturum sıkıştırması kesintiye uğradı",
"ui.messagePart.providerCompaction": "Oturum sağlayıcı tarafından sıkıştırıldı",
"ui.messagePart.compaction.usage": "{{input}} giriş · {{output}} çıkış",
"ui.messagePart.tools.used.one": "İkinci el {{count}} {{tools}}",
"ui.messagePart.tools.used.other": "İkinci el {{count}} {{tools}}",
"ui.tool.browser": "Tarayıcı",
"ui.common.fileCount.one": "{{count}} dosyası",
"ui.common.fileCount.other": "{{count}} dosyaları",
-8
View File
@@ -1,6 +1,4 @@
export const dict: Record<string, string> = {
"ui.messagePart.tools.used.few": "Використано {{count}} рази: {{tools}}",
"ui.messagePart.tools.used.many": "Використано {{count}} разів: {{tools}}",
"ui.common.fileCount.few": "{{count}} файли",
"ui.common.fileCount.many": "{{count}} файлів",
"ui.sessionTurn.diffs.changed.few": "Змінені файли: {{count}}",
@@ -23,8 +21,6 @@ export const dict: Record<string, string> = {
"ui.common.question.many": "запитань",
"ui.messagePart.context.notice.few": "{{count}} примітки",
"ui.messagePart.context.notice.many": "{{count}} приміток",
"ui.messagePart.context.thought.few": "думки",
"ui.messagePart.context.thought.many": "думок",
"ui.sessionTurn.retry.attemptWaiting.few": "Спроба {{attempt}} — повтор через {{count}} секунди",
"ui.sessionTurn.retry.attemptWaiting.many": "Спроба {{attempt}} — повтор через {{count}} секунд",
"ui.sessionReview.title": "Зміни сесії",
@@ -275,8 +271,6 @@ export const dict: Record<string, string> = {
"ui.sessionTurn.retry.attemptRetrying": "Спроба {{attempt}} - {{line}}",
"ui.messagePart.context.notice.one": "{{count}} примітка",
"ui.messagePart.context.notice.other": "{{count}} примітки",
"ui.messagePart.context.thought.one": "думка",
"ui.messagePart.context.thought.other": "думки",
"ui.promptInput.dropFiles.image": "Перетягніть зображення або файли, щоб додати",
"ui.promptInput.dropFiles.pdf": "Перетягніть PDF-файли або інші файли, щоб додати",
"ui.promptInput.dropFiles.imagePdf": "Перетягніть зображення, PDF-файли або інші файли, щоб додати",
@@ -292,8 +286,6 @@ export const dict: Record<string, string> = {
"ui.messagePart.compaction.interrupted": "Компактування сесії перервано",
"ui.messagePart.providerCompaction": "Сесію стиснуто провайдером",
"ui.messagePart.compaction.usage": "{{input}} вхід · {{output}} вихід",
"ui.messagePart.tools.used.one": "Використано {{count}} {{tools}}",
"ui.messagePart.tools.used.other": "Використано {{count}} {{tools}}",
"ui.tool.browser": "Веббраузер",
"ui.common.fileCount.one": "{{count}} файл",
"ui.common.fileCount.other": "{{count}} файла",
-4
View File
@@ -246,10 +246,6 @@ export const dict: Record<string, string> = {
"ui.messagePart.compaction.interrupted": "سیشن کمپیکشن میں خلل پڑا",
"ui.messagePart.providerCompaction": "فراہم کنندہ نے سیشن کمپیکٹ کیا",
"ui.messagePart.compaction.usage": "\u2068{{input}}\u2069 اِن · \u2068{{output}}\u2069 آؤٹ",
"ui.messagePart.context.thought.one": "خیال",
"ui.messagePart.context.thought.other": "خیالات",
"ui.messagePart.tools.used.one": "\u2068{{count}}\u2069 \u2068{{tools}}\u2069 استعمال کیا",
"ui.messagePart.tools.used.other": "\u2068{{count}}\u2069 \u2068{{tools}}\u2069 استعمال کیے",
"ui.tool.browser": "براؤزر",
"ui.common.fileCount.one": "\u2068{{count}}\u2069 فائل",
"ui.common.fileCount.other": "\u2068{{count}}\u2069 فائلیں",
-4
View File
@@ -227,8 +227,6 @@ export const dict: Record<string, string> = {
"ui.sessionTurn.retry.attemptRetrying": "Urinish {{attempt}} - {{line}}",
"ui.messagePart.context.notice.one": "{{count}} ta bildirishnoma",
"ui.messagePart.context.notice.other": "{{count}} ta bildirishnoma",
"ui.messagePart.context.thought.one": "ta fikr",
"ui.messagePart.context.thought.other": "ta fikr",
"ui.promptInput.dropFiles.image": "Rasm yoki fayllarni qo‘shish uchun tashlang",
"ui.promptInput.dropFiles.pdf": "PDF yoki fayllarni qo‘shish uchun tashlang",
"ui.promptInput.dropFiles.imagePdf": "Rasm, PDF yoki fayllarni qo‘shish uchun tashlang",
@@ -244,8 +242,6 @@ export const dict: Record<string, string> = {
"ui.messagePart.compaction.interrupted": "Seansni siqish uzildi",
"ui.messagePart.providerCompaction": "Seans provayder tomonidan ixchamlashtirilgan",
"ui.messagePart.compaction.usage": "{{input}} ichida · {{output}} chiqdi",
"ui.messagePart.tools.used.one": "Ishlatilgan {{count}} {{tools}}",
"ui.messagePart.tools.used.other": "Ishlatilgan {{count}} {{tools}}",
"ui.tool.browser": "Brauzer",
"ui.common.fileCount.one": "{{count}} ta fayl",
"ui.common.fileCount.other": "{{count}} ta fayl",
-4
View File
@@ -226,8 +226,6 @@ export const dict: Record<string, string> = {
"ui.sessionTurn.retry.attemptRetrying": "Lần thử {{attempt}} - {{line}}",
"ui.messagePart.context.notice.one": "{{count}} Thông báo",
"ui.messagePart.context.notice.other": "{{count}} Thông báo",
"ui.messagePart.context.thought.one": "Suy nghĩ",
"ui.messagePart.context.thought.other": "Suy nghĩ",
"ui.promptInput.dropFiles.image": "Thả hình ảnh hoặc tập tin để thêm",
"ui.promptInput.dropFiles.pdf": "Thả tệp PDF hoặc tệp để thêm",
"ui.promptInput.dropFiles.imagePdf": "Thả hình ảnh, tệp PDF hoặc tệp để thêm",
@@ -245,8 +243,6 @@ export const dict: Record<string, string> = {
"ui.messagePart.providerCompaction": "Phiên được nén bởi nhà cung cấp",
"ui.messagePart.compaction.usage": "{{input}} vào · {{output}} ra",
"ui.messagePart.context.updates": "Bản cập nhật",
"ui.messagePart.tools.used.one": "Đã sử dụng {{count}} {{tools}}",
"ui.messagePart.tools.used.other": "Đã sử dụng {{count}} {{tools}}",
"ui.tool.browser": "Trình duyệt",
"ui.common.fileCount.one": "{{count}} tệp",
"ui.common.fileCount.other": "{{count}} tệp",
-4
View File
@@ -248,8 +248,6 @@ export const dict = {
"ui.sessionTurn.retry.attemptRetrying": "尝试 {{attempt}} - {{line}}",
"ui.messagePart.context.notice.one": "{{count}} 通知",
"ui.messagePart.context.notice.other": "{{count}} 条通知",
"ui.messagePart.context.thought.one": "思考",
"ui.messagePart.context.thought.other": "思考",
"ui.promptInput.dropFiles.image": "拖放要添加的图像或文件",
"ui.promptInput.dropFiles.pdf": "拖放要添加的 PDF 或文件",
"ui.promptInput.dropFiles.imagePdf": "拖放要添加的图像、PDF 或文件",
@@ -267,8 +265,6 @@ export const dict = {
"ui.messagePart.providerCompaction": "会话由提供者压缩",
"ui.messagePart.compaction.usage": "{{input}} 输入 · {{output}} 输出",
"ui.messagePart.context.updates": "更新",
"ui.messagePart.tools.used.one": "使用了 {{count}} 个 {{tools}}",
"ui.messagePart.tools.used.other": "使用了 {{count}} 个 {{tools}}",
"ui.tool.browser": "浏览器",
"ui.common.fileCount.one": "{{count}} 个文件",
"ui.common.fileCount.other": "{{count}} 个文件",
-4
View File
@@ -248,8 +248,6 @@ export const dict = {
"ui.sessionTurn.retry.attemptRetrying": "試 {{attempt}} - {{line}}",
"ui.messagePart.context.notice.one": "{{count}} 通知",
"ui.messagePart.context.notice.other": "{{count}} 條通知",
"ui.messagePart.context.thought.one": "思考",
"ui.messagePart.context.thought.other": "思考",
"ui.promptInput.dropFiles.image": "拖放要新增的圖像或文件",
"ui.promptInput.dropFiles.pdf": "拖放要新增的 PDF 或文件",
"ui.promptInput.dropFiles.imagePdf": "拖放要新增的圖像、PDF 或文件",
@@ -267,8 +265,6 @@ export const dict = {
"ui.messagePart.providerCompaction": "工作階段已由提供者壓縮",
"ui.messagePart.compaction.usage": "{{input}} 輸入 · {{output}} 輸出",
"ui.messagePart.context.updates": "更新",
"ui.messagePart.tools.used.one": "使用了 {{count}} 個 {{tools}}",
"ui.messagePart.tools.used.other": "使用了 {{count}} 個 {{tools}}",
"ui.tool.browser": "瀏覽器",
"ui.common.fileCount.one": "{{count}} 個檔案",
"ui.common.fileCount.other": "{{count}} 個檔案",