feat(jobs): node-local job ownership and capability-gated job__* visibility
Graph LLM nodes now own the jobs they start, on every exit path. A new node_job_scope on RequestContext records job ids started while a node runs: the turn-end guardrail nags only about the node's own jobs (parallel branches no longer see each other's), and the node executor reaps — cancels and deregisters — anything left registered when the node exits, including error, timeout, and retry-exhaustion paths. Cross-node job handoff is no longer possible; a crashed node takes its in-flight jobs with it. With inheritance gone, job__* declarations are gated on capability: the family is only declared when at least one declared tool would pass job__start's whitelist (shared predicate: is_backgroundable_tool). One carve-out — while a context still owns registered jobs (job started, tool disabled mid-session), the lifecycle verbs stay declared so a running job can never become unreachable; job__start alone disappears. A graph node with tools: [] now sees no job__* tools at all. Prompt instructions, tool declarations, and graph.example.yaml updated to the node-local semantics; +7 tests, 8 visibility pins rewritten.
This commit is contained in:
+6
-4
@@ -37,10 +37,12 @@ reasoning_effort: null # Default reasoning effort for `llm` nodes th
|
||||
# Only valid when the model declares reasoning_levels.
|
||||
|
||||
max_concurrent_jobs: 5 # Max background jobs (`job__*` tools) running at once across the
|
||||
# whole graph run. Jobs live in the run-wide supervisor and outlive
|
||||
# the `llm` node that started them, so the budget is graph-wide —
|
||||
# there is no per-node override. Overrides the global setting;
|
||||
# 0 disables background jobs for this graph agent.
|
||||
# whole graph run: every `llm` node (including parallel branches)
|
||||
# draws from this one pool, so the budget is graph-wide — there is
|
||||
# no per-node override. Jobs themselves are node-local: the node
|
||||
# that starts a job must collect or cancel it before it ends, and
|
||||
# anything left running at node exit is cancelled. Overrides the
|
||||
# global setting; 0 disables background jobs for this graph agent.
|
||||
|
||||
global_tools: # Tool universe an `llm` node's `tools:` whitelist draws from
|
||||
- web_search_coyote.sh
|
||||
|
||||
Reference in New Issue
Block a user