Documentation Index
Fetch the complete documentation index at: https://docs.ixo.world/llms.txt
Use this file to discover all available pages before exploring further.
Overview
OraclePlugin is the abstract class every plugin extends. It declares three required fields — name, version, manifest — and a set of optional hooks the runtime invokes during boot and per request.
defineOraclePlugin POJO helper instead. Both produce the same internal representation.
OraclePlugin (abstract class)
Required fields
name
name
- Type:
string - Convention: kebab-case unique identifier.
features, dependsOn, softDependsOn, qiforge inspect, the meta-tools. Boot fails on collision with another plugin’s name.version
version
- Type:
string
qiforge inspect output. Not used for compatibility checking in v1.manifest
manifest
- Type:
PluginManifest
Optional fields
dependsOn
dependsOn
- Type:
string[]
softDependsOn
softDependsOn
- Type:
string[]
ctx.availablePlugins.has(...).configSchema
configSchema
- Type:
z.ZodObject<any>
process.env is validated against the result.autoDetectHint
autoDetectHint
- Type:
string
autoDetect checks (e.g. 'REDIS_URL'). Surfaced in boot logs when the plugin is skipped.Hooks
autoDetect(env)
autoDetect(env)
'auto' (or has no explicit features entry). Return false to skip the plugin. Plugins without autoDetect are on-by-default.getTools(ctx)
getTools(ctx)
getRequestTools(rtCtx)
getRequestTools(rtCtx)
RuntimeContext. Outputs are merged with getTools.getSubAgents(ctx)
getSubAgents(ctx)
getTools.getRequestSubAgents(rtCtx)
getRequestSubAgents(rtCtx)
getSubAgents.getMiddlewares(ctx)
getMiddlewares(ctx)
AgentMiddleware instances inserted after the four always-on framework middleware (tool-validation, retry, page-context, safety-guardrail). Plugin middleware runs in topological dependency order across plugins.getSharedState()
getSharedState()
getNestModules(ctx)
getNestModules(ctx)
RuntimeAppModule.imports. Full DI access to Tier-0 services. Use for long-lived services and HTTP controllers.ctx is optional — older plugins that omit the argument still work.getAuthExcludedRoutes()
getAuthExcludedRoutes()
AuthHeaderMiddleware. Returns AuthExcludedRoute[] ({ path, method? }). path matches the same way as NestJS MiddlewareConsumer.exclude(...) — use the full path the controller mounts at.defineOraclePlugin
For plugins without constructor args, the POJO form:defineOraclePlugin is an identity function — it returns its argument with type-checking applied. The resulting object is interchangeable with a class instance for everything the runtime does.
Error handling
If a hook throws at request build time, the runtime logs the error with the plugin name and skips that plugin’s contribution for that request. The rest of the agent build continues. SamePromise.allSettled semantics for sub-agent init.
Boot-time errors in autoDetect, configSchema validation, or manifest validation fail boot loudly.
Related references
- PluginContext
- RuntimeContext
- Manifest schema
- Plugin catalog — the 15 bundled plugins.