@davidorex/pi-jit-agents
Agent spec compilation and in-process dispatch runtime — the package that owns everything between 'I have a spec' and 'I have a typed result'
Package details
Install @davidorex/pi-jit-agents from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:@davidorex/pi-jit-agents- Package
@davidorex/pi-jit-agents- Version
0.31.0- Published
- Jun 13, 2026
- Downloads
- 488/mo · 141/wk
- Author
- davidorex
- License
- MIT
- Types
- package
- Size
- 336.9 KB
- Dependencies
- 5 dependencies · 0 peers
Security note
Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.
README
@davidorex/pi-jit-agents
Agent spec compilation and in-process dispatch runtime. Owns everything between "I have a spec" and "I have a typed result."
Purpose
JIT agents are named callable units with typed input contracts, typed output contracts, and context-parametric implementations materialized at runtime from project state. This package provides:
- Spec loading with full path resolution and tier-aware discovery
- Template compilation with project block context injection
- In-process LLM dispatch with phantom-tool structured output enforcement
- Agent contract introspection for SDK queries
There is one concept of "agent" regardless of whether a workflow step or a monitor classify call invokes it. Classification is agent execution with a verdict-shaped output schema; it is not a separate primitive.
Boundary
The package owns four public surfaces:
loadAgent(name, ctx) → AgentSpec— resolves spec from discovery tiers, fully resolves all path fields to absolutecompileAgent(spec, ctx) → CompiledAgent— renders templates, injectscontextBlocksfrom the substrate directory, composes final promptsexecuteAgent(compiled, dispatch) → JitAgentResult— in-process LLM dispatch with phantom tool enforcement; clamps the compiled agent's tool grant to a subset of the caller-supplied parent grant at the dispatch boundaryagentContract(spec) → AgentContract— projection for introspection, no execution
Subprocess dispatch stays in pi-workflows. The package never reads from .pi/ — that directory is Pi platform territory.
Tool-grant clamping
AgentSpec.tools (operation-granular tool names) threads through compileAgent into CompiledAgent.tools. At dispatch, executeAgent clamps compiled.tools to a subset of DispatchContext.parentGrant (the caller's own grant; undefined parent grant means the empty set). A child requesting a tool outside the parent grant raises GrantViolationError, naming the agent and the violating tools.
Discovery tiers
Agent specs are searched in this order:
{cwd}/<substrate-dir>/agents/{name}.agent.yaml— project-level overrides{userDir ?? ~/.pi/agent/agents/}/{name}.agent.yaml— user-global overrides{builtinDir}/{name}.agent.yaml— consumer-supplied builtins
The framework package itself ships no bundled agent specs. Consumer packages supply their own builtin directory at loader construction time.
Bundled templates
The agent-template tree ships in this package under templates/ (relocated here from pi-workflows). bundledTemplateDir() returns its absolute path so consumers can discover the bundled templates from either source or built (dist) layouts. templates/shared/macros.md provides one per-item rendering macro per block kind plus six whole-block delegator macros (render_decisions, render_features, render_framework_gaps, render_layer_plans, render_research, render_spec_reviews) that wrap the per-item macros.
CANONICAL_MACRO_NAMES is the registry mapping each block kind to its { macro_name, array_key }, surfacing the cases where the block kind differs from the data key the items live under (e.g. framework-gaps→gaps, layer-plans→plans, spec-reviews→reviews). createRendererRegistry builds the kind→macro-ref map consumed during compilation.
Exports
.— main barrel./types— type definitions./agent-spec—parseAgentYaml,createAgentLoader./template—createTemplateEnv,renderTemplate,renderTemplateFile./compile—compileAgent,registerCompositionGlobals./runtime—executeAgent,buildPhantomTool,normalizeToolChoice,GrantViolationError./introspect—agentContract
The main barrel additionally re-exports the bundled-template entry point (bundledTemplateDir), the renderer registry (CANONICAL_MACRO_NAMES, createRendererRegistry), and GrantViolationError.