Skip to content

Releases: Agent-Pattern-Labs/iso

iso-trace-v0.3.0

Choose a tag to compare

@CharGrnmn CharGrnmn released this 21 Apr 18:20

iso-eval-v0.3.0

Choose a tag to compare

@CharGrnmn CharGrnmn released this 21 Apr 18:20

@razroo/iso v0.2.5

Choose a tag to compare

@CharGrnmn CharGrnmn released this 20 Apr 22:15

Chore

  • Bumps the @razroo/iso wrapper's pinned @razroo/iso-route dep from ^0.3.0 to ^0.5.0.

This is required so consumers whose models.yaml does extends: openrouter-free can run iso build without hitting a "preset not found" error from the nested node_modules/@razroo/iso/node_modules/@razroo/iso-route copy. No user-facing behavior change beyond the new preset being reachable through the wrapper.

@razroo/iso-trace v0.2.0

Choose a tag to compare

@CharGrnmn CharGrnmn released this 20 Apr 17:55

`export-fixture` — lift a session into an iso-eval regression fixture

Closes INTEGRATIONS.md #4.

New command:

```bash
iso-trace export-fixture --out fixtures/my-task/
iso-trace export-fixture --source path/to/sample.jsonl --out fixtures/my-task/
```

Produces an iso-eval-compatible directory:

```
fixtures/my-task/
├── task.md — first user message from the session, verbatim
├── workspace/ — empty placeholders for every file the agent read
└── checks.yml — file_exists per write, file_exists + file_contains
(value: REPLACE_ME) per edit, wrapped in a
`suite: fixture- / runner: fake` scaffold
```

The output is a seed, not a replay. Maintainers edit `checks.yml`
(replace REPLACE_ME placeholders) and fill in any baseline workspace
files, then drop the fixture into an `iso-eval` suite. Since the
default placeholder would fail `file_contains`, silent success-by-
default is avoided.

Library export `exportFixture(session, { out })` for programmatic
callers (batch fixture generation across a transcript root, etc).

Seven new tests cover the fixture layout, message extraction, workspace
seeding, absolute-path fallthrough, and no-op sessions.

@razroo/iso-route v0.5.1 — retune openrouter-free after contention data

Choose a tag to compare

@CharGrnmn CharGrnmn released this 20 Apr 22:43

Real-world usage showed qwen/qwen3-coder:free is the most contended free model on OpenRouter's shared provider pool (Venice, Chutes rate-limit frequently). We keep it as the orchestrator default (still the strongest free agentic model) but spread subagent load across less-contended providers.

Changes to the openrouter-free preset:

  • fast: minimax/minimax-m2.5:freez-ai/glm-4.5-air:free (more reliable tool-call schema compliance on Geometra flows)
  • minimal: google/gemma-4-26b-a4b-it:freeopenai/gpt-oss-20b:free (less contended, better structured-output adherence)
  • quality: openai/gpt-oss-120b:freeqwen/qwen3-next-80b-a3b-instruct:free (actually the best free writing model; matches what JobForge was already overriding to)

No breaking changes. Existing consumers get better defaults on next install.

@razroo/iso-route v0.5.0 — openrouter-free preset + catalog command

Choose a tag to compare

@CharGrnmn CharGrnmn released this 20 Apr 22:11

Minor

  • New openrouter-free preset. Keeps the standard Claude Code / Codex picks, but routes OpenCode through explicit free OpenRouter model IDs:

    • default: qwen/qwen3-coder:free
    • quality: openai/gpt-oss-120b:free
    • fast: minimax/minimax-m2.5:free
    • minimal: google/gemma-4-26b-a4b-it:free

    Scaffold with iso-route init --preset openrouter-free or extend with a one-liner extends: openrouter-free.

  • New advisory iso-route catalog openrouter command. Fetches the live OpenRouter /api/v1/models response, filters to free + tool-capable models by default, and ranks a shortlist for OpenCode with suggested picks per role. Advisory only — iso-route build still does not validate model IDs at compile time.

listPresets() now returns ["standard", "budget", "openrouter-free"].

@razroo/iso-route v0.4.0

Choose a tag to compare

@CharGrnmn CharGrnmn released this 20 Apr 17:55

New `budget` preset + README docs for the preset system

Cost-optimized variant of `standard` that pushes every tier one step
cheaper:

tier standard budget
default sonnet haiku
fast haiku haiku (unchanged)
quality opus + high reas. sonnet
minimal haiku haiku (unchanged)

Codex picks drop from `gpt-5.4` to `gpt-5.4-mini` / `gpt-5.4-nano`;
OpenCode uses free-tier and pay-once models (`minimax-m2.5-free`,
`big-pickle`).

Scaffold it with:

```bash
iso-route init --preset budget
```

Users override only what they want to upgrade:

```yaml
extends: budget
roles:
quality:
targets:
claude:
provider: anthropic
model: claude-opus-4-7 # upgrade quality back to opus
```

Docs

The package README now documents the preset system end-to-end:
`extends:` mechanic (deep merge, user-wins, atomic per-harness
targets), `iso-route init --preset `, and per-harness overrides
via `targets.`. These features shipped in 0.2.0 and 0.3.0
but were previously undocumented at the package level.

Two new tests cover the budget shape and selective-override semantics.
`listPresets()` now returns `["standard", "budget"]`.

@razroo/iso-harness v0.6.1 — opencodeModelFallback file emit

Choose a tag to compare

@CharGrnmn CharGrnmn released this 20 Apr 23:10

Optional top-level opencodeModelFallback in iso/config.json is now written to .opencode/opencode-model-fallback.json during the OpenCode emit, so @razroo/opencode-model-fallback can load global fallback_models, retryable_error_patterns (e.g. Venice / Diem balance copy), and cooldown settings from the same iso/ source tree as everything else — no hand-maintained generated file outside the harness pipeline.

See packages/iso-harness/README.md for the full example.

@razroo/iso-eval v0.2.0

Choose a tag to compare

@CharGrnmn CharGrnmn released this 20 Apr 17:55

`agentmd_adherence` check type

Closes INTEGRATIONS.md #3.

New check type scores per-rule adherence of an agentmd-dialect prompt
against a fixture file:

```yaml

  • type: agentmd_adherence
    promptFile: ../agent.md
    fixtures: ../fixtures.yml
    ruleId: H3 # optional — filter to one rule
    minPassRate: 0.9
    via: claude-code # optional (api | claude-code | fake)
    model: claude-haiku-4-5 # optional
    timeoutMs: 180000 # optional
    ```

Shells out to `agentmd test --format json`, computes the pass rate
for the named rule (or overall when `ruleId` is omitted), and fails
the check when the rate is below `minPassRate`. The default spawn
resolves `@razroo/agentmd`'s CLI via Node module resolution so PATH
setup doesn't matter. Tests can inject a fake `AgentmdSpawnFn` via
the library `RunOptions` so CI runs offline without an API key.

New runtime dep

Adds `@razroo/agentmd` as a dependency so installing iso-eval also
installs the agentmd CLI — no separate install step needed.

Eight new tests cover happy-path, rule filtering, missing promptFile,
non-zero exit, invalid JSON, empty cases, unknown rule, and flag
forwarding.

isolint v1.4.1

Choose a tag to compare

@CharGrnmn CharGrnmn released this 19 Apr 18:28

Resolve cross-references against the repo root when linting a subdirectory

Running isolint lint modes/ rooted both the repo-file scan and ctx.file at the lint target, not the actual repo root. Two visible failure modes:

  1. stale-link-reference flagged every [..](../X.md) link pointing to a project-root file, because those files were never added to repo_files.
  2. Every rule that gates on ctx.file.match(/modes\/|prompts\/|skills\//) silently skipped, because ctx.file was target-relative (README.md) instead of repo-relative (modes/README.md).

Fix: discoverRepoFiles now scans from the git root (or process.cwd() outside a git checkout); discovered file rel_path values are re-based to the repo root before reaching rules. Linting the project root (isolint lint .) is byte-identical to before.

Adds a new CLI-spawn regression test covering the lint modes/ case against a temp git repo.