Inspecting plugins

While you build or debug a plugin, DataMind Oda can look inside the plugin system without changing anything. Two read-only calls do this: the first lists what the loaded plugins expose, and the second asks one provider for details. Each shows in the chat as its own step with formatted JSON. The plugins a chat defines and runs itself are covered in Plugins Oda defines in a chat.

List, then query

Inspection happens in two calls:

The list step is titled List Inspect Providers. A query step is titled Query followed by what it asks for, as in Query host Service.listService.

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.

Use the exact names from the list result; do not guess them.

What you can inspect

Four providers come with the plugin system:

Config queries and paging

A Config query accepts four fields:

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.

What an entry's status means

StatusMeaning
schemaThe entry has a configuration schema; query the entry to read it.
absentNo configuration is present for the entry.
unsupportedThe configuration is not a form the inspector can show.
treeThe entry carries other entries instead of being one plugin, so it has no schema of its own.
inactiveThe 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.

Inspecting changes nothing

When a call is refused

A refused call changes nothing. The message tells you what was wrong:

Questions, answered

Can inspection change anything, or run a plugin's code?

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.

Which providers can I inspect?

Service, Event, Config and Tool. Run the list call first: it returns them, and a query uses their exact names.

Why is an event missing from the Event list?

The Event provider leaves out the events the system forwards internally. Everything it lists is an event a plugin can listen to.

How many config entries does one query return?

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.

What does the 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.

What makes a config entry 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.

Why was my query refused with unknown entry id?

The id is not in the directory. Run the list call and query with an exact id from its result.

Why did a query refuse my 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.

A client query seems to wait a long time. When does it finish?

It settles when the first valid page arrives, or when the call is cancelled. While it waits, it is not an error.

Why can this installation not run Config queries?

A Config query needs the live plugin directory of the running installation; an installation built without it refuses Config queries.