Skip to content

v0.13.0

Choose a tag to compare

@github-actions github-actions released this 23 Sep 11:53
· 24 commits to master since this release
db26b26

Fixed

  • --help (-h) and --version now exit 0 with no
    ok:false JSON document when combined with --json on query, search,
    list-repos, or expand. Previously commander's own successful
    help/version exit was caught by the same --json error handler as a real
    error, printing an {"ok": false, "error": {"message": "(outputHelp)"}}
    (or the version string, respectively) document and exiting 1. A real
    error in --json mode (an unknown option, a missing argument) is
    unaffected and still produces that document with a nonzero exit (task
    53112c27).

Added

  • Every LLM constructor (Anthropic, OpenAI, and the openai-compatible/
    ollama lane) now sets a request timeout from the new
    ORACLE_LLM_TIMEOUT_MS env var (default 120000ms, chosen to cover a cold
    local Ollama model's load plus a full non-streaming generation) and a
    fixed maxRetries: 0, plus a matching overall deadline wrapped around the
    whole chain.invoke() call so a server that sends response headers and
    then stalls the body is also bounded, not just a fully unreachable
    endpoint. An unreachable or unresponsive LLM endpoint now falls back to
    raw retrieved context within that bound instead of hanging (previously a
    closed local port could take over 70 seconds to surface as a failure).
    With retries disabled, a single transient provider error (429/5xx/529) is
    no longer retried and now falls back to degraded: true immediately
    instead of after LangChain's own multi-attempt backoff. See
    docs/configuration.md and README.md for the default and its reasoning
    (task 844aac2c).
  • --json success documents for query, search, and list-repos now
    carry "ok": true (additive; expand already had it). query --json
    additionally marks an LLM-failure fallback to raw retrieved context with
    "degraded": true and "degradedReason": "llm_request_failed", while
    staying ok: true and exiting 0; the README's --json contract
    section documents keys, ok, degraded, and exit status per command in
    one place (task df880cbc).
  • Two release guards: a vitest unit test fails when CHANGELOG.md's first
    ## [x.y.z] - date heading differs from package.json's version, and
    release.yml's changelog-extraction step (scripts/extract-changelog-notes.sh)
    fails with an explicit message when no release notes are found for the
    tagged version. The tag-derived version is now passed to the extraction
    program as a positional argument rather than interpolated into the awk
    program text.

Changed

  • A set-but-invalid ORACLE_LLM_TIMEOUT_MS (non-numeric, zero, negative,
    non-integer, or above 2147483647) now fails config loading for every
    command, including index and MCP server startup, with the same
    fail-loud contract as ORACLE_MAX_FILE_SIZE; unset or empty uses the
    default. With LLM retries disabled, a single transient provider error
    (429/5xx/529) falls back to degraded: true immediately.