While you build or debug an extension for DataMind Oda, Oda can look inside the extension runtime without changing anything. Two read-only calls do the looking, and the plugins Oda builds in Creator mode are installed as persistent bundles.
Inspection happens in two calls:
host or
client), the provider, the method and the input the method expects.The list step is titled List Inspect Providers. A query step is titled Query followed by the platform, provider and method it asks about, as in Query host Service.listService.
Use the exact names the list result returns; do not guess them. A query sent to the client side
waits for the first valid page: it stays pending until a page answers or the call is cancelled.
Four providers come with the extension runtime:
| Provider | Method | What it answers |
|---|---|---|
Service | listService | The runtime's services: first a compact directory of keys and signatures, then one service's full contract. |
Event | listEvents | The events a plugin can listen to, directory first. Events the runtime forwards internally are left out. |
Config | listConfigs | The live plugin entries with their configuration status, paged as below. |
Tool | listTools | The tools the asking agent can call, including scoped and dynamic registrations. |
None of these calls can change anything. A query cannot invoke a service's methods or modify the
running system, a Config query never runs a configuration's validators or transforms, and an
inspection method is not a service that plugin code can call.
The Service and Event answers come from a catalogue generated from the runtime itself, so it
describes what this build actually exposes:
How a host half declares the services it uses is on The host half of a dynamic package.
A Config query accepts four fields:
entry: the id of one entry. Without it, you get a page of the entry directory.name: an exact plugin name, to narrow the directory.offset: where the page starts (default 0).limit: how many entries one page holds (default 25, maximum 100).A directory page reports the total and where the next page starts; the last page has no next page.
Ask for one entry and you get that entry: its status, and, when it has one, its exact JSON schema.
| Status | Meaning |
|---|---|
schema | The entry has a configuration schema; query the entry to read it. |
absent | No configuration is present for the entry. |
unsupported | The configuration is not a form the inspector can show. |
tree | The entry carries other entries instead of being one plugin, so it has no schema of its own. |
inactive | The entry is not active: it is disabled, was never loaded, or has stopped. |
Disabling a plugin after it has run flips its status to inactive.
When you work in Creator mode, Oda can build a plugin and install it as a persistent bundle rather than as a package that lives only in its chat. Installing is a managed operation:
cancelled, too-late or
not-running.The other way round, a dynamic package is defined and run inside a single chat; Dynamic packages covers running, approving and removing one.
A refused call changes nothing. The message tells you what was wrong:
offset must be a non-negative integer,
limit must be an integer from 1 to 100, and <key> must be a non-empty string, where <key>
is the field's name, as in name must be a non-empty string.unknown entry id "<id>": no entry has that id. Run the list call and query with an id from its
result.unknown Tool inspect method "<method>": the provider has no such method. The provider's name
replaces Tool for the other providers; use the method names the list call returns.no catalogued Service named "<key>" or
no catalogued Event named "<name>".Config query needs the live plugin directory of the running installation; an installation
built without it refuses Config queries.No. Both calls are read-only: they cannot invoke a service's methods or change the running system,
and a Config query never runs a configuration's validators or transforms.
Service, Event, Config and Tool. Run the list call first: it returns them, and a query uses
their exact names.
Event list?The Event provider leaves out the events the runtime forwards internally. Everything it lists is
an event a plugin can listen to.
25 by default, up to 100 per page. Page with offset; the directory page tells you where the next
page starts, and the last page has no next page.
tree status mean?The entry carries other entries instead of being one plugin, so it has no schema of its own. The entries it holds are listed in the directory themselves.
inactive?It is not active: it is disabled, was never loaded, or has stopped. Disabling a plugin after it has
run flips its entry to inactive.
unknown entry id?The id is not in the directory. Run the list call and query with an exact id from its result.
offset or limit?One of the values is out of range: offset must be 0 or more, and limit must be 1 to 100.
Correct the value and run the query again.
It settles when the first valid page arrives, or when the call is cancelled. While it waits, it is not an error.
Config queries?A Config query needs the live plugin directory of the running installation; an installation built
without it refuses Config queries.
A cancelled install reports cancelled, too-late or not-running. If an install fails, is
cancelled, or adds a package without a bundle change of its own, the package manifest and lockfile
are restored as they were; files already downloaded can stay.