Skip to content

v0.98.0

Choose a tag to compare

@github-actions github-actions released this 08 Jul 16:41

What's Changed

  • fix(exec-runner): feed stdin concurrently so a large input cannot deadlock by @ThibautMelen in #256
  • feat(check): native-first β€” the check names the native path by @ThibautMelen in #258
  • docs(pack): surgical vendor β€” provider count catches canon (16) by @ThibautMelen in #259
  • fix(ci): the coherence bot's openvsx probe points at the real extension by @ThibautMelen in #260
  • feat(nika-builtin): fetch vNext β€” form Β· multipart Β· bounded traverse by @ThibautMelen in #257
  • feat(nika-cli): wizard wow β€” the conversation speaks the display seam by @ThibautMelen in #261
  • fix(nika-catalog): declare fetch traverse β€” the merged binary refused every crawl by @ThibautMelen in #263
  • fix(nika-cli): wizard coherence β€” never promise what the file doesn't carry by @ThibautMelen in #266
  • fix(nika-cli): the night batch β€” the why reaches the operator by @ThibautMelen in #265
  • feat(cost): cost intelligence β€” provenance, cache-aware math, agent split, budget guard by @ThibautMelen in #271
  • fix(nika-mcp): a dirty check is isError:true β€” the repair loop must trigger by @ThibautMelen in #270
  • fix(nika-builtin): fetch vNext hardening β€” the crawl stops leaking, over-reading, truncating by @ThibautMelen in #272
  • fix(nika-cli): the budget's unbounded warning names each reason, not the fixed disjunction by @ThibautMelen in #273
  • docs(nika-cli): --max-cost-usd help names its three real limits at the point of use by @ThibautMelen in #274
  • fix(nika-cli): the wizard's hand-off commands survive a spaced filename by @ThibautMelen in #275
  • fix(nika-cli): the wizard escapes user strings into YAML by @ThibautMelen in #276
  • test(nika-cli): the own-corpus law is a ratchet β€” every template audits clean by @ThibautMelen in #277
  • fix(nika-schema): native-first rule 004 gets the bare-head guard its siblings have by @ThibautMelen in #278
  • fix(nika-schema): check catches an out-of-range max_turns β€” audit before run by @ThibautMelen in #279
  • feat(check): schema-portability hint β€” the grammar-blind keywords named by @ThibautMelen in #262
  • fix(providers): openai strict rejects not/allOf β€” strip and flatten at the wire by @ThibautMelen in #267
  • feat(verb-infer): retry-loop economics β€” numbered repair list + truncation fast-fail by @ThibautMelen in #268
  • feat(providers): gemini rides responseJsonSchema β€” the OpenAPI converter dies by @ThibautMelen in #269
  • feat(nika-cli): the scaffolded agents.md teaches the live clap tree by @ThibautMelen in #281
  • feat(providers): anthropic native structured output β€” output_config.format by @ThibautMelen in #264
  • fix(nika-schema): a compact block-sequence bomb no longer aborts the process (CRITICAL) by @ThibautMelen in #282
  • fix(providers): capability is a PROVIDER fact β€” deepseek has no json_schema by @ThibautMelen in #283
  • test(nika-cli): pty e2e β€” the wizard conversation gets executable coverage by @ThibautMelen in #285
  • fix(nika-schema): check catches for_each over a typed non-array var β€” audit before run by @ThibautMelen in #284
  • test(nika-cli): pty hardening β€” raii dirs, transcript tee, the third door by @ThibautMelen in #289
  • chore(ci): public-api baseline β€” Profile::supports_response_format joins by @ThibautMelen in #290
  • feat(verb-infer): the coercion ladder β€” SAP-lite repair before a paid retry by @ThibautMelen in #280
  • fix(nika-cli): the runtime honors the documented key ladder β€” NIKA_ prefix wins by @ThibautMelen in #286
  • feat(doctor): the health surface names the instruction-fallback clouds by @ThibautMelen in #287
  • feat(cost): billed-then-failed spend reaches the frame, the totals, and the budget gate by @ThibautMelen in #288
  • docs(adr): ratify ADR-094 β€” FCI-004 reserved-core catches the D4 taxonomy by @ThibautMelen in #292
  • fix(nika-types): cost.rs imports String from alloc β€” the no_std powerset holds by @ThibautMelen in #297
  • fix(nika-providers): gpt-5/o-series budget key β€” max_completion_tokens on the openai wire by @ThibautMelen in #294
  • feat(nika-schema): exec-json-capture hint β€” capture stdout when bindings parse it by @ThibautMelen in #295
  • feat(nika-lsp): hostile-input hardening β€” the #282 bomb served, mid-char offsets floored by @ThibautMelen in #296
  • fix(nika-runtime): bind the envelope env namespace β€” a green check must run by @ThibautMelen in #293
  • feat(nika-cli): nika welcome + nika explain β€” the 30-seconds narrative layer by @ThibautMelen in #298
  • test(scripts): Rail C β€” the live structured-output battery (P0) by @ThibautMelen in #299
  • feat(nika-tmpl): admit to workspace β€” the ONE ${{ }} island lexer, all 12 gates passed by @ThibautMelen in #302
  • feat(lsp): $/cancelRequest β€” stale requests die before they compute by @ThibautMelen in #303
  • feat(nika-cli): the long-tail hatch gets its surface β€” NIKA__BASE_URL for clouds by @ThibautMelen in #304
  • feat(nika-pck-manifest): admit to workspace β€” all 12 gates passed (42/42) by @ThibautMelen in #306
  • feat(nika-cli): the mirror speaks the colour seam β€” and shows the language by @ThibautMelen in #305
  • chore(release): v0.98.0 β€” structured output goes native, the checker closes its gaps by @ThibautMelen in #307

Full Changelog: v0.97.0...v0.98.0

MCP bundles (added 2026-07-10)

The read-only MCP oracle now ships as one-click .mcpb bundles next to the
tarballs β€” nika-mcp-macos-arm64-0.98.0.mcpb Β· nika-mcp-linux-x64-0.98.0.mcpb,
checksums in MCPB.sha256. Manifest 0.2, server.type: binary, entry
server/nika with args: [mcp] β€” packed from the checksum-verified release
binaries and introspection-probed from the unpacked bundle before publish.
Wiring guide: https://github.com/supernovae-st/nika-agents/tree/main/integrations/mcp