Skip to content

Stratos v0.0.17

Choose a tag to compare

@github-actions github-actions released this 14 Jun 15:07
· 20 commits to main since this release
v0.0.17
bf2b26c

Added — schema-driven regression suite (Phase 0 follow-up)

  • 50 new regression tests across three new files that pin the public surface as a contract:
    • test/v017-regression-manifest.test.mjs (15 tests) — schema/MCP_TOOLS/EX/error_types/exports cross-reference. Catches drift where a new command is added without updating one of the four parallel registries. Every EX.* code must be referenced somewhere; every MCP_TOOLS entry must map to a known command verb; every error_types.retryable bit is the documented contract.
    • test/v017-regression-cli-smoke.test.mjs (20 tests) — stratos help <cmd> and stratos <cmd> --help exit cleanly for every command in KNOWN_COMMANDS. Subcommand routers reject unknown subcommands with EX.USAGE. stratos completion <shell> renders for bash/zsh/fish/powershell. stratos explain works for every EX value, the documented symbolic aliases, and common HTTP statuses. stratos halth produces a Levenshtein "did you mean health" suggestion.
    • test/v017-regression-output-matrix.test.mjs (15 tests) — every documented --output format (json, ndjson, jsonl alias, yaml, csv, table) renders against a mock server for both single-object and list bodies. --json is verified as a shorthand for --output json. --filter jq pipeline works on single-line expressions.

Fixed

  • stratos help <cmd> now works for every command in KNOWN_COMMANDS, not just the ~24 with curated entries in HELP_BY_COMMAND. Falls back to a synthesised stratos <cmd>\n <summary>\n Exit codes: <list> from COMMAND_META when no hand-tuned entry exists. Closes the "stratos help stats / audit / analytics / ask / search / upgrade / logout / stream / pipeline / passkey returns EX.USAGE" surface that the regression suite caught on first run.
  • --filter now handles all jq output shapes. applyFilter() parses each line of jq's stdout as an independent JSON value, so filters that produced pretty-printed multi-line single documents (e.g. {status, edge}) used to fail with "jq produced non-JSON output". Fixed by passing -c (compact) to jq — every line is now a complete JSON document, so single values, stream-style outputs (.[].id), and object projections ({a, b}) all work uniformly. Single-line expressions and per-line streams were already working; this just closes the multi-line gap. Discovered by the v017 regression-output-matrix suite on first run.
  • Bumps EXPECTED_SHA in install/install.{sh,ps1} to match the v0.0.17 bytes.