Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion packages/opencode/specs/effect/instance-context.md
Original file line number Diff line number Diff line change
Expand Up @@ -224,7 +224,6 @@ These tools mostly use direct getters for path resolution and repo-relative disp
- `src/tool/bash.ts`
- `src/tool/edit.ts`
- `src/tool/lsp.ts`
- `src/tool/multiedit.ts`
- `src/tool/plan.ts`
- `src/tool/read.ts`
- `src/tool/write.ts`
Expand Down
1 change: 0 additions & 1 deletion packages/opencode/specs/effect/schema.md
Original file line number Diff line number Diff line change
Expand Up @@ -216,7 +216,6 @@ emitted JSON Schema must stay byte-identical.
- [ ] `src/tool/grep.ts`
- [ ] `src/tool/invalid.ts`
- [ ] `src/tool/lsp.ts`
- [ ] `src/tool/multiedit.ts`
- [ ] `src/tool/plan.ts`
- [ ] `src/tool/question.ts`
- [ ] `src/tool/read.ts`
Expand Down
2 changes: 0 additions & 2 deletions packages/opencode/specs/effect/tools.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,6 @@ These exported tool definitions currently use `Tool.define(...)` in `src/tool`:
- [x] `grep.ts`
- [x] `invalid.ts`
- [x] `lsp.ts`
- [x] `multiedit.ts`
- [x] `plan.ts`
- [x] `question.ts`
- [x] `read.ts`
Expand Down Expand Up @@ -82,7 +81,6 @@ Notable items that are already effectively on the target path and do not need se
- `write.ts`
- `codesearch.ts`
- `websearch.ts`
- `multiedit.ts`
- `edit.ts`

## Filesystem notes
Expand Down
2 changes: 1 addition & 1 deletion packages/opencode/src/config/agent.ts
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ const normalize = (agent: z.infer<typeof Info>) => {
const permission: ConfigPermission.Info = {}
for (const [tool, enabled] of Object.entries(agent.tools ?? {})) {
const action = enabled ? "allow" : "deny"
if (tool === "write" || tool === "edit" || tool === "patch" || tool === "multiedit") {
if (tool === "write" || tool === "edit" || tool === "patch") {
permission.edit = action
continue
}
Expand Down
2 changes: 1 addition & 1 deletion packages/opencode/src/config/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -660,7 +660,7 @@ export const layer = Layer.effect(
const perms: Record<string, ConfigPermission.Action> = {}
for (const [tool, enabled] of Object.entries(result.tools)) {
const action: ConfigPermission.Action = enabled ? "allow" : "deny"
if (tool === "write" || tool === "edit" || tool === "patch" || tool === "multiedit") {
if (tool === "write" || tool === "edit" || tool === "patch") {
perms.edit = action
continue
}
Expand Down
2 changes: 1 addition & 1 deletion packages/opencode/src/permission/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -307,7 +307,7 @@ export function merge(...rulesets: Ruleset[]): Ruleset {
return rulesets.flat()
}

const EDIT_TOOLS = ["edit", "write", "apply_patch", "multiedit"]
const EDIT_TOOLS = ["edit", "write", "apply_patch"]

export function disabled(tools: string[], ruleset: Ruleset): Set<string> {
const result = new Set<string>()
Expand Down
61 changes: 0 additions & 61 deletions packages/opencode/src/tool/multiedit.ts

This file was deleted.

41 changes: 0 additions & 41 deletions packages/opencode/src/tool/multiedit.txt

This file was deleted.

2 changes: 1 addition & 1 deletion packages/opencode/test/agent/agent.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -474,7 +474,7 @@ test("legacy tools config converts to permissions", async () => {
})
})

test("legacy tools config maps write/edit/patch/multiedit to edit permission", async () => {
test("legacy tools config maps write/edit/patch to edit permission", async () => {
await using tmp = await tmpdir({
config: {
agent: {
Expand Down
29 changes: 0 additions & 29 deletions packages/opencode/test/config/config.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1427,35 +1427,6 @@ test("migrates legacy patch tool to edit permission", async () => {
})
})

test("migrates legacy multiedit tool to edit permission", async () => {
await using tmp = await tmpdir({
init: async (dir) => {
await Filesystem.write(
path.join(dir, "opencode.json"),
JSON.stringify({
$schema: "https://opencode.ai/config.json",
agent: {
test: {
tools: {
multiedit: false,
},
},
},
}),
)
},
})
await Instance.provide({
directory: tmp.path,
fn: async () => {
const config = await load()
expect(config.agent?.["test"]?.permission).toEqual({
edit: "deny",
})
},
})
})

test("migrates mixed legacy tools config", async () => {
await using tmp = await tmpdir({
init: async (dir) => {
Expand Down
5 changes: 2 additions & 3 deletions packages/opencode/test/permission/next.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -422,9 +422,9 @@ test("disabled - disables tool when denied", () => {
expect(result.has("read")).toBe(false)
})

test("disabled - disables edit/write/apply_patch/multiedit when edit denied", () => {
test("disabled - disables edit/write/apply_patch when edit denied", () => {
const result = Permission.disabled(
["edit", "write", "apply_patch", "multiedit", "bash"],
["edit", "write", "apply_patch", "bash"],
[
{ permission: "*", pattern: "*", action: "allow" },
{ permission: "edit", pattern: "*", action: "deny" },
Expand All @@ -433,7 +433,6 @@ test("disabled - disables edit/write/apply_patch/multiedit when edit denied", ()
expect(result.has("edit")).toBe(true)
expect(result.has("write")).toBe(true)
expect(result.has("apply_patch")).toBe(true)
expect(result.has("multiedit")).toBe(true)
expect(result.has("bash")).toBe(false)
})

Expand Down
2 changes: 1 addition & 1 deletion packages/web/src/content/docs/ar/permissions.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ description: تحكّم في الإجراءات التي تتطلب موافقة
تُعرَّف أذونات OpenCode بأسماء الأدوات، بالإضافة إلى بعض حواجز الأمان:

- `read` — قراءة ملف (يطابق مسار الملف)
- `edit` — جميع تعديلات الملفات (يشمل `edit` و`write` و`patch` و`multiedit`)
- `edit` — جميع تعديلات الملفات (يشمل `edit` و`write` و`patch`)
- `glob` — مطابقة أسماء الملفات (يطابق نمط الـ glob)
- `grep` — البحث في المحتوى (يطابق نمط regex)
- `bash` — تشغيل أوامر shell (يطابق الأوامر المُحلَّلة مثل `git status --porcelain`)
Expand Down
4 changes: 2 additions & 2 deletions packages/web/src/content/docs/ar/tools.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ description: إدارة الأدوات التي يمكن لـ LLM استخدام
استخدم هذا للسماح لـ LLM بإنشاء ملفات جديدة. سيكتب فوق الملفات الموجودة إذا كانت موجودة بالفعل.

:::note
تُدار أداة `write` عبر إذن `edit`، والذي يشمل جميع تعديلات الملفات (`edit` و`write` و`patch` و`multiedit`).
تُدار أداة `write` عبر إذن `edit`، والذي يشمل جميع تعديلات الملفات (`edit` و`write` و`patch`).
:::

---
Expand Down Expand Up @@ -190,7 +190,7 @@ description: إدارة الأدوات التي يمكن لـ LLM استخدام
تطبق هذه الأداة ملفات الرقع على قاعدة الشفرة الخاصة بك. وهي مفيدة لتطبيق الفروقات (Diffs) والرقع من مصادر متعددة.

:::note
تُدار أداة `patch` عبر إذن `edit`، والذي يشمل جميع تعديلات الملفات (`edit` و`write` و`patch` و`multiedit`).
تُدار أداة `patch` عبر إذن `edit`، والذي يشمل جميع تعديلات الملفات (`edit` و`write` و`patch`).
:::

---
Expand Down
2 changes: 1 addition & 1 deletion packages/web/src/content/docs/bs/permissions.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ Držite ovu listu fokusiranom na pouzdane putanje, a dodatna allow/deny pravila
Dozvole OpenCode su označene imenom alata, plus nekoliko sigurnosnih mjera:

- `read` — čitanje datoteke (odgovara putanji datoteke)
- `edit` — sve izmjene fajlova (pokriva `edit`, `write`, `patch`, `multiedit`)
- `edit` — sve izmjene fajlova (pokriva `edit`, `write`, `patch`)
- `glob` — globbiranje fajla (odgovara glob uzorku)
- `grep` — pretraga sadržaja (podudara se sa regularnim izrazom)
- `bash` — izvođenje komandi ljuske (podudara se s raščlanjenim komandama kao što je `git status --porcelain`)
Expand Down
4 changes: 2 additions & 2 deletions packages/web/src/content/docs/bs/tools.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ Kreira nove datoteke ili prepisuje postojece.
Koristite ovo da dozvolite LLM-u kreiranje novih datoteka. Ako datoteka vec postoji, bit ce prepisana.

:::note
`write` alat kontrolise `edit` dozvola, koja pokriva sve izmjene datoteka (`edit`, `write`, `patch`, `multiedit`).
`write` alat kontrolise `edit` dozvola, koja pokriva sve izmjene datoteka (`edit`, `write`, `patch`).
:::

---
Expand Down Expand Up @@ -190,7 +190,7 @@ Primjenjuje zakrpe na datoteke.
Ovaj alat primjenjuje patch datoteke na kod. Koristan je za diffs i patch-eve iz razlicitih izvora.

:::note
`patch` alat kontrolise `edit` dozvola, koja pokriva sve izmjene datoteka (`edit`, `write`, `patch`, `multiedit`).
`patch` alat kontrolise `edit` dozvola, koja pokriva sve izmjene datoteka (`edit`, `write`, `patch`).
:::

---
Expand Down
2 changes: 1 addition & 1 deletion packages/web/src/content/docs/da/permissions.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ Hold listen fokuseret på betroede stier, og lag ekstra tillad eller afvis regle
OpenCode tilladelser indtastes efter værktøjsnavn plus et par sikkerhedsafskærmninger:

- `read` — læser en fil (matcher filstien)
- `edit` — alle filændringer (dækker `edit`, `write`, `patch`, `multiedit`)
- `edit` — alle filændringer (dækker `edit`, `write`, `patch`)
- `glob` — fil-globing (matcher glob-mønsteret)
- `grep` — indholdssøgning (matcher regex-mønsteret)
- `bash` — kører shell-kommandoer (matcher parsede kommandoer som `git status --porcelain`)
Expand Down
4 changes: 2 additions & 2 deletions packages/web/src/content/docs/da/tools.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ Opret nye filer eller overskriv eksisterende.
Brug denne for at la LLM lage nye filer. Den vil overskrive eksisterende filer hvis de allerede eksisterer.

:::note
`write`-verktøyet kontrolleres av tillatelsen `edit`, som dekker alle filendringer (`edit`, `write`, `patch`, `multiedit`).
`write`-verktøyet kontrolleres av tillatelsen `edit`, som dekker alle filendringer (`edit`, `write`, `patch`).
:::

---
Expand Down Expand Up @@ -190,7 +190,7 @@ Brug patcher på filer.
Dette verktøyet bruger opdateringsfiler til kodebasen din. Nyttig for at påføre diff og lapper fra forskjellige kilder.

:::note
`patch`-verktøyet kontrolleres av tillatelsen `edit`, som dekker alle filendringer (`edit`, `write`, `patch`, `multiedit`).
`patch`-verktøyet kontrolleres av tillatelsen `edit`, som dekker alle filendringer (`edit`, `write`, `patch`).
:::

---
Expand Down
2 changes: 1 addition & 1 deletion packages/web/src/content/docs/de/permissions.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ Konzentrieren Sie sich in der Liste auf vertrauenswürdige Pfade und fügen Sie
OpenCode-Berechtigungen basieren auf Tool-Namen sowie einigen Sicherheitsvorkehrungen:

- `read` – eine Datei lesen (entspricht dem Dateipfad)
- `edit` – alle Dateiänderungen (umfasst `edit`, `write`, `patch`, `multiedit`)
- `edit` – alle Dateiänderungen (umfasst `edit`, `write`, `patch`)
- `glob` – Datei-Globbing (entspricht dem Glob-Muster)
- `grep` – Inhaltssuche (entspricht dem Regex-Muster)
- `bash` – Ausführen von Shell-Befehlen (entspricht analysierten Befehlen wie `git status --porcelain`)
Expand Down
4 changes: 2 additions & 2 deletions packages/web/src/content/docs/de/tools.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ Bestehende Dateien werden dabei ueberschrieben.

:::note
Das Tool `write` wird ueber die Berechtigung `edit` gesteuert.
`edit` gilt fuer alle Datei-Aenderungen (`edit`, `write`, `patch`, `multiedit`).
`edit` gilt fuer alle Datei-Aenderungen (`edit`, `write`, `patch`).
:::

---
Expand Down Expand Up @@ -197,7 +197,7 @@ Wendet Patches auf Dateien an.
Dieses Tool wendet Patch-Dateien auf deine Codebasis an. Nuetzlich fuer Diffs und Patches aus verschiedenen Quellen.

:::note
Das Tool `patch` wird ueber die Berechtigung `edit` gesteuert, welche alle Datei-Aenderungen abdeckt (`edit`, `write`, `patch`, `multiedit`).
Das Tool `patch` wird ueber die Berechtigung `edit` gesteuert, welche alle Datei-Aenderungen abdeckt (`edit`, `write`, `patch`).
:::

---
Expand Down
2 changes: 1 addition & 1 deletion packages/web/src/content/docs/es/permissions.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ Mantenga la lista centrada en rutas confiables y aplique reglas adicionales de p
Los permisos OpenCode están codificados por el nombre de la herramienta, además de un par de medidas de seguridad:

- `read` — leer un archivo (coincide con la ruta del archivo)
- `edit` — todas las modificaciones de archivos (cubre `edit`, `write`, `patch`, `multiedit`)
- `edit` — todas las modificaciones de archivos (cubre `edit`, `write`, `patch`)
- `glob` — globalización de archivos (coincide con el patrón global)
- `grep` — búsqueda de contenido (coincide con el patrón de expresiones regulares)
- `bash`: ejecuta comandos de shell (coincide con comandos analizados como `git status --porcelain`)
Expand Down
4 changes: 2 additions & 2 deletions packages/web/src/content/docs/es/tools.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ Cree nuevos archivos o sobrescriba los existentes.
Utilice esto para permitir que LLM cree nuevos archivos. Sobrescribirá los archivos existentes si ya existen.

:::note
La herramienta `write` está controlada por el permiso `edit`, que cubre todas las modificaciones de archivos (`edit`, `write`, `patch`, `multiedit`).
La herramienta `write` está controlada por el permiso `edit`, que cubre todas las modificaciones de archivos (`edit`, `write`, `patch`).
:::

---
Expand Down Expand Up @@ -190,7 +190,7 @@ Aplicar parches a los archivos.
Esta herramienta aplica archivos de parche a su código base. Útil para aplicar diferencias y parches de diversas fuentes.

:::note
La herramienta `patch` está controlada por el permiso `edit`, que cubre todas las modificaciones de archivos (`edit`, `write`, `patch`, `multiedit`).
La herramienta `patch` está controlada por el permiso `edit`, que cubre todas las modificaciones de archivos (`edit`, `write`, `patch`).
:::

---
Expand Down
2 changes: 1 addition & 1 deletion packages/web/src/content/docs/fr/permissions.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ Gardez la liste centrée sur les chemins approuvés et superposez des règles d'
Les autorisations OpenCode sont classées par nom d'outil, plus quelques garde-fous de sécurité :

- `read` — lecture d'un fichier (correspond au chemin du fichier)
- `edit` — toutes les modifications de fichiers (couvre `edit`, `write`, `patch`, `multiedit`)
- `edit` — toutes les modifications de fichiers (couvre `edit`, `write`, `patch`)
- `glob` — globalisation de fichiers (correspond au modèle global)
- `grep` — recherche de contenu (correspond au modèle regex)
- `bash` - exécution de commandes shell (correspond aux commandes analysées comme `git status --porcelain`)
Expand Down
4 changes: 2 additions & 2 deletions packages/web/src/content/docs/fr/tools.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ Créez de nouveaux fichiers ou écrasez ceux existants.
Utilisez-le pour permettre au LLM de créer de nouveaux fichiers. Il écrasera les fichiers existants s'ils existent déjà.

:::note
L'outil `write` est contrôlé par l'autorisation `edit`, qui couvre toutes les modifications de fichiers (`edit`, `write`, `patch`, `multiedit`).
L'outil `write` est contrôlé par l'autorisation `edit`, qui couvre toutes les modifications de fichiers (`edit`, `write`, `patch`).
:::

---
Expand Down Expand Up @@ -190,7 +190,7 @@ Appliquez des correctifs aux fichiers.
Cet outil applique les fichiers de correctifs à votre base de code. Utile pour appliquer des différences et des correctifs provenant de diverses sources.

:::note
L'outil `patch` est contrôlé par l'autorisation `edit`, qui couvre toutes les modifications de fichiers (`edit`, `write`, `patch`, `multiedit`).
L'outil `patch` est contrôlé par l'autorisation `edit`, qui couvre toutes les modifications de fichiers (`edit`, `write`, `patch`).
:::

---
Expand Down
2 changes: 1 addition & 1 deletion packages/web/src/content/docs/it/permissions.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ Mantieni l'elenco limitato a percorsi fidati e aggiungi regole extra di allow/de
I permessi di OpenCode sono indicizzati per nome dello strumento, piu' un paio di guardrail di sicurezza:

- `read` — lettura di un file (corrisponde al percorso del file)
- `edit` — tutte le modifiche ai file (include `edit`, `write`, `patch`, `multiedit`)
- `edit` — tutte le modifiche ai file (include `edit`, `write`, `patch`)
- `glob` — ricerca file tramite glob (corrisponde al pattern glob)
- `grep` — ricerca nel contenuto (corrisponde al pattern regex)
- `bash` — esecuzione comandi di shell (corrisponde a comandi parsati come `git status --porcelain`)
Expand Down
Loading
Loading