This page describes a proposed extension for multi-step plugin orchestration. Currently, plugins are single-pass: they receive evidence and return one result. This proposal enables iterative reasoning loops.
Some tasks require multiple steps. Example: a Z3 solver determines a constraint set is UNSAT. To find a solution, it needs to relax a variable, which requires re-querying the KB for alternative values, then re-running Z3 with the new evidence.
Current limitation: the plugin gets one shot. If it needs more information, it can't ask for it.
A plugin signals it needs more work by returning Status: continuation:
## Plugin Result
Status: continuation
Plugin: z3-solver
Confidence: low
## Continuation Request
Action: retrieve
Query: Alternative values for variable X when constraint Y is relaxed
Reason: Initial constraint set is UNSAT. Need relaxation options.
The engine would then:
Status: success or Status: error or budget exhaustedFor complex reasoning, a plugin could return multiple sub-tasks with dependencies:
## Continuation Request
Action: multi-step
### Task 1
Action: retrieve
Query: Values of variable X
DependsOn: none
### Task 2
Action: retrieve
Query: Constraints involving variable X
DependsOn: none
### Task 3
Action: plugin
Plugin: z3-solver
Input: Combine results of Task 1 and Task 2
DependsOn: task-1, task-2
The engine would build a DAG, execute independent tasks in parallel, wait for dependencies, detect cycles → error.
{
"maxPluginContinuations": 3,
"maxPluginTotalTimeMs": 60000,
"continuationRetrievalProfile": "fast"
}
continuation status parsing to plugin manager