0.1.4 — 2026-05-28
Patch release bundling 4 user-facing improvements: 2 DX fixes from the v0.1.3 post-release sweep, the OE_OPENAI_MODEL / OE_ANTHROPIC_MODEL override unblocking self-hosted users, and a substantial synthesizer-prompt hardening for oe ultra. All caught from real-API testing.
Added
OE_OPENAI_MODELandOE_ANTHROPIC_MODELenv vars —defaultModelFornow honors these as overrides. Previouslyoe ultraandoe evolvehardcodedgpt-4o-2024-11-20and threw 404 against any self-hosted OpenAI-compatible endpoint (vLLM / Ollama / LM Studio / etc.). Per-node YAMLmodel:overrides still take precedence; the env vars apply when no per-node model is set.
Changed
-
oe ultrasynthesizer prompt — substantial hardening. Live-tested against a self-hosted MiniMax-2.7-w8a8 endpoint; the first synthesis attempt produced YAML with 3+ validation errors. Six iterations of prompt improvements landed:- Top-level shape rule —
nodes:andedges:MUST nest undergraph:, not at root - YAML escaping rule — always quote strings containing
:,#,{},[], etc. - Per-kind required-field cheatsheet (one block per node kind, dataset/cli-agent fully spelled out)
- Edges have ONLY
from/to/when— nodescription:, nolabel: state.schematypevalues restricted tostring | number | boolean | object | array | null(nointeger, noint)- Dataset semantics —
kind: datasetis for tabular rows (JSON/JSONL/CSV/Parquet/SQLite) only; for single-file loads usekind: toolwithreadFileSync;writes:MUST be exactly one field - Defensive tool stubs —
oe runMUST succeed before any user wiring; every state read uses?? fallback; the first node populates everything downstream needs from a fixture - Explicit 11-item self-check before returning
Reduced failure rate from "100% need manual YAML fixes on MiniMax-2.7-w8a8" to "schema-clean and runtime-mostly-clean on first try". The remaining hard case is cross-field consistency (
writes:matchingstate.schemanames) — best solved by auto-retry on validation failure, planned for the next release. - Top-level shape rule —
-
The clone destination for subpath-based
gh:installs uses the last meaningful path segment as the name, sogh:org/monorepo/examples/xandgh:org/monorepo/examples/yco-exist in.openexpertise/experiences/x/and…/y/instead of colliding.
Fixed
oe validate <non-existent-path>now prints a structuredexperience.yaml not found at <path>message instead of a bareENOENTpropagating from the file-system read. Matches the error style of every other command. (Reported by the v0.1.3 patch sweep.)oe install gh:owner/repo/subpath/pathnow parses the trailing path components as a subpath instead of silently dropping them.gh:jane/monorepo/examples/digest@v0.2.0clonesjane/monorepoatv0.2.0and installs onlyexamples/digest/into.openexpertise/experiences/digest/. (Sweep finding #2.)