A workflow without agents
A bug report arrives: “A large spreadsheet download crashes the page.” Before opening another issue, check whether the same bug is already tracked.
The workflow uses Jev system one decisions, code, and direct tool calls. It has no agent loop.
- Search issues. A tool returns possible matches.
- Compare the reports. A Jev system one decision separates the same underlying bug from a new bug or an unclear match. Sharing words like “CSV export” is not enough.
- Choose the action. Code checks the selected issue exists in the search results and chooses one tool: link the report, create an issue, or send it for review.
The model makes the semantic decision. Code checks the result and controls which tool can run next.
Run it
From the downloaded source, with Node 22.19 or later:
npm ci
npm run build
node examples/bug-triage.mjs duplicate
node examples/bug-triage.mjs new
node examples/bug-triage.mjs uncertain
These examples use fictional reports, scripted decisions, and local mock tools. They create no real issues and make no live model calls.
Read the workflow or read its tests.
Test the decision separately
Use reports whose relationship is already known. Two export complaints might describe different failures. A completed workflow does not prove that a duplicate decision is correct.
Keep semantic evaluation separate from tool execution. Test the match on its own; then verify that each result calls only the intended tool. The runnable example covers duplicate, new, and uncertain reports, and rejects a selected issue that was not returned by search.
When to add an agent
Use a direct tool call when the next operation is known. Use an agent when a task needs exploration: choosing searches, reading sources, and deciding what to investigate next.
The research workflow puts those agents inside a larger workflow, with Jev system one decisions between them. Both patterns use the same DSL.