# Psaní adaptéru

> Naučte VOID inverze k nástroji, který ještě nezná.

Reading time: 11 min. Source: https://www.voidagent.tech/cs/docs/adapters

Adaptér mapuje volání nástrojů na třídy, snímky stavu a inverze. Jeho dopublikování je rozdíl mezi nástrojem, který je z defaultu R3, a nástrojem, který je řádně vratný.

> v1.0.1. TUI a MCP vydané. Desktopová aplikace v betě pro macOS, Windows a iOS, na pozvánku. Import na začátku této ukázky pojmenovává balíček uvnitř produktového repozitáře, ve verzi 0.1.0, který je soukromý a nepublikovaný. Vyřeší se z klonu toho repozitáře a nedá se nainstalovat z registru, takže ukázka ukazuje tvar, ne řádek, který by se dal překopírovat.

## Minimální adaptér

```adapters/acme.ts
import { adapter, R } from "@void/sdk";

export default adapter({
  id: "acme",
  tools: {
    "acme.record.update": {
      effect: "write",
      class: R.R0,
      blastRadius: (args) => ({ systems: ["acme"], records: 1 }),
      snapshot: async (args, ctx) => ctx.client.get(args.id),
      inverse: (before) => ({ tool: "acme.record.update", args: before }),
    },
    "acme.record.delete": {
      effect: "write",
      class: R.R1,
      snapshot: async (args, ctx) => ctx.client.get(args.id),
      inverse: (before) => ({ tool: "acme.record.create", args: before }),
    },
    "acme.payout.send": {
      effect: "write",
      class: R.R3,
      inverse: null,
      reason: "settles to an external bank",
    },
  },
});
```

## Pravidla pro praxi

- Inverzi nenapíšete, třída je R2 nebo R3. Nehádejte.
- Snímek, který nejde ověřit digestem, není snímek.
- Blast radius má u hromadných operací vzorkovat, ne vypisovat.
- Upřednostněte nejúžeší rozsah API, který ještě podporuje inverzi.

## Testování

```shell
$ void adapter test ./adapters/acme.ts
  + 3 tools declared
  + 2 inverses execute against the sandbox
  + 2 snapshots verify by digest
  ! acme.payout.send has no inverse, class R3 (expected)
```

> Adaptér běží uvnitř procesu, který jej načetl, a nikdy nevolá domů. Který to je, závisí na tom, která plocha jej načetla.

---

This document is the markdown form of https://www.voidagent.tech/cs/docs/adapters, published for agents that read
text rather than a rendered page. It is generated from the same data the page
renders, so the two cannot disagree.

