@loopyc/infer
v0.9.0
Published
Deterministic FactPack extraction from existing scripts (JS/TS AST, bash) and .loopy journals → a draft LoopSpec for the /loopy skill to complete.
Maintainers
Readme
@loopyc/infer
Start from what you have: deterministic FactPack extraction for Monkey D Loopy.
Point it at an existing bash or JS/TS script (AST-based, no model calls) or a .loopy run
journal, and it extracts the loop-shaped facts — commands, conditions, sleeps, retries, state —
into a draft LoopSpec scaffold to refine with loopc or the /loopy authoring skill.
loopc infer-scaffold ./my-poll-script.sh # via @loopyc/cliSee the project README for the full factory.
Jev authoring and iterative refinement (0.9.0)
These capabilities are available starting with 0.9.0. See availability and source setup and confirm that the installed CLI/MCP tool list includes the feature before using it.
| CLI | MCP | Purpose |
|---|---|---|
| recommend | recommend_workflow | Rank eligible catalog structures for a brief |
| design | design_workflow | Create a validated, mock-verified scaffold from an explicit selection |
| refine | refine_workflow | Compare current YAML and authored revisions with feedback/evidence; preserve history |
Jev requires TYPESAFE_API_KEY in the process environment and explicit provider selection
(allowExternal: true in MCP). Env files are not loaded automatically. Refinement sends supplied
eligible YAML, feedback and evidence to TypeSafe; keep secrets out. Offline performs local checks
and retains current, without claiming semantic improvement. These authoring calls never activate
a workflow or execute its real effects.
Read the workflow designer, agent guide, and complete agent context for exact contracts, setup, repeated rounds and limitations.
The 0.9.0 library exports recommendWorkflow, designWorkflow, refineWorkflow,
revisionDigest, and the non-overwriting writers writeWorkflowDesign / writeWorkflowRefinement.
A minimal refinement caller can load the documented request JSON:
import {refineWorkflow, writeWorkflowRefinement} from '@loopyc/infer';
import {readFile} from 'node:fs/promises';
const request = JSON.parse(await readFile('refinement.json', 'utf8'));
const report = await refineWorkflow(request, {provider: 'offline'});
await writeWorkflowRefinement('revisions/round-1', report);Pass a prior RefinementReport as the third argument to refineWorkflow for another round and
set request.current to that report's exact selected YAML. revisionDigest(yaml) attributes
an evidence summary to a compared revision. provider: 'jev' reads TYPESAFE_API_KEY from the
process environment unless an API key is explicitly supplied in options; do not persist that option.
