diff --git a/.github/VOUCHED.td b/.github/VOUCHED.td index 8bce65ae92..dac757ae91 100644 --- a/.github/VOUCHED.td +++ b/.github/VOUCHED.td @@ -25,3 +25,4 @@ r44vc0rp rekram1-node -spider-yamet clawdbot/llm psychosis, spam pinging the team thdxr +-OpenCodeEngineer bot that spams issues diff --git a/bun.lock b/bun.lock index 82a2c2a8a6..a37a5f98dd 100644 --- a/bun.lock +++ b/bun.lock @@ -358,7 +358,7 @@ "drizzle-orm": "catalog:", "effect": "catalog:", "fuzzysort": "3.1.0", - "gitlab-ai-provider": "5.3.2", + "gitlab-ai-provider": "5.3.3", "glob": "13.0.5", "google-auth-library": "10.5.0", "gray-matter": "4.0.3", @@ -3077,7 +3077,7 @@ "github-slugger": ["github-slugger@2.0.0", "", {}, "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw=="], - "gitlab-ai-provider": ["gitlab-ai-provider@5.3.2", "", { "dependencies": { "@anthropic-ai/sdk": "^0.71.0", "@anycable/core": "^0.9.2", "graphql-request": "^6.1.0", "isomorphic-ws": "^5.0.0", "openai": "^6.16.0", "socket.io-client": "^4.8.1", "vscode-jsonrpc": "^8.2.1", "zod": "^3.25.76" }, "peerDependencies": { "@ai-sdk/provider": ">=2.0.0", "@ai-sdk/provider-utils": ">=3.0.0" } }, "sha512-EiAipDMa4Ngsxp4MMaua5YHWsHhc9kGXKmBxulJg1Gueb+5IZmMwxaVtgWTGWZITxC3tzKEeRt/3U4McE2vTIA=="], + "gitlab-ai-provider": ["gitlab-ai-provider@5.3.3", "", { "dependencies": { "@anthropic-ai/sdk": "^0.71.0", "@anycable/core": "^0.9.2", "graphql-request": "^6.1.0", "isomorphic-ws": "^5.0.0", "openai": "^6.16.0", "socket.io-client": "^4.8.1", "vscode-jsonrpc": "^8.2.1", "zod": "^3.25.76" }, "peerDependencies": { "@ai-sdk/provider": ">=2.0.0", "@ai-sdk/provider-utils": ">=3.0.0" } }, "sha512-k0kRUoAhDvoRC28hQW4sPp+A3cfpT5c/oL9Ng10S0oBiF2Tci1AtsX1iclJM5Os8C1nIIAXBW8LMr0GY7rwcGA=="], "glob": ["glob@13.0.5", "", { "dependencies": { "minimatch": "^10.2.1", "minipass": "^7.1.2", "path-scurry": "^2.0.0" } }, "sha512-BzXxZg24Ibra1pbQ/zE7Kys4Ua1ks7Bn6pKLkVPZ9FZe4JQS6/Q7ef3LG1H+k7lUf5l4T3PLSyYyYJVYUvfgTw=="], diff --git a/github/index.ts b/github/index.ts index 1a0a992622..6bfa964623 100644 --- a/github/index.ts +++ b/github/index.ts @@ -496,7 +496,6 @@ async function subscribeSessionEvents() { const TOOL: Record = { todowrite: ["Todo", "\x1b[33m\x1b[1m"], - todoread: ["Todo", "\x1b[33m\x1b[1m"], bash: ["Bash", "\x1b[31m\x1b[1m"], edit: ["Edit", "\x1b[32m\x1b[1m"], glob: ["Glob", "\x1b[34m\x1b[1m"], diff --git a/nix/hashes.json b/nix/hashes.json index e84178a402..b6f0fed892 100644 --- a/nix/hashes.json +++ b/nix/hashes.json @@ -1,8 +1,8 @@ { "nodeModules": { - "x86_64-linux": "sha256-MmN2+NfHeLPDClpLPOlCAZTmwI94M6XgNAqXrW5Ls4I=", - "aarch64-linux": "sha256-whVIlmDvoMmEMUY2Yxx2vAmFDuKQic6ChY1V+9gLd84=", - "aarch64-darwin": "sha256-TulGiC24w3usk26hKr3PyccatvIfmAlHgEJaOTUf3pQ=", - "x86_64-darwin": "sha256-T8NWm0bBybJKThRdp/jQdxilv1Ec9SF1iVT3udSoZOg=" + "x86_64-linux": "sha256-0VwVhbOtK1r16cVSZcHaI/8fUPc6aYQiUnh7Q3bSHqs=", + "aarch64-linux": "sha256-z5b234MIS0QqDYLopyaT2hd9CAtEbcSo28y0eMfPsBs=", + "aarch64-darwin": "sha256-sn16mtZIhF9OSBrfAHpDCJO6Nt19mdoxvYAOnwWgwDk=", + "x86_64-darwin": "sha256-FaZpwGuWzfypA28ct86xAnW2RuFFUiXjPkr5wVTLN/o=" } } diff --git a/packages/app/src/context/global-sync/bootstrap.ts b/packages/app/src/context/global-sync/bootstrap.ts index 47be3abcb3..4790011a53 100644 --- a/packages/app/src/context/global-sync/bootstrap.ts +++ b/packages/app/src/context/global-sync/bootstrap.ts @@ -15,7 +15,7 @@ import { retry } from "@opencode-ai/util/retry" import { batch } from "solid-js" import { reconcile, type SetStoreFunction, type Store } from "solid-js/store" import type { State, VcsCache } from "./types" -import { cmp, normalizeProviderList } from "./utils" +import { cmp, normalizeAgentList, normalizeProviderList } from "./utils" import { formatServerError } from "@/utils/server-errors" type GlobalStore = { @@ -174,7 +174,7 @@ export async function bootstrapDirectory(input: { seededProject ? Promise.resolve() : retry(() => input.sdk.project.current()).then((x) => input.setStore("project", x.data!.id)), - () => retry(() => input.sdk.app.agents().then((x) => input.setStore("agent", x.data ?? []))), + () => retry(() => input.sdk.app.agents().then((x) => input.setStore("agent", normalizeAgentList(x.data)))), () => retry(() => input.sdk.config.get().then((x) => input.setStore("config", x.data!))), () => retry(() => @@ -190,7 +190,7 @@ export async function bootstrapDirectory(input: { input.sdk.vcs.get().then((x) => { const next = x.data ?? input.store.vcs input.setStore("vcs", next) - if (next?.branch) input.vcsCache.setStore("value", next) + if (next) input.vcsCache.setStore("value", next) }), ), () => retry(() => input.sdk.command.list().then((x) => input.setStore("command", x.data ?? []))), diff --git a/packages/app/src/context/global-sync/event-reducer.test.ts b/packages/app/src/context/global-sync/event-reducer.test.ts index cf2da135cb..892129788e 100644 --- a/packages/app/src/context/global-sync/event-reducer.test.ts +++ b/packages/app/src/context/global-sync/event-reducer.test.ts @@ -494,8 +494,10 @@ describe("applyDirectoryEvent", () => { }) test("updates vcs branch in store and cache", () => { - const [store, setStore] = createStore(baseState()) - const [cacheStore, setCacheStore] = createStore({ value: undefined as State["vcs"] }) + const [store, setStore] = createStore(baseState({ vcs: { branch: "main", default_branch: "main" } })) + const [cacheStore, setCacheStore] = createStore({ + value: { branch: "main", default_branch: "main" } as State["vcs"], + }) applyDirectoryEvent({ event: { type: "vcs.branch.updated", properties: { branch: "feature/test" } }, @@ -511,8 +513,8 @@ describe("applyDirectoryEvent", () => { }, }) - expect(store.vcs).toEqual({ branch: "feature/test" }) - expect(cacheStore.value).toEqual({ branch: "feature/test" }) + expect(store.vcs).toEqual({ branch: "feature/test", default_branch: "main" }) + expect(cacheStore.value).toEqual({ branch: "feature/test", default_branch: "main" }) }) test("routes disposal and lsp events to side-effect handlers", () => { diff --git a/packages/app/src/context/global-sync/event-reducer.ts b/packages/app/src/context/global-sync/event-reducer.ts index 5d8b7c4e3d..4af6365535 100644 --- a/packages/app/src/context/global-sync/event-reducer.ts +++ b/packages/app/src/context/global-sync/event-reducer.ts @@ -271,9 +271,9 @@ export function applyDirectoryEvent(input: { break } case "vcs.branch.updated": { - const props = event.properties as { branch: string } + const props = event.properties as { branch?: string } if (input.store.vcs?.branch === props.branch) break - const next = { branch: props.branch } + const next = { ...input.store.vcs, branch: props.branch } input.setStore("vcs", next) if (input.vcsCache) input.vcsCache.setStore("value", next) break diff --git a/packages/app/src/context/global-sync/utils.test.ts b/packages/app/src/context/global-sync/utils.test.ts new file mode 100644 index 0000000000..6d44ac9a89 --- /dev/null +++ b/packages/app/src/context/global-sync/utils.test.ts @@ -0,0 +1,35 @@ +import { describe, expect, test } from "bun:test" +import type { Agent } from "@opencode-ai/sdk/v2/client" +import { normalizeAgentList } from "./utils" + +const agent = (name = "build") => + ({ + name, + mode: "primary", + permission: {}, + options: {}, + }) as Agent + +describe("normalizeAgentList", () => { + test("keeps array payloads", () => { + expect(normalizeAgentList([agent("build"), agent("docs")])).toEqual([agent("build"), agent("docs")]) + }) + + test("wraps a single agent payload", () => { + expect(normalizeAgentList(agent("docs"))).toEqual([agent("docs")]) + }) + + test("extracts agents from keyed objects", () => { + expect( + normalizeAgentList({ + build: agent("build"), + docs: agent("docs"), + }), + ).toEqual([agent("build"), agent("docs")]) + }) + + test("drops invalid payloads", () => { + expect(normalizeAgentList({ name: "AbortError" })).toEqual([]) + expect(normalizeAgentList([{ name: "build" }, agent("docs")])).toEqual([agent("docs")]) + }) +}) diff --git a/packages/app/src/context/global-sync/utils.ts b/packages/app/src/context/global-sync/utils.ts index 6b78134a61..cac58f3174 100644 --- a/packages/app/src/context/global-sync/utils.ts +++ b/packages/app/src/context/global-sync/utils.ts @@ -1,7 +1,21 @@ -import type { Project, ProviderListResponse } from "@opencode-ai/sdk/v2/client" +import type { Agent, Project, ProviderListResponse } from "@opencode-ai/sdk/v2/client" export const cmp = (a: string, b: string) => (a < b ? -1 : a > b ? 1 : 0) +function isAgent(input: unknown): input is Agent { + if (!input || typeof input !== "object") return false + const item = input as { name?: unknown; mode?: unknown } + if (typeof item.name !== "string") return false + return item.mode === "subagent" || item.mode === "primary" || item.mode === "all" +} + +export function normalizeAgentList(input: unknown): Agent[] { + if (Array.isArray(input)) return input.filter(isAgent) + if (isAgent(input)) return [input] + if (!input || typeof input !== "object") return [] + return Object.values(input).filter(isAgent) +} + export function normalizeProviderList(input: ProviderListResponse): ProviderListResponse { return { ...input, diff --git a/packages/app/src/i18n/ar.ts b/packages/app/src/i18n/ar.ts index c8f58c796e..6e40e03007 100644 --- a/packages/app/src/i18n/ar.ts +++ b/packages/app/src/i18n/ar.ts @@ -722,8 +722,6 @@ export const dict = { "settings.permissions.tool.skill.description": "تحميل مهارة بالاسم", "settings.permissions.tool.lsp.title": "LSP", "settings.permissions.tool.lsp.description": "تشغيل استعلامات خادم اللغة", - "settings.permissions.tool.todoread.title": "قراءة المهام", - "settings.permissions.tool.todoread.description": "قراءة قائمة المهام", "settings.permissions.tool.todowrite.title": "كتابة المهام", "settings.permissions.tool.todowrite.description": "تحديث قائمة المهام", "settings.permissions.tool.webfetch.title": "جلب الويب", diff --git a/packages/app/src/i18n/br.ts b/packages/app/src/i18n/br.ts index 3112e91bbe..3c7ef9d828 100644 --- a/packages/app/src/i18n/br.ts +++ b/packages/app/src/i18n/br.ts @@ -732,8 +732,6 @@ export const dict = { "settings.permissions.tool.skill.description": "Carregar uma habilidade por nome", "settings.permissions.tool.lsp.title": "LSP", "settings.permissions.tool.lsp.description": "Executar consultas de servidor de linguagem", - "settings.permissions.tool.todoread.title": "Ler Tarefas", - "settings.permissions.tool.todoread.description": "Ler a lista de tarefas", "settings.permissions.tool.todowrite.title": "Escrever Tarefas", "settings.permissions.tool.todowrite.description": "Atualizar a lista de tarefas", "settings.permissions.tool.webfetch.title": "Buscar Web", diff --git a/packages/app/src/i18n/bs.ts b/packages/app/src/i18n/bs.ts index f2dbd8493c..15b73453be 100644 --- a/packages/app/src/i18n/bs.ts +++ b/packages/app/src/i18n/bs.ts @@ -806,8 +806,6 @@ export const dict = { "settings.permissions.tool.skill.description": "Učitaj vještinu po nazivu", "settings.permissions.tool.lsp.title": "LSP", "settings.permissions.tool.lsp.description": "Pokreni upite jezičnog servera", - "settings.permissions.tool.todoread.title": "Čitanje liste zadataka", - "settings.permissions.tool.todoread.description": "Čitanje liste zadataka", "settings.permissions.tool.todowrite.title": "Ažuriranje liste zadataka", "settings.permissions.tool.todowrite.description": "Ažuriraj listu zadataka", "settings.permissions.tool.webfetch.title": "Web preuzimanje", diff --git a/packages/app/src/i18n/da.ts b/packages/app/src/i18n/da.ts index e90e1071ad..55212faccd 100644 --- a/packages/app/src/i18n/da.ts +++ b/packages/app/src/i18n/da.ts @@ -800,8 +800,6 @@ export const dict = { "settings.permissions.tool.skill.description": "Indlæs en færdighed efter navn", "settings.permissions.tool.lsp.title": "LSP", "settings.permissions.tool.lsp.description": "Kør sprogserverforespørgsler", - "settings.permissions.tool.todoread.title": "Læs To-do", - "settings.permissions.tool.todoread.description": "Læs to-do listen", "settings.permissions.tool.todowrite.title": "Skriv To-do", "settings.permissions.tool.todowrite.description": "Opdater to-do listen", "settings.permissions.tool.webfetch.title": "Webhentning", diff --git a/packages/app/src/i18n/de.ts b/packages/app/src/i18n/de.ts index 69658b29e9..552375f572 100644 --- a/packages/app/src/i18n/de.ts +++ b/packages/app/src/i18n/de.ts @@ -743,8 +743,6 @@ export const dict = { "settings.permissions.tool.skill.description": "Eine Fähigkeit nach Namen laden", "settings.permissions.tool.lsp.title": "LSP", "settings.permissions.tool.lsp.description": "Language-Server-Abfragen ausführen", - "settings.permissions.tool.todoread.title": "Todo lesen", - "settings.permissions.tool.todoread.description": "Die Todo-Liste lesen", "settings.permissions.tool.todowrite.title": "Todo schreiben", "settings.permissions.tool.todowrite.description": "Die Todo-Liste aktualisieren", "settings.permissions.tool.webfetch.title": "Web-Abruf", diff --git a/packages/app/src/i18n/en.ts b/packages/app/src/i18n/en.ts index 579b740d3a..bdf97ec0fe 100644 --- a/packages/app/src/i18n/en.ts +++ b/packages/app/src/i18n/en.ts @@ -535,6 +535,8 @@ export const dict = { "session.review.noVcs.createGit.action": "Create Git repository", "session.review.noSnapshot": "Snapshot tracking is disabled in config, so session changes are unavailable", "session.review.noChanges": "No changes", + "session.review.noUncommittedChanges": "No uncommitted changes yet", + "session.review.noBranchChanges": "No branch changes yet", "session.files.selectToOpen": "Select a file to open", "session.files.all": "All files", @@ -900,8 +902,6 @@ export const dict = { "settings.permissions.tool.skill.description": "Load a skill by name", "settings.permissions.tool.lsp.title": "LSP", "settings.permissions.tool.lsp.description": "Run language server queries", - "settings.permissions.tool.todoread.title": "Todo Read", - "settings.permissions.tool.todoread.description": "Read the todo list", "settings.permissions.tool.todowrite.title": "Todo Write", "settings.permissions.tool.todowrite.description": "Update the todo list", "settings.permissions.tool.webfetch.title": "Web Fetch", diff --git a/packages/app/src/i18n/es.ts b/packages/app/src/i18n/es.ts index 9e36e4de6d..31fd71c044 100644 --- a/packages/app/src/i18n/es.ts +++ b/packages/app/src/i18n/es.ts @@ -813,8 +813,6 @@ export const dict = { "settings.permissions.tool.skill.description": "Cargar una habilidad por nombre", "settings.permissions.tool.lsp.title": "LSP", "settings.permissions.tool.lsp.description": "Ejecutar consultas de servidor de lenguaje", - "settings.permissions.tool.todoread.title": "Leer Todo", - "settings.permissions.tool.todoread.description": "Leer la lista de tareas", "settings.permissions.tool.todowrite.title": "Escribir Todo", "settings.permissions.tool.todowrite.description": "Actualizar la lista de tareas", "settings.permissions.tool.webfetch.title": "Web Fetch", diff --git a/packages/app/src/i18n/fr.ts b/packages/app/src/i18n/fr.ts index f53b3882c6..e19282a76e 100644 --- a/packages/app/src/i18n/fr.ts +++ b/packages/app/src/i18n/fr.ts @@ -741,8 +741,6 @@ export const dict = { "settings.permissions.tool.skill.description": "Charger une compétence par son nom", "settings.permissions.tool.lsp.title": "LSP", "settings.permissions.tool.lsp.description": "Exécuter des requêtes de serveur de langage", - "settings.permissions.tool.todoread.title": "Lire Todo", - "settings.permissions.tool.todoread.description": "Lire la liste de tâches", "settings.permissions.tool.todowrite.title": "Écrire Todo", "settings.permissions.tool.todowrite.description": "Mettre à jour la liste de tâches", "settings.permissions.tool.webfetch.title": "Récupération Web", diff --git a/packages/app/src/i18n/ja.ts b/packages/app/src/i18n/ja.ts index d66a7341d5..52e4ab6ed9 100644 --- a/packages/app/src/i18n/ja.ts +++ b/packages/app/src/i18n/ja.ts @@ -727,8 +727,6 @@ export const dict = { "settings.permissions.tool.skill.description": "名前によるスキルの読み込み", "settings.permissions.tool.lsp.title": "LSP", "settings.permissions.tool.lsp.description": "言語サーバークエリの実行", - "settings.permissions.tool.todoread.title": "Todo読み込み", - "settings.permissions.tool.todoread.description": "Todoリストの読み込み", "settings.permissions.tool.todowrite.title": "Todo書き込み", "settings.permissions.tool.todowrite.description": "Todoリストの更新", "settings.permissions.tool.webfetch.title": "Web取得", diff --git a/packages/app/src/i18n/ko.ts b/packages/app/src/i18n/ko.ts index d534c27e8f..8d9efabb63 100644 --- a/packages/app/src/i18n/ko.ts +++ b/packages/app/src/i18n/ko.ts @@ -726,8 +726,6 @@ export const dict = { "settings.permissions.tool.skill.description": "이름으로 기술 로드", "settings.permissions.tool.lsp.title": "LSP", "settings.permissions.tool.lsp.description": "언어 서버 쿼리 실행", - "settings.permissions.tool.todoread.title": "할 일 읽기", - "settings.permissions.tool.todoread.description": "할 일 목록 읽기", "settings.permissions.tool.todowrite.title": "할 일 쓰기", "settings.permissions.tool.todowrite.description": "할 일 목록 업데이트", "settings.permissions.tool.webfetch.title": "웹 가져오기", diff --git a/packages/app/src/i18n/no.ts b/packages/app/src/i18n/no.ts index c23d0a2792..7342ec083d 100644 --- a/packages/app/src/i18n/no.ts +++ b/packages/app/src/i18n/no.ts @@ -807,8 +807,6 @@ export const dict = { "settings.permissions.tool.skill.description": "Last en ferdighet etter navn", "settings.permissions.tool.lsp.title": "LSP", "settings.permissions.tool.lsp.description": "Kjør språkserverforespørsler", - "settings.permissions.tool.todoread.title": "Les gjøremål", - "settings.permissions.tool.todoread.description": "Les gjøremålslisten", "settings.permissions.tool.todowrite.title": "Skriv gjøremål", "settings.permissions.tool.todowrite.description": "Oppdater gjøremålslisten", "settings.permissions.tool.webfetch.title": "Webhenting", diff --git a/packages/app/src/i18n/pl.ts b/packages/app/src/i18n/pl.ts index dac847b217..d3a3d62662 100644 --- a/packages/app/src/i18n/pl.ts +++ b/packages/app/src/i18n/pl.ts @@ -729,8 +729,6 @@ export const dict = { "settings.permissions.tool.skill.description": "Ładowanie umiejętności według nazwy", "settings.permissions.tool.lsp.title": "LSP", "settings.permissions.tool.lsp.description": "Uruchamianie zapytań serwera językowego", - "settings.permissions.tool.todoread.title": "Odczyt Todo", - "settings.permissions.tool.todoread.description": "Odczyt listy zadań", "settings.permissions.tool.todowrite.title": "Zapis Todo", "settings.permissions.tool.todowrite.description": "Aktualizacja listy zadań", "settings.permissions.tool.webfetch.title": "Pobieranie z sieci", diff --git a/packages/app/src/i18n/ru.ts b/packages/app/src/i18n/ru.ts index 684d5deecd..ac02f8dbeb 100644 --- a/packages/app/src/i18n/ru.ts +++ b/packages/app/src/i18n/ru.ts @@ -808,8 +808,6 @@ export const dict = { "settings.permissions.tool.skill.description": "Загрузка навыка по имени", "settings.permissions.tool.lsp.title": "LSP", "settings.permissions.tool.lsp.description": "Запросы к языковому серверу", - "settings.permissions.tool.todoread.title": "Todo Read", - "settings.permissions.tool.todoread.description": "Чтение списка задач", "settings.permissions.tool.todowrite.title": "Todo Write", "settings.permissions.tool.todowrite.description": "Обновление списка задач", "settings.permissions.tool.webfetch.title": "Web Fetch", diff --git a/packages/app/src/i18n/th.ts b/packages/app/src/i18n/th.ts index 80f0da94ec..8d146123f2 100644 --- a/packages/app/src/i18n/th.ts +++ b/packages/app/src/i18n/th.ts @@ -796,8 +796,6 @@ export const dict = { "settings.permissions.tool.skill.description": "โหลดทักษะตามชื่อ", "settings.permissions.tool.lsp.title": "LSP", "settings.permissions.tool.lsp.description": "เรียกใช้การสืบค้นเซิร์ฟเวอร์ภาษา", - "settings.permissions.tool.todoread.title": "อ่านรายการงาน", - "settings.permissions.tool.todoread.description": "อ่านรายการงาน", "settings.permissions.tool.todowrite.title": "เขียนรายการงาน", "settings.permissions.tool.todowrite.description": "อัปเดตรายการงาน", "settings.permissions.tool.webfetch.title": "ดึงข้อมูลจากเว็บ", diff --git a/packages/app/src/i18n/tr.ts b/packages/app/src/i18n/tr.ts index 9041e0dd07..fb3c0c26f6 100644 --- a/packages/app/src/i18n/tr.ts +++ b/packages/app/src/i18n/tr.ts @@ -816,8 +816,6 @@ export const dict = { "settings.permissions.tool.skill.description": "Ada göre bir beceri yükle", "settings.permissions.tool.lsp.title": "LSP", "settings.permissions.tool.lsp.description": "Dil sunucusu sorguları çalıştır", - "settings.permissions.tool.todoread.title": "Görev Oku", - "settings.permissions.tool.todoread.description": "Görev listesini oku", "settings.permissions.tool.todowrite.title": "Görev Yaz", "settings.permissions.tool.todowrite.description": "Görev listesini güncelle", "settings.permissions.tool.webfetch.title": "Web Getir", diff --git a/packages/app/src/i18n/zh.ts b/packages/app/src/i18n/zh.ts index cf64ca9b2c..2a7ababb2b 100644 --- a/packages/app/src/i18n/zh.ts +++ b/packages/app/src/i18n/zh.ts @@ -795,8 +795,6 @@ export const dict = { "settings.permissions.tool.skill.description": "按名称加载技能", "settings.permissions.tool.lsp.title": "LSP", "settings.permissions.tool.lsp.description": "运行语言服务器查询", - "settings.permissions.tool.todoread.title": "读取待办", - "settings.permissions.tool.todoread.description": "读取待办列表", "settings.permissions.tool.todowrite.title": "更新待办", "settings.permissions.tool.todowrite.description": "更新待办列表", "settings.permissions.tool.webfetch.title": "网页获取", diff --git a/packages/app/src/i18n/zht.ts b/packages/app/src/i18n/zht.ts index 02c00d17a2..8ee29733ef 100644 --- a/packages/app/src/i18n/zht.ts +++ b/packages/app/src/i18n/zht.ts @@ -790,8 +790,6 @@ export const dict = { "settings.permissions.tool.skill.description": "按名稱載入技能", "settings.permissions.tool.lsp.title": "LSP", "settings.permissions.tool.lsp.description": "執行語言伺服器查詢", - "settings.permissions.tool.todoread.title": "讀取待辦", - "settings.permissions.tool.todoread.description": "讀取待辦清單", "settings.permissions.tool.todowrite.title": "更新待辦", "settings.permissions.tool.todowrite.description": "更新待辦清單", "settings.permissions.tool.webfetch.title": "Web Fetch", diff --git a/packages/app/src/pages/session.tsx b/packages/app/src/pages/session.tsx index 2d3e31355a..8c32a7237f 100644 --- a/packages/app/src/pages/session.tsx +++ b/packages/app/src/pages/session.tsx @@ -1,4 +1,4 @@ -import type { Project, UserMessage } from "@opencode-ai/sdk/v2" +import type { FileDiff, Project, UserMessage } from "@opencode-ai/sdk/v2" import { useDialog } from "@opencode-ai/ui/context/dialog" import { useMutation } from "@tanstack/solid-query" import { @@ -64,6 +64,9 @@ import { formatServerError } from "@/utils/server-errors" const emptyUserMessages: UserMessage[] = [] const emptyFollowups: (FollowupDraft & { id: string })[] = [] +type ChangeMode = "git" | "branch" | "session" | "turn" +type VcsMode = "git" | "branch" + type SessionHistoryWindowInput = { sessionID: () => string | undefined messagesReady: () => boolean @@ -424,15 +427,16 @@ export default function Page() { const info = createMemo(() => (params.id ? sync.session.get(params.id) : undefined)) const diffs = createMemo(() => (params.id ? (sync.data.session_diff[params.id] ?? []) : [])) - const reviewCount = createMemo(() => Math.max(info()?.summary?.files ?? 0, diffs().length)) - const hasReview = createMemo(() => reviewCount() > 0) + const sessionCount = createMemo(() => Math.max(info()?.summary?.files ?? 0, diffs().length)) + const hasSessionReview = createMemo(() => sessionCount() > 0) + const canReview = createMemo(() => !!params.id) const reviewTab = createMemo(() => isDesktop()) const tabState = createSessionTabs({ tabs, pathFromTab: file.pathFromTab, normalizeTab, review: reviewTab, - hasReview, + hasReview: canReview, }) const contextOpen = tabState.contextOpen const openedTabs = tabState.openedTabs @@ -455,6 +459,12 @@ export default function Page() { if (!id) return false return sync.session.history.loading(id) }) + const diffsReady = createMemo(() => { + const id = params.id + if (!id) return true + if (!hasSessionReview()) return true + return sync.data.session_diff[id] !== undefined + }) const userMessages = createMemo( () => messages().filter((m) => m.role === "user") as UserMessage[], @@ -508,11 +518,22 @@ export default function Page() { const [store, setStore] = createStore({ messageId: undefined as string | undefined, mobileTab: "session" as "session" | "changes", - changes: "session" as "session" | "turn", + changes: "git" as ChangeMode, newSessionWorktree: "main", deferRender: false, }) + const [vcs, setVcs] = createStore({ + diff: { + git: [] as FileDiff[], + branch: [] as FileDiff[], + }, + ready: { + git: false, + branch: false, + }, + }) + const [followup, setFollowup] = createStore({ items: {} as Record, failed: {} as Record, @@ -539,6 +560,68 @@ export default function Page() { let refreshTimer: number | undefined let diffFrame: number | undefined let diffTimer: number | undefined + const vcsTask = new Map>() + const vcsRun = new Map() + + const bumpVcs = (mode: VcsMode) => { + const next = (vcsRun.get(mode) ?? 0) + 1 + vcsRun.set(mode, next) + return next + } + + const resetVcs = (mode?: VcsMode) => { + const list = mode ? [mode] : (["git", "branch"] as const) + list.forEach((item) => { + bumpVcs(item) + vcsTask.delete(item) + setVcs("diff", item, []) + setVcs("ready", item, false) + }) + } + + const loadVcs = (mode: VcsMode, force = false) => { + if (sync.project?.vcs !== "git") return Promise.resolve() + if (!force && vcs.ready[mode]) return Promise.resolve() + + if (force) { + if (vcsTask.has(mode)) bumpVcs(mode) + vcsTask.delete(mode) + setVcs("ready", mode, false) + } + + const current = vcsTask.get(mode) + if (current) return current + + const run = bumpVcs(mode) + + const task = sdk.client.vcs + .diff({ mode }) + .then((result) => { + if (vcsRun.get(mode) !== run) return + setVcs("diff", mode, result.data ?? []) + setVcs("ready", mode, true) + }) + .catch((error) => { + if (vcsRun.get(mode) !== run) return + console.debug("[session-review] failed to load vcs diff", { mode, error }) + setVcs("diff", mode, []) + setVcs("ready", mode, true) + }) + .finally(() => { + if (vcsTask.get(mode) === task) vcsTask.delete(mode) + }) + + vcsTask.set(mode, task) + return task + } + + const refreshVcs = () => { + resetVcs() + const mode = untrack(vcsMode) + if (!mode) return + if (!untrack(wantsReview)) return + void loadVcs(mode, true) + } createComputed((prev) => { const open = desktopReviewOpen() @@ -554,7 +637,42 @@ export default function Page() { }, desktopReviewOpen()) const turnDiffs = createMemo(() => lastUserMessage()?.summary?.diffs ?? []) - const reviewDiffs = createMemo(() => (store.changes === "session" ? diffs() : turnDiffs())) + const changesOptions = createMemo(() => { + const list: ChangeMode[] = [] + if (sync.project?.vcs === "git") list.push("git") + if ( + sync.project?.vcs === "git" && + sync.data.vcs?.branch && + sync.data.vcs?.default_branch && + sync.data.vcs.branch !== sync.data.vcs.default_branch + ) { + list.push("branch") + } + list.push("session", "turn") + return list + }) + const vcsMode = createMemo(() => { + if (store.changes === "git" || store.changes === "branch") return store.changes + }) + const reviewDiffs = createMemo(() => { + if (store.changes === "git") return vcs.diff.git + if (store.changes === "branch") return vcs.diff.branch + if (store.changes === "session") return diffs() + return turnDiffs() + }) + const reviewCount = createMemo(() => { + if (store.changes === "git") return vcs.diff.git.length + if (store.changes === "branch") return vcs.diff.branch.length + if (store.changes === "session") return sessionCount() + return turnDiffs().length + }) + const hasReview = createMemo(() => reviewCount() > 0) + const reviewReady = createMemo(() => { + if (store.changes === "git") return vcs.ready.git + if (store.changes === "branch") return vcs.ready.branch + if (store.changes === "session") return !hasSessionReview() || diffsReady() + return true + }) const newSessionWorktree = createMemo(() => { if (store.newSessionWorktree === "create") return "create" @@ -620,13 +738,7 @@ export default function Page() { scrollToMessage(msgs[targetIndex], "auto") } - const diffsReady = createMemo(() => { - const id = params.id - if (!id) return true - if (!hasReview()) return true - return sync.data.session_diff[id] !== undefined - }) - const reviewEmptyKey = createMemo(() => { + const sessionEmptyKey = createMemo(() => { const project = sync.project if (project && !project.vcs) return "session.review.noVcs" if (sync.data.config.snapshot === false) return "session.review.noSnapshot" @@ -748,13 +860,46 @@ export default function Page() { sessionKey, () => { setStore("messageId", undefined) - setStore("changes", "session") + setStore("changes", "git") setUi("pendingMessage", undefined) }, { defer: true }, ), ) + createEffect( + on( + () => sdk.directory, + () => { + resetVcs() + }, + { defer: true }, + ), + ) + + createEffect( + on( + () => [sync.data.vcs?.branch, sync.data.vcs?.default_branch] as const, + (next, prev) => { + if (prev === undefined || same(next, prev)) return + refreshVcs() + }, + { defer: true }, + ), + ) + + const stopVcs = sdk.event.listen((evt) => { + if (evt.details.type !== "file.watcher.updated") return + const props = + typeof evt.details.properties === "object" && evt.details.properties + ? (evt.details.properties as Record) + : undefined + const file = typeof props?.file === "string" ? props.file : undefined + if (!file || file.startsWith(".git/")) return + refreshVcs() + }) + onCleanup(stopVcs) + createEffect( on( () => params.dir, @@ -877,6 +1022,40 @@ export default function Page() { } const mobileChanges = createMemo(() => !isDesktop() && store.mobileTab === "changes") + const wantsReview = createMemo(() => + isDesktop() + ? desktopFileTreeOpen() || (desktopReviewOpen() && activeTab() === "review") + : store.mobileTab === "changes", + ) + + createEffect(() => { + const list = changesOptions() + if (list.includes(store.changes)) return + const next = list[0] + if (!next) return + setStore("changes", next) + }) + + createEffect(() => { + const mode = vcsMode() + if (!mode) return + if (!wantsReview()) return + void loadVcs(mode) + }) + + createEffect( + on( + () => sync.data.session_status[params.id ?? ""]?.type, + (next, prev) => { + const mode = vcsMode() + if (!mode) return + if (!wantsReview()) return + if (next !== "idle" || prev === undefined || prev === "idle") return + void loadVcs(mode, true) + }, + { defer: true }, + ), + ) const fileTreeTab = () => layout.fileTree.tab() const setFileTreeTab = (value: "changes" | "all") => layout.fileTree.setTab(value) @@ -923,21 +1102,23 @@ export default function Page() { loadFile: file.load, }) - const changesOptions = ["session", "turn"] as const - const changesOptionsList = [...changesOptions] - const changesTitle = () => { - if (!hasReview()) { + if (!canReview()) { return null } + const label = (option: ChangeMode) => { + if (option === "git") return language.t("ui.sessionReview.title.git") + if (option === "branch") return language.t("ui.sessionReview.title.branch") + if (option === "session") return language.t("ui.sessionReview.title") + return language.t("ui.sessionReview.title.lastTurn") + } + return ( + + +
+ {loaded()} • {session().title || session().id} • {state.messages.length} message + {state.messages.length === 1 ? "" : "s"} +
+
+ +
+ {issue()} +
+
+ {/* ---- User messages ---- */}
User messages
@@ -1407,6 +1596,19 @@ function Playground() { )}
+
+ +
{/* ---- Text and reasoning blocks ---- */}
Text and reasoning blocks
@@ -1716,7 +1918,7 @@ function Playground() { "font-size": "14px", }} > - Click a generator button to add messages + Click a generator button or import a session } > @@ -1729,7 +1931,7 @@ function Playground() { {(msg) => (
= { "ui.sessionReview.title": "Session changes", + "ui.sessionReview.title.git": "Git changes", + "ui.sessionReview.title.branch": "Branch changes", "ui.sessionReview.title.lastTurn": "Last turn changes", "ui.sessionReview.diffStyle.unified": "Unified", "ui.sessionReview.diffStyle.split": "Split", diff --git a/packages/web/src/components/Share.tsx b/packages/web/src/components/Share.tsx index de27ccd533..de12baede0 100644 --- a/packages/web/src/components/Share.tsx +++ b/packages/web/src/components/Share.tsx @@ -355,7 +355,6 @@ export default function Share(props: { if (x.type === "patch") return false if (x.type === "step-finish") return false if (x.type === "text" && x.synthetic === true) return false - if (x.type === "tool" && x.tool === "todoread") return false if (x.type === "text" && !x.text) return false if (x.type === "tool" && (x.state.status === "pending" || x.state.status === "running")) return false diff --git a/packages/web/src/components/share/part.tsx b/packages/web/src/components/share/part.tsx index 45bd97fe33..c7d177df7d 100644 --- a/packages/web/src/components/share/part.tsx +++ b/packages/web/src/components/share/part.tsx @@ -90,9 +90,6 @@ export function Part(props: PartProps) { - - - diff --git a/packages/web/src/content/docs/ar/modes.mdx b/packages/web/src/content/docs/ar/modes.mdx index f4889819aa..ac57b98e96 100644 --- a/packages/web/src/content/docs/ar/modes.mdx +++ b/packages/web/src/content/docs/ar/modes.mdx @@ -236,7 +236,6 @@ Provide constructive feedback without making direct changes. | `list` | سرد محتويات الدليل | | `patch` | تطبيق تصحيحات على الملفات | | `todowrite` | إدارة قوائم المهام | -| `todoread` | قراءة قوائم المهام | | `webfetch` | جلب محتوى الويب | --- diff --git a/packages/web/src/content/docs/ar/permissions.mdx b/packages/web/src/content/docs/ar/permissions.mdx index ee22c951d4..4391514b43 100644 --- a/packages/web/src/content/docs/ar/permissions.mdx +++ b/packages/web/src/content/docs/ar/permissions.mdx @@ -138,7 +138,6 @@ description: تحكّم في الإجراءات التي تتطلب موافقة - `task` — تشغيل وكلاء فرعيين (يطابق نوع الوكيل الفرعي) - `skill` — تحميل مهارة (يطابق اسم المهارة) - `lsp` — تشغيل استعلامات LSP (حاليًا دون قواعد دقيقة) -- `todoread`, `todowrite` — قراءة/تحديث قائمة المهام - `webfetch` — جلب عنوان URL (يطابق الـ URL) - `websearch`, `codesearch` — بحث الويب/الكود (يطابق الاستعلام) - `external_directory` — يُفعَّل عندما تلمس أداة مسارات خارج دليل عمل المشروع diff --git a/packages/web/src/content/docs/ar/tools.mdx b/packages/web/src/content/docs/ar/tools.mdx index fde4403569..d820778b40 100644 --- a/packages/web/src/content/docs/ar/tools.mdx +++ b/packages/web/src/content/docs/ar/tools.mdx @@ -248,27 +248,6 @@ description: إدارة الأدوات التي يمكن لـ LLM استخدام --- -### todoread - -اقرأ قوائم المهام الموجودة. - -```json title="opencode.json" {4} -{ - "$schema": "https://opencode.ai/config.json", - "permission": { - "todoread": "allow" - } -} -``` - -تقرأ هذه الأداة الحالة الحالية لقائمة المهام. يستخدمها LLM لتتبع المهام المعلقة أو المكتملة. - -:::note -هذه الأداة معطلة للوكلاء الفرعيين افتراضيا، لكن يمكنك تفعيلها يدويا. [اعرف المزيد](/docs/agents/#permissions) -::: - ---- - ### webfetch اجلب محتوى الويب. diff --git a/packages/web/src/content/docs/bs/modes.mdx b/packages/web/src/content/docs/bs/modes.mdx index 9cff5d5840..6bf4bd27ca 100644 --- a/packages/web/src/content/docs/bs/modes.mdx +++ b/packages/web/src/content/docs/bs/modes.mdx @@ -222,7 +222,6 @@ Ovdje su svi alati koji se mogu kontrolirati kroz konfiguraciju načina rada. | `list` | Lista sadržaja direktorija | | `patch` | Primijenite zakrpe na datoteke | | `todowrite` | Upravljanje listama zadataka | -| `todoread` | Pročitajte liste obaveza | | `webfetch` | Dohvati web sadržaj | --- diff --git a/packages/web/src/content/docs/bs/permissions.mdx b/packages/web/src/content/docs/bs/permissions.mdx index 8b2061ee0d..b6a194ad28 100644 --- a/packages/web/src/content/docs/bs/permissions.mdx +++ b/packages/web/src/content/docs/bs/permissions.mdx @@ -133,7 +133,6 @@ Dozvole OpenCode su označene imenom alata, plus nekoliko sigurnosnih mjera: - `task` — pokretanje subagenta (odgovara tipu podagenta) - `skill` — učitavanje vještine (odgovara nazivu vještine) - `lsp` — pokretanje LSP upita (trenutno negranularno) -- `todoread`, `todowrite` — čitanje/ažuriranje liste obaveza - `webfetch` — dohvaćanje URL-a (odgovara URL-u) - `websearch`, `codesearch` — pretraživanje weba/koda (odgovara upitu) - `external_directory` — pokreće se kada alat dodirne staze izvan radnog direktorija projekta diff --git a/packages/web/src/content/docs/bs/tools.mdx b/packages/web/src/content/docs/bs/tools.mdx index cef02ddda1..d0ae9a4460 100644 --- a/packages/web/src/content/docs/bs/tools.mdx +++ b/packages/web/src/content/docs/bs/tools.mdx @@ -248,27 +248,6 @@ Ovaj alat je po defaultu iskljucen za subagente, ali ga mozete rucno ukljuciti. --- -### todoread - -Cita postojece todo liste. - -```json title="opencode.json" {4} -{ - "$schema": "https://opencode.ai/config.json", - "permission": { - "todoread": "allow" - } -} -``` - -Cita trenutno stanje todo liste. LLM ga koristi da prati sta je na cekanju i sta je zavrseno. - -:::note -Ovaj alat je po defaultu iskljucen za subagente, ali ga mozete rucno ukljuciti. [Saznajte vise](/docs/agents/#permissions) -::: - ---- - ### webfetch Preuzima web sadrzaj. diff --git a/packages/web/src/content/docs/da/modes.mdx b/packages/web/src/content/docs/da/modes.mdx index 40a5303f20..34fb2b3595 100644 --- a/packages/web/src/content/docs/da/modes.mdx +++ b/packages/web/src/content/docs/da/modes.mdx @@ -236,7 +236,6 @@ Her er alle de værktøjer, der kan styres gennem tilstandskonfigurationen. | `list` | Liste biblioteksindhold | | `patch` | Anvend patches til filer | | `todowrite` | Administrer todo-lister | -| `todoread` | Læs todo-lister | | `webfetch` | Hent webindhold | --- diff --git a/packages/web/src/content/docs/da/permissions.mdx b/packages/web/src/content/docs/da/permissions.mdx index 72c839833f..72ebff606c 100644 --- a/packages/web/src/content/docs/da/permissions.mdx +++ b/packages/web/src/content/docs/da/permissions.mdx @@ -138,7 +138,6 @@ OpenCode tilladelser indtastes efter værktøjsnavn plus et par sikkerhedsafskæ - `task` — lancering af underagenter (matcher underagenttypen) - `skill` — indlæsning af en færdighed (matcher færdighedsnavnet) - `lsp` — kører LSP forespørgsler (i øjeblikket ikke-granulære) -- `todoread`, `todowrite` — reading/updating todo-listen - `webfetch` — henter en URL (matcher URL) - `websearch`, `codesearch` — web/code søgning (matcher forespørgslen) - `external_directory` — udløses, når et værktøj berører stier uden for projektets arbejdsmappe diff --git a/packages/web/src/content/docs/da/tools.mdx b/packages/web/src/content/docs/da/tools.mdx index 2b8b20b15c..a610e8cc39 100644 --- a/packages/web/src/content/docs/da/tools.mdx +++ b/packages/web/src/content/docs/da/tools.mdx @@ -248,27 +248,6 @@ Dette verktøyet er deaktivert for subagenter som standard, men du kan aktivere --- -### todoread - -Les eksisterende to-doslister. - -```json title="opencode.json" {4} -{ - "$schema": "https://opencode.ai/config.json", - "permission": { - "todoread": "allow" - } -} -``` - -Leser nuværende to-doslistestatus. Bruges av LLM for at spore hvilke oppgaver som venter eller er fullført. - -:::note -Dette verktøyet er deaktivert for subagenter som standard, men du kan aktivere det manuelt. [Finn ut mer](/docs/agents/#permissions) -::: - ---- - ### webfetch Hent nettinnhold. diff --git a/packages/web/src/content/docs/de/modes.mdx b/packages/web/src/content/docs/de/modes.mdx index b0d9393073..38a2e34b38 100644 --- a/packages/web/src/content/docs/de/modes.mdx +++ b/packages/web/src/content/docs/de/modes.mdx @@ -236,7 +236,6 @@ Hier sind alle Tools aufgeführt, die über den Konfigurationsmodus gesteuert we | `list` | Verzeichnisinhalte auflisten | | `patch` | Patches auf Dateien anwenden | | `todowrite` | Aufgabenlisten verwalten | -| `todoread` | Aufgabenlisten lesen | | `webfetch` | Webinhalte abrufen | --- diff --git a/packages/web/src/content/docs/de/permissions.mdx b/packages/web/src/content/docs/de/permissions.mdx index 0fb23831aa..ba7c802040 100644 --- a/packages/web/src/content/docs/de/permissions.mdx +++ b/packages/web/src/content/docs/de/permissions.mdx @@ -138,7 +138,6 @@ OpenCode-Berechtigungen basieren auf Tool-Namen sowie einigen Sicherheitsvorkehr - `task` – Subagenten starten (entspricht dem Subagententyp) - `skill` – Laden einer Fertigkeit (entspricht dem Fertigkeitsnamen) - `lsp` – Ausführen von LSP-Abfragen (derzeit nicht granular) -- `todoread`, `todowrite` – lesen/aktualisieren der Aufgabenliste - `webfetch` – Abrufen eines URL (entspricht dem URL) - `websearch`, `codesearch` – web/code Suche (entspricht der Abfrage) - `external_directory` – wird ausgelöst, wenn ein Tool Pfade außerhalb des Projektarbeitsverzeichnisses berührt diff --git a/packages/web/src/content/docs/de/tools.mdx b/packages/web/src/content/docs/de/tools.mdx index 0038f25184..b33163df85 100644 --- a/packages/web/src/content/docs/de/tools.mdx +++ b/packages/web/src/content/docs/de/tools.mdx @@ -255,27 +255,6 @@ Dieses Tool ist fuer Sub-Agenten standardmaessig deaktiviert, kann aber manuell --- -### todoread - -Liest existierende Todo-Listen. - -```json title="opencode.json" {4} -{ - "$schema": "https://opencode.ai/config.json", - "permission": { - "todoread": "allow" - } -} -``` - -Liest den aktuellen Status der Todo-Liste. Wird vom LLM genutzt, um offene oder erledigte Aufgaben zu verfolgen. - -:::note -Dieses Tool ist fuer Sub-Agenten standardmaessig deaktiviert, kann aber manuell aktiviert werden. [Mehr dazu](/docs/agents/#permissions) -::: - ---- - ### webfetch Ruft Webinhalte ab. diff --git a/packages/web/src/content/docs/es/modes.mdx b/packages/web/src/content/docs/es/modes.mdx index c57e8e6a95..cefc4a4e2d 100644 --- a/packages/web/src/content/docs/es/modes.mdx +++ b/packages/web/src/content/docs/es/modes.mdx @@ -236,7 +236,6 @@ Aquí están todas las herramientas que se pueden controlar a través del modo d | `list` | Listar el contenido del directorio | | `patch` | Aplicar parches a archivos | | `todowrite` | Administrar listas de tareas pendientes | -| `todoread` | Leer listas de tareas pendientes | | `webfetch` | Obtener contenido web | --- diff --git a/packages/web/src/content/docs/es/permissions.mdx b/packages/web/src/content/docs/es/permissions.mdx index 3ebe67fd2c..603b3bdb3f 100644 --- a/packages/web/src/content/docs/es/permissions.mdx +++ b/packages/web/src/content/docs/es/permissions.mdx @@ -138,7 +138,6 @@ Los permisos OpenCode están codificados por el nombre de la herramienta, ademá - `task` — lanzamiento de subagentes (coincide con el tipo de subagente) - `skill` — cargar una habilidad (coincide con el nombre de la habilidad) - `lsp`: ejecución de consultas LSP (actualmente no granulares) -- `todoread`, `todowrite` — leer/actualizar la lista de tareas pendientes - `webfetch` — obteniendo una URL (coincide con la URL) - `websearch`, `codesearch` — búsqueda web/código (coincide con la consulta) - `external_directory`: se activa cuando una herramienta toca rutas fuera del directorio de trabajo del proyecto. diff --git a/packages/web/src/content/docs/es/tools.mdx b/packages/web/src/content/docs/es/tools.mdx index 69f1340466..f3a050c03b 100644 --- a/packages/web/src/content/docs/es/tools.mdx +++ b/packages/web/src/content/docs/es/tools.mdx @@ -248,27 +248,6 @@ Esta herramienta está deshabilitada para los subagentes de forma predeterminada --- -### todoread - -Leer listas de tareas pendientes existentes. - -```json title="opencode.json" {4} -{ - "$schema": "https://opencode.ai/config.json", - "permission": { - "todoread": "allow" - } -} -``` - -Lee el estado actual de la lista de tareas pendientes. Utilizado por LLM para rastrear qué tareas están pendientes o completadas. - -:::note -Esta herramienta está deshabilitada para los subagentes de forma predeterminada, pero puede habilitarla manualmente. [Más información](/docs/agents/#permissions) -::: - ---- - ### webfetch Obtener contenido web. diff --git a/packages/web/src/content/docs/fr/modes.mdx b/packages/web/src/content/docs/fr/modes.mdx index 340ce83bd2..8c3ad62e41 100644 --- a/packages/web/src/content/docs/fr/modes.mdx +++ b/packages/web/src/content/docs/fr/modes.mdx @@ -234,7 +234,6 @@ Voici tous les outils pouvant être contrôlés via le mode config. | `list` | Liste du contenu du répertoire | | `patch` | Appliquer des correctifs aux fichiers | | `todowrite` | Gérer les listes de tâches | -| `todoread` | Lire les listes de tâches | | `webfetch` | Récupérer du contenu Web | --- diff --git a/packages/web/src/content/docs/fr/permissions.mdx b/packages/web/src/content/docs/fr/permissions.mdx index 1533987f8d..176fa34ad2 100644 --- a/packages/web/src/content/docs/fr/permissions.mdx +++ b/packages/web/src/content/docs/fr/permissions.mdx @@ -138,7 +138,6 @@ Les autorisations OpenCode sont classées par nom d'outil, plus quelques garde-f - `task` — lancement de sous-agents (correspond au type de sous-agent) - `skill` — chargement d'une compétence (correspond au nom de la compétence) - `lsp` — exécution de requêtes LSP (actuellement non granulaires) -- `todoread`, `todowrite` — lecture/mise à jour de la liste de tâches - `webfetch` — récupérer une URL (correspond à l'URL) - `websearch`, `codesearch` — recherche Web/code (correspond à la requête) - `external_directory` - déclenché lorsqu'un outil touche des chemins en dehors du répertoire de travail du projet diff --git a/packages/web/src/content/docs/fr/tools.mdx b/packages/web/src/content/docs/fr/tools.mdx index 20045e147c..62579c2bf8 100644 --- a/packages/web/src/content/docs/fr/tools.mdx +++ b/packages/web/src/content/docs/fr/tools.mdx @@ -248,27 +248,6 @@ Cet outil est désactivé par défaut pour les sous-agents, mais vous pouvez l'a --- -### todore - -Lisez les listes de tâches existantes. - -```json title="opencode.json" {4} -{ - "$schema": "https://opencode.ai/config.json", - "permission": { - "todoread": "allow" - } -} -``` - -Lit l'état actuel de la liste de tâches. Utilisé par le LLM pour suivre les tâches en attente ou terminées. - -:::note -Cet outil est désactivé par défaut pour les sous-agents, mais vous pouvez l'activer manuellement. [En savoir plus](/docs/agents/#permissions) -::: - ---- - ### récupération sur le Web Récupérer du contenu Web. diff --git a/packages/web/src/content/docs/it/modes.mdx b/packages/web/src/content/docs/it/modes.mdx index 82e2058700..8f5c22d6e4 100644 --- a/packages/web/src/content/docs/it/modes.mdx +++ b/packages/web/src/content/docs/it/modes.mdx @@ -235,7 +235,6 @@ Ecco tutti gli strumenti che possono essere controllati tramite la configurazion | `list` | Elenca contenuti di una directory | | `patch` | Applica patch ai file | | `todowrite` | Gestisce liste todo | -| `todoread` | Legge liste todo | | `webfetch` | Recupera contenuti web | --- diff --git a/packages/web/src/content/docs/it/permissions.mdx b/packages/web/src/content/docs/it/permissions.mdx index d0f014a841..3f255c89dd 100644 --- a/packages/web/src/content/docs/it/permissions.mdx +++ b/packages/web/src/content/docs/it/permissions.mdx @@ -138,7 +138,6 @@ I permessi di OpenCode sono indicizzati per nome dello strumento, piu' un paio d - `task` — avvio subagenti (corrisponde al tipo di subagente) - `skill` — caricamento di una skill (corrisponde al nome della skill) - `lsp` — esecuzione query LSP (attualmente non granulare) -- `todoread`, `todowrite` — lettura/aggiornamento della todo list - `webfetch` — fetch di un URL (corrisponde all'URL) - `websearch`, `codesearch` — ricerca web/codice (corrisponde alla query) - `external_directory` — si attiva quando uno strumento tocca percorsi fuori dalla working directory del progetto diff --git a/packages/web/src/content/docs/it/tools.mdx b/packages/web/src/content/docs/it/tools.mdx index afd10b3313..50609fd616 100644 --- a/packages/web/src/content/docs/it/tools.mdx +++ b/packages/web/src/content/docs/it/tools.mdx @@ -248,27 +248,6 @@ Questo strumento e' disabilitato per i subagenti di default, ma puoi abilitarlo --- -### todoread - -Leggi le todo list esistenti. - -```json title="opencode.json" {4} -{ - "$schema": "https://opencode.ai/config.json", - "permission": { - "todoread": "allow" - } -} -``` - -Legge lo stato corrente della todo list. Usato dall'LLM per tenere traccia di quali task sono in sospeso o completati. - -:::note -Questo strumento e' disabilitato per i subagenti di default, ma puoi abilitarlo manualmente. [Scopri di piu'](/docs/agents/#permissions) -::: - ---- - ### webfetch Recupera contenuti dal web. diff --git a/packages/web/src/content/docs/ja/modes.mdx b/packages/web/src/content/docs/ja/modes.mdx index 6e7bc121b6..c9f2a4d5ee 100644 --- a/packages/web/src/content/docs/ja/modes.mdx +++ b/packages/web/src/content/docs/ja/modes.mdx @@ -234,7 +234,6 @@ Markdown ファイル名はモード名になります (例: `review.md` は `re | `list` | ディレクトリの内容をリストする | | `patch` | ファイルにパッチを適用する | | `todowrite` | ToDo リストを管理する | -| `todoread` | ToDo リストを読む | | `webfetch` | Web コンテンツを取得する | --- diff --git a/packages/web/src/content/docs/ja/permissions.mdx b/packages/web/src/content/docs/ja/permissions.mdx index 93143f9ca2..5f5df6675c 100644 --- a/packages/web/src/content/docs/ja/permissions.mdx +++ b/packages/web/src/content/docs/ja/permissions.mdx @@ -138,7 +138,6 @@ OpenCode の権限は、ツール名に加えて、いくつかの安全対策 - `task` — サブエージェントの起動 (サブエージェントのタイプと一致) - `skill` — スキルをロードしています(スキル名と一致します) - `lsp` — LSP クエリの実行 (現在は非細分性) -- `todoread`、`todowrite` — ToDo リストの読み取り/更新 - `webfetch` — URL を取得します (URL と一致します) - `websearch`、`codesearch` — Web/コード検索 (クエリと一致) - `external_directory` — ツールがプロジェクトの作業ディレクトリ外のパスにアクセスするとトリガーされます。 diff --git a/packages/web/src/content/docs/ja/tools.mdx b/packages/web/src/content/docs/ja/tools.mdx index 6aa7e956f3..0e0f8fe951 100644 --- a/packages/web/src/content/docs/ja/tools.mdx +++ b/packages/web/src/content/docs/ja/tools.mdx @@ -248,27 +248,6 @@ OpenCode で利用可能なすべての組み込みツールを次に示しま --- -### todoread - -既存の ToDo リストを読み取ります。 - -```json title="opencode.json" {4} -{ - "$schema": "https://opencode.ai/config.json", - "permission": { - "todoread": "allow" - } -} -``` - -現在の Todo リストの状態を読み取ります。どのタスクが保留中または完了しているかを追跡するために LLM によって使用されます。 - -:::note -このツールはデフォルトではサブエージェントに対して無効になっていますが、手動で有効にすることができます。 [詳細はこちら](/docs/agents/#permissions) -::: - ---- - ### webfetch Web コンテンツを取得します。 diff --git a/packages/web/src/content/docs/ko/modes.mdx b/packages/web/src/content/docs/ko/modes.mdx index 4daa410001..35bc4d2264 100644 --- a/packages/web/src/content/docs/ko/modes.mdx +++ b/packages/web/src/content/docs/ko/modes.mdx @@ -235,7 +235,6 @@ Markdown 파일 이름은 모드 이름 (예 : `review.md`는 `review` 모드를 | `list` | 디렉토리 내용 보기 | | `patch` | 파일에 패치 적용 | | `todowrite` | 할 일(Todo) 목록 관리 | -| `todoread` | 할 일(Todo) 목록 읽기 | | `webfetch` | 웹사이트 가져오기 | --- diff --git a/packages/web/src/content/docs/ko/permissions.mdx b/packages/web/src/content/docs/ko/permissions.mdx index ac698b7cfb..ec129f45c0 100644 --- a/packages/web/src/content/docs/ko/permissions.mdx +++ b/packages/web/src/content/docs/ko/permissions.mdx @@ -138,7 +138,6 @@ opencode 권한은 도구 이름에 의해 키 입력되며, 두 개의 안전 - `task` - 에이전트 실행 (작업 에이전트 유형) - `skill` - 기술을 로딩 (기술 이름을 매칭) - `lsp` - LSP 쿼리 실행 (현재 비 과립) -- `todoread`, `todowrite` - 토도 목록의 읽기 / 업데이트 - `webfetch` - URL을 fetching ( URL을 매칭) - `websearch`, `codesearch` - 웹 / 코드 검색 (문자 쿼리) - `external_directory` - 프로젝트 작업 디렉토리 외부의 도구 접촉 경로 때 트리거 diff --git a/packages/web/src/content/docs/ko/tools.mdx b/packages/web/src/content/docs/ko/tools.mdx index c9f4fdaf63..33976b66ff 100644 --- a/packages/web/src/content/docs/ko/tools.mdx +++ b/packages/web/src/content/docs/ko/tools.mdx @@ -248,27 +248,6 @@ LSP 서버가 프로젝트에 사용할 수 있는 구성하려면 [LSP Servers] --- -#### todoread - -기존의 todo 목록 읽기. - -```json title="opencode.json" {4} -{ - "$schema": "https://opencode.ai/config.json", - "permission": { - "todoread": "allow" - } -} -``` - -현재 todo 목록 상태를 읽습니다. 작업이 종료되거나 완료되는 것을 추적하기 위해 LLM에 의해 사용됩니다. - -:::note -이 도구는 기본으로 시약을 비활성화하지만 수동으로 활성화 할 수 있습니다. [더 알아보기](/docs/agents/#permissions) -::: - ---- - #### webfetch Fetch 웹 콘텐츠. diff --git a/packages/web/src/content/docs/modes.mdx b/packages/web/src/content/docs/modes.mdx index 57c1c54a95..5f23df2540 100644 --- a/packages/web/src/content/docs/modes.mdx +++ b/packages/web/src/content/docs/modes.mdx @@ -236,7 +236,6 @@ Here are all the tools can be controlled through the mode config. | `list` | List directory contents | | `patch` | Apply patches to files | | `todowrite` | Manage todo lists | -| `todoread` | Read todo lists | | `webfetch` | Fetch web content | --- diff --git a/packages/web/src/content/docs/nb/modes.mdx b/packages/web/src/content/docs/nb/modes.mdx index ccf9180e4e..bf73ff040f 100644 --- a/packages/web/src/content/docs/nb/modes.mdx +++ b/packages/web/src/content/docs/nb/modes.mdx @@ -235,7 +235,6 @@ Her er alle verktøyene som kan kontrolleres gjennom moduskonfigurasjonen. | `list` | List opp kataloginnhold | | `patch` | Bruk patcher på filer | | `todowrite` | Administrer gjøremålslister | -| `todoread` | Les gjøremålslister | | `webfetch` | Hent webinnhold | --- diff --git a/packages/web/src/content/docs/nb/permissions.mdx b/packages/web/src/content/docs/nb/permissions.mdx index e551a7fee3..6437555a2f 100644 --- a/packages/web/src/content/docs/nb/permissions.mdx +++ b/packages/web/src/content/docs/nb/permissions.mdx @@ -138,7 +138,6 @@ OpenCode-tillatelser tastes inn etter verktøynavn, pluss et par sikkerhetsvakte - `task` — start av subagenter (tilsvarer subagenttypen) - `skill` — laster en ferdighet (tilsvarer navnet på ferdigheten) - `lsp` — kjører LSP-spørringer (for øyeblikket ikke-granulære) -- `todoread`, `todowrite` — lesing/oppdatering av gjøremålslisten - `webfetch` — henter en URL (tilsvarer URL) - `websearch`, `codesearch` - nett-/kodesøk (samsvarer med søket) - `external_directory` - utløses når et verktøy berører stier utenfor prosjektets arbeidskatalog diff --git a/packages/web/src/content/docs/nb/tools.mdx b/packages/web/src/content/docs/nb/tools.mdx index 089a0cbb52..be80a0e2ba 100644 --- a/packages/web/src/content/docs/nb/tools.mdx +++ b/packages/web/src/content/docs/nb/tools.mdx @@ -248,27 +248,6 @@ Dette verktøyet er deaktivert for subagenter som standard, men du kan aktivere --- -### todoread - -Les eksisterende gjøremålslister. - -```json title="opencode.json" {4} -{ - "$schema": "https://opencode.ai/config.json", - "permission": { - "todoread": "allow" - } -} -``` - -Leser gjeldende gjøremålslistestatus. Brukes av LLM for å spore hvilke oppgaver som venter eller er fullført. - -:::note -Dette verktøyet er deaktivert for subagenter som standard, men du kan aktivere det manuelt. [Finn ut mer](/docs/agents/#permissions) -::: - ---- - ### webfetch Hent nettinnhold. diff --git a/packages/web/src/content/docs/permissions.mdx b/packages/web/src/content/docs/permissions.mdx index d48c2a084b..e4b82942d2 100644 --- a/packages/web/src/content/docs/permissions.mdx +++ b/packages/web/src/content/docs/permissions.mdx @@ -138,7 +138,6 @@ OpenCode permissions are keyed by tool name, plus a couple of safety guards: - `task` — launching subagents (matches the subagent type) - `skill` — loading a skill (matches the skill name) - `lsp` — running LSP queries (currently non-granular) -- `todoread`, `todowrite` — reading/updating the todo list - `webfetch` — fetching a URL (matches the URL) - `websearch`, `codesearch` — web/code search (matches the query) - `external_directory` — triggered when a tool touches paths outside the project working directory diff --git a/packages/web/src/content/docs/pl/modes.mdx b/packages/web/src/content/docs/pl/modes.mdx index 52ab163346..b28b160866 100644 --- a/packages/web/src/content/docs/pl/modes.mdx +++ b/packages/web/src/content/docs/pl/modes.mdx @@ -236,7 +236,6 @@ Oto wszystkie narzędzia, które można sterować za pomocą konfiguracji trybó | `list` | Lista zawartości katalogu | | `patch` | Zastosuj poprawki do plików | | `todowrite` | Zarządzaj listami rzeczy do wykonania | -| `todoread` | Przeczytaj listy rzeczy do zrobienia | | `webfetch` | Pobierz zawartość internetową | --- diff --git a/packages/web/src/content/docs/pl/permissions.mdx b/packages/web/src/content/docs/pl/permissions.mdx index c9f50a8aa7..6a7840ac72 100644 --- a/packages/web/src/content/docs/pl/permissions.mdx +++ b/packages/web/src/content/docs/pl/permissions.mdx @@ -138,7 +138,6 @@ Uprawnienia opencode są określane na podstawie nazwy narzędzia i kilku zabezp - `task` — uruchamianie podagentów (odpowiada typowi podagenta) - `skill` — ładowanie umiejętności (pasuje do nazwy umiejętności) - `lsp` — uruchamianie zapytań LSP (obecnie nieszczegółowych) -- `todoread`, `todowrite` — czytanie/aktualizacja list rzeczy do wykonania - `webfetch` — pobieranie adresu URL (pasuje do adresu URL) - `websearch`, `codesearch` — wyszukiwanie sieci/kodu (pasuje do zapytań) - `external_directory` — wywoływacz, gdy narzędzie jest dostępne poza katalogiem roboczym projektu diff --git a/packages/web/src/content/docs/pl/tools.mdx b/packages/web/src/content/docs/pl/tools.mdx index 3e5fd1540d..649c744e04 100644 --- a/packages/web/src/content/docs/pl/tools.mdx +++ b/packages/web/src/content/docs/pl/tools.mdx @@ -248,27 +248,6 @@ To narzędzie jest domyślnie wyłączone dla subagentów, ale można je włącz --- -### todoread - -Odczytuj istniejące listy zadań (todo). - -```json title="opencode.json" {4} -{ - "$schema": "https://opencode.ai/config.json", - "permission": { - "todoread": "allow" - } -} -``` - -Odczytuje bieżący stan listy rzeczy do zrobienia. Używany przez LLM do śledzenia zadań oczekujących lub ukończonych. - -:::note -To narzędzie jest domyślnie wyłączone dla subagentów, ale można je włączyć ręcznie. [Dowiedz się więcej](/docs/agents/#permissions) -::: - ---- - ### webfetch Pobieraj treści z sieci. diff --git a/packages/web/src/content/docs/pt-br/modes.mdx b/packages/web/src/content/docs/pt-br/modes.mdx index 62a7f947af..b549d69ded 100644 --- a/packages/web/src/content/docs/pt-br/modes.mdx +++ b/packages/web/src/content/docs/pt-br/modes.mdx @@ -233,7 +233,6 @@ Aqui estão todas as ferramentas que podem ser controladas através da configura | `list` | Listar conteúdos de diretório | | `patch` | Aplicar patches a arquivos | | `todowrite` | Gerenciar listas de tarefas | -| `todoread` | Ler listas de tarefas | | `webfetch` | Buscar conteúdo da web | --- diff --git a/packages/web/src/content/docs/pt-br/permissions.mdx b/packages/web/src/content/docs/pt-br/permissions.mdx index a815e73134..c3850c00ca 100644 --- a/packages/web/src/content/docs/pt-br/permissions.mdx +++ b/packages/web/src/content/docs/pt-br/permissions.mdx @@ -138,7 +138,6 @@ As permissões do opencode são indexadas pelo nome da ferramenta, além de algu - `task` — lançamento de subagentes (corresponde ao tipo de subagente) - `skill` — carregamento de uma habilidade (corresponde ao nome da habilidade) - `lsp` — execução de consultas LSP (atualmente não granular) -- `todoread`, `todowrite` — leitura/atualização da lista de tarefas - `webfetch` — busca de uma URL (corresponde à URL) - `websearch`, `codesearch` — busca na web/código (corresponde à consulta) - `external_directory` — acionado quando uma ferramenta toca em caminhos fora do diretório de trabalho do projeto diff --git a/packages/web/src/content/docs/pt-br/tools.mdx b/packages/web/src/content/docs/pt-br/tools.mdx index 53f9624858..d762fdf145 100644 --- a/packages/web/src/content/docs/pt-br/tools.mdx +++ b/packages/web/src/content/docs/pt-br/tools.mdx @@ -248,27 +248,6 @@ Esta ferramenta está desativada para subagentes por padrão, mas você pode ati --- -### todoread - -Leia listas de tarefas existentes. - -```json title="opencode.json" {4} -{ - "$schema": "https://opencode.ai/config.json", - "permission": { - "todoread": "allow" - } -} -``` - -Lê o estado atual da lista de tarefas. Usado pelo LLM para acompanhar quais tarefas estão pendentes ou concluídas. - -:::note -Esta ferramenta está desativada para subagentes por padrão, mas você pode ativá-la manualmente. [Saiba mais](/docs/agents/#permissions) -::: - ---- - ### webfetch Busque conteúdo da web. diff --git a/packages/web/src/content/docs/ru/modes.mdx b/packages/web/src/content/docs/ru/modes.mdx index c412d78426..f1ebca386d 100644 --- a/packages/web/src/content/docs/ru/modes.mdx +++ b/packages/web/src/content/docs/ru/modes.mdx @@ -236,7 +236,6 @@ Provide constructive feedback without making direct changes. | `list` | List directory contents | | `patch` | Apply patches to files | | `todowrite` | Manage todo lists | -| `todoread` | Read todo lists | | `webfetch` | Fetch web content | --- diff --git a/packages/web/src/content/docs/ru/permissions.mdx b/packages/web/src/content/docs/ru/permissions.mdx index efbacc8b5f..70f3a804a2 100644 --- a/packages/web/src/content/docs/ru/permissions.mdx +++ b/packages/web/src/content/docs/ru/permissions.mdx @@ -138,7 +138,6 @@ opencode использует конфигурацию `permission`, чтобы - `task` — запуск субагентов (соответствует типу субагента) - `skill` — загрузка навыка (соответствует названию навыка) - `lsp` — выполнение запросов LSP (в настоящее время не детализированных) -- `todoread`, `todowrite` — чтение/обновление списка дел. - `webfetch` — получение URL-адреса (соответствует URL-адресу) - `websearch`, `codesearch` — поиск в сети/коде (соответствует запросу) - `external_directory` — срабатывает, когда инструмент касается путей за пределами рабочего каталога проекта. diff --git a/packages/web/src/content/docs/ru/tools.mdx b/packages/web/src/content/docs/ru/tools.mdx index 333216b374..def6663fc1 100644 --- a/packages/web/src/content/docs/ru/tools.mdx +++ b/packages/web/src/content/docs/ru/tools.mdx @@ -248,27 +248,6 @@ description: Управляйте инструментами, которые м --- -### todoread - -Прочтите существующие списки дел. - -```json title="opencode.json" {4} -{ - "$schema": "https://opencode.ai/config.json", - "permission": { - "todoread": "allow" - } -} -``` - -Считывает текущее состояние списка дел. Используется LLM для отслеживания задач, ожидающих или завершенных. - -:::note -По умолчанию этот инструмент отключен для субагентов, но вы можете включить его вручную. [Подробнее](/docs/agents/#permissions) -::: - ---- - ### webfetch Получить веб-контент. diff --git a/packages/web/src/content/docs/th/modes.mdx b/packages/web/src/content/docs/th/modes.mdx index 0ed3d4da56..2cbb05a26b 100644 --- a/packages/web/src/content/docs/th/modes.mdx +++ b/packages/web/src/content/docs/th/modes.mdx @@ -236,7 +236,6 @@ Provide constructive feedback without making direct changes. | `list` | แสดงรายการเนื้อหาไดเร็กทอรี | | `patch` | ใช้แพทช์กับไฟล์ | | `todowrite` | จัดการรายการสิ่งที่ต้องทำ | -| `todoread` | อ่านรายการสิ่งที่ต้องทำ | | `webfetch` | ดึงเนื้อหาเว็บ | --- diff --git a/packages/web/src/content/docs/th/permissions.mdx b/packages/web/src/content/docs/th/permissions.mdx index c81ee5b337..adf381dee3 100644 --- a/packages/web/src/content/docs/th/permissions.mdx +++ b/packages/web/src/content/docs/th/permissions.mdx @@ -138,7 +138,6 @@ OpenCode ใช้การกำหนดค่า `permission` เพื่อ - `task` — การเปิดตัวตัวแทนย่อย (ตรงกับประเภทตัวแทนย่อย) - `skill` — กำลังโหลดทักษะ (ตรงกับชื่อทักษะ) - `lsp` — กำลังเรียกใช้คำสั่ง LSP (ปัจจุบันยังไม่ละเอียด) -- `todoread`, `todowrite` — กำลังอ่าน/updating รายการสิ่งที่ต้องทำ - `webfetch` — กำลังดึง URL (ตรงกับ URL) - `websearch`, `codesearch` — การค้นหาเว็บ/code (ตรงกับข้อความค้นหา) - `external_directory` — ทริกเกอร์เมื่อเครื่องมือแตะเส้นทางนอกไดเร็กทอรีการทำงานของโปรเจ็กต์ diff --git a/packages/web/src/content/docs/th/tools.mdx b/packages/web/src/content/docs/th/tools.mdx index 6db4cfc2a7..17dbd9fdb3 100644 --- a/packages/web/src/content/docs/th/tools.mdx +++ b/packages/web/src/content/docs/th/tools.mdx @@ -248,27 +248,6 @@ description: จัดการเครื่องมือที่ LLM ส --- -### todoread - -อ่านรายการสิ่งที่ต้องทำที่มีอยู่ - -```json title="opencode.json" {4} -{ - "$schema": "https://opencode.ai/config.json", - "permission": { - "todoread": "allow" - } -} -``` - -อ่านสถานะรายการสิ่งที่ต้องทำปัจจุบัน ใช้โดย LLM เพื่อติดตามงานที่กำลังรอดำเนินการหรือเสร็จสิ้น - -:::note -เครื่องมือนี้ปิดใช้งานสำหรับตัวแทนย่อยตามค่าเริ่มต้น แต่คุณสามารถเปิดใช้งานได้ด้วยตนเอง [เรียนรู้เพิ่มเติม](/docs/agents/#สิทธิ์) -::: - ---- - ### webfetch ดึงเนื้อหาเว็บ diff --git a/packages/web/src/content/docs/tools.mdx b/packages/web/src/content/docs/tools.mdx index 736480030d..4c48d194b0 100644 --- a/packages/web/src/content/docs/tools.mdx +++ b/packages/web/src/content/docs/tools.mdx @@ -248,27 +248,6 @@ This tool is disabled for subagents by default, but you can enable it manually. --- -### todoread - -Read existing todo lists. - -```json title="opencode.json" {4} -{ - "$schema": "https://opencode.ai/config.json", - "permission": { - "todoread": "allow" - } -} -``` - -Reads the current todo list state. Used by the LLM to track what tasks are pending or completed. - -:::note -This tool is disabled for subagents by default, but you can enable it manually. [Learn more](/docs/agents/#permissions) -::: - ---- - ### webfetch Fetch web content. diff --git a/packages/web/src/content/docs/tr/modes.mdx b/packages/web/src/content/docs/tr/modes.mdx index b8dfc838ee..09538e788a 100644 --- a/packages/web/src/content/docs/tr/modes.mdx +++ b/packages/web/src/content/docs/tr/modes.mdx @@ -236,7 +236,6 @@ Hiçbir araç belirtilmezse tüm araçlar varsayılan olarak etkindir. | `list` | Dizinin içeriğini listele | | `patch` | Dosyalara yama uygula | | `todowrite` | Yapılacaklar listelerini yönet | -| `todoread` | Yapılacaklar listelerini oku | | `webfetch` | Web içeriğini getir | --- diff --git a/packages/web/src/content/docs/tr/permissions.mdx b/packages/web/src/content/docs/tr/permissions.mdx index 1194be9a43..f608ce7e0d 100644 --- a/packages/web/src/content/docs/tr/permissions.mdx +++ b/packages/web/src/content/docs/tr/permissions.mdx @@ -138,7 +138,6 @@ opencode izinleri araç adına ve birkaç güvenlik önlemine göre anahtarlanı - `task` — alt agent'ların başlatılması (alt agent türüyle eşleşir) - `skill` — bir skill yükleniyor (skill adıyla eşleşir) - `lsp` — LSP sorgularını çalıştırıyor (şu anda ayrıntılı değil) -- `todoread`, `todowrite` — yapılacaklar listesini okuma/güncelleme - `webfetch` — URL getiriliyor (URL ile eşleşiyor) - `websearch`, `codesearch` — web/kod arama (sorguyla eşleşir) - `external_directory` — bir araç proje çalışma dizini dışındaki yollara dokunduğunda tetiklenir diff --git a/packages/web/src/content/docs/tr/tools.mdx b/packages/web/src/content/docs/tr/tools.mdx index 2eded12d3c..e65ffec3a2 100644 --- a/packages/web/src/content/docs/tr/tools.mdx +++ b/packages/web/src/content/docs/tr/tools.mdx @@ -248,27 +248,6 @@ Bu araç alt agent'lar için varsayılan olarak devre dışıdır, ama manuel et --- -### todoread - -Mevcut yapılacaklar listesini okur. - -```json title="opencode.json" {4} -{ - "$schema": "https://opencode.ai/config.json", - "permission": { - "todoread": "allow" - } -} -``` - -Güncel todo listesi durumunu okur. LLM bunu hangi görevlerin beklediğini veya tamamlandığını takip etmek için kullanır. - -:::note -Bu araç alt agent'lar için varsayılan olarak devre dışıdır, ama manuel etkinleştirebilirsiniz. [Daha fazla bilgi](/docs/agents/#permissions) -::: - ---- - ### webfetch Web içeriği getirir. diff --git a/packages/web/src/content/docs/zh-cn/modes.mdx b/packages/web/src/content/docs/zh-cn/modes.mdx index 474126c946..4570c801c7 100644 --- a/packages/web/src/content/docs/zh-cn/modes.mdx +++ b/packages/web/src/content/docs/zh-cn/modes.mdx @@ -233,7 +233,6 @@ Markdown 文件名即为模式名称(例如,`review.md` 创建一个名为 ` | `list` | 列出目录内容 | | `patch` | 对文件应用补丁 | | `todowrite` | 管理待办事项列表 | -| `todoread` | 读取待办事项列表 | | `webfetch` | 获取网页内容 | --- diff --git a/packages/web/src/content/docs/zh-cn/permissions.mdx b/packages/web/src/content/docs/zh-cn/permissions.mdx index 0f608976aa..24104e2a26 100644 --- a/packages/web/src/content/docs/zh-cn/permissions.mdx +++ b/packages/web/src/content/docs/zh-cn/permissions.mdx @@ -138,7 +138,6 @@ OpenCode 的权限以工具名称为键,外加几个安全防护项: - `task` — 启动子代理(匹配子代理类型) - `skill` — 加载技能(匹配技能名称) - `lsp` — 运行 LSP 查询(当前不支持细粒度配置) -- `todoread`、`todowrite` — 读取/更新待办事项列表 - `webfetch` — 获取 URL(匹配 URL) - `websearch`、`codesearch` — 网页/代码搜索(匹配查询内容) - `external_directory` — 当工具访问项目工作目录之外的路径时触发 diff --git a/packages/web/src/content/docs/zh-cn/tools.mdx b/packages/web/src/content/docs/zh-cn/tools.mdx index 5292921898..4f68a9cf35 100644 --- a/packages/web/src/content/docs/zh-cn/tools.mdx +++ b/packages/web/src/content/docs/zh-cn/tools.mdx @@ -248,27 +248,6 @@ description: 管理 LLM 可以使用的工具。 --- -### todoread - -读取现有的待办事项列表。 - -```json title="opencode.json" {4} -{ - "$schema": "https://opencode.ai/config.json", - "permission": { - "todoread": "allow" - } -} -``` - -读取当前待办事项列表的状态。LLM 使用此工具来跟踪哪些任务待处理、哪些已完成。 - -:::note -该工具默认对子代理禁用,但您可以手动启用。[了解更多](/docs/agents/#permissions) -::: - ---- - ### webfetch 获取网页内容。 diff --git a/packages/web/src/content/docs/zh-tw/modes.mdx b/packages/web/src/content/docs/zh-tw/modes.mdx index 73e6bd141c..c97aeb61b5 100644 --- a/packages/web/src/content/docs/zh-tw/modes.mdx +++ b/packages/web/src/content/docs/zh-tw/modes.mdx @@ -233,7 +233,6 @@ Markdown 檔案名稱即為模式名稱(例如,`review.md` 建立一個名 | `list` | 列出目錄內容 | | `patch` | 對檔案套用補丁 | | `todowrite` | 管理待辦事項清單 | -| `todoread` | 讀取待辦事項清單 | | `webfetch` | 擷取網頁內容 | --- diff --git a/packages/web/src/content/docs/zh-tw/permissions.mdx b/packages/web/src/content/docs/zh-tw/permissions.mdx index b2b43a2094..05b522e9c7 100644 --- a/packages/web/src/content/docs/zh-tw/permissions.mdx +++ b/packages/web/src/content/docs/zh-tw/permissions.mdx @@ -138,7 +138,6 @@ OpenCode 的權限以工具名稱為鍵,外加幾個安全防護項: - `task` — 啟動子代理(比對子代理類型) - `skill` — 載入技能(比對技能名稱) - `lsp` — 執行 LSP 查詢(目前不支援細粒度設定) -- `todoread`、`todowrite` — 讀取/更新待辦事項清單 - `webfetch` — 擷取 URL(比對 URL) - `websearch`、`codesearch` — 網頁/程式碼搜尋(比對查詢內容) - `external_directory` — 當工具存取專案工作目錄之外的路徑時觸發 diff --git a/packages/web/src/content/docs/zh-tw/tools.mdx b/packages/web/src/content/docs/zh-tw/tools.mdx index 529b706194..80e27ea0cc 100644 --- a/packages/web/src/content/docs/zh-tw/tools.mdx +++ b/packages/web/src/content/docs/zh-tw/tools.mdx @@ -248,27 +248,6 @@ description: 管理 LLM 可以使用的工具。 --- -### todoread - -讀取現有的待辦事項清單。 - -```json title="opencode.json" {4} -{ - "$schema": "https://opencode.ai/config.json", - "permission": { - "todoread": "allow" - } -} -``` - -讀取當前待辦事項清單的狀態。LLM 使用此工具來追蹤哪些任務待處理、哪些已完成。 - -:::note -該工具預設對子代理停用,但您可以手動啟用。[了解更多](/docs/agents/#permissions) -::: - ---- - ### webfetch 擷取網頁內容。