ADIL EDGE SDK · TOOLS, CANCELLATION AND ERRORS

Schemas, permissions, deadlines and failures.

What your application must do, and what the candidate SDK is designed to do. Neither the Eco V1.1 A3b model nor the SDK is publicly released: there is no download, package or installer, and nothing on this page announces one.

Tool schemas

A tool has a name, a description, a JSON-schema subset for its parameters and an effect: read-only or state-changing. Schemas outside the supported subset (for example references with $ref) are refused at registration with an error that names the offending location. Set additionalProperties to false so that invented fields are rejected.

Numbers are accepted only when the engine can hand your tool exactly the value it validated: magnitude within ±(2^53−1) and written so that it prints back the same. Use strings for larger or exact-decimal identifiers.

Permissions and confirmation

Your application classifies each tool. The engine cannot tell which tools are sensitive. Read the behaviour table on the Eco security page, and in particular:

  • State-changing tools always wait for confirmation.
  • Tools that read private data or send anything out must be registered as confirmation-required.
  • A policy callback that answers “allow” is not a confirmation by a person.
  • The SDK never approves a proposal itself; you decide, and you keep enforcing your own authorisation inside the tool.

Confirmation behaviour in detail

Showing tool data next to model text

Declare which result fields your interface may show, with a kind such as number, integer, boolean, quoted text or an enum. After a run, the outcome lists only those fields, only from results the engine delivered unchanged, and only when the JSON type matches. Show this data apart from the model's own text, and show quoted strings as quoted data. This presentation feature is implemented in the accepted SDK source; it is not a replacement for confirmation.

Cancellation and deadlines

SituationBehaviour
Cancelled before the tool startsThe tool never starts.
Cancelled after the tool has startedCancellation is cooperative: your handler sees a cancelled flag (a signal in Node, a function in C), and the result is discarded. A side effect that already happened stays.
Cancelling one agentStops only that agent’s own run and voids only its own pending proposal. It does not interrupt other agents or a generation in progress.
Cancel acknowledged but output returnedA cancel that arrives as a run starts can be acknowledged while the run still returns its text answer. If a late answer must not be shown, drop it in your application.
DeadlinesSet a per-call or overall timeout (Python: a Timeout with connect, read and total; Node: timeoutMs with read and total). Retries only cover a busy service, a model that is not ready, and refused connections, and never exceed the total deadline. In the Node.js host process, a request timeout cancels exactly the timed-out request.

Make tools idempotent or transactional and check for cancellation before each side effect.

Errors

All SDK exceptions derive from one base class. Branch on the exception class or on its stable code, never on message text. HTTP-path errors carry a status, a code and a request ID.

ErrorMeaning
Connection errorThe local service is not reachable, or the connection dropped.
TimeoutA client-side read or total timeout expired.
Model not readyThe model is still loading, or the service failed.
Context lengthPrompt plus output exceed the context window.
Capability errorThe engine or model cannot do this (for example forcing a named tool, several choices, or images).
Output validationStructured output was invalid JSON, did not match the schema, or was truncated.
BusyThe service handles one operation at a time.
Permission deniedA request came from a browser page that is not allowed.
Library or host refusalThe engine or host is not the expected version 2 component set.