Skip to content

v0.4.0

Choose a tag to compare

@matt-cochran matt-cochran released this 16 Oct 14:19
· 61 commits to main since this release
1e68d5d

Added

  • junior doctor reports companion agent-skill readiness as companionSkills:
    each skill is present, missing, modified, unknown or not_installed,
    and an unready one carries a complete junior init --target ... remediation
    command. Skill readiness is reported separately and never gates ok (#39).
  • The Pi guard extension (pi-guard.ts) makes every bash tool call read stdin
    from /dev/null and caps its timeout ten seconds under
    execution.toolTimeoutMs (half the budget below 20s), so a slow command fails
    only that call before Junior's watchdog; a timed-out tool is named in the
    receipt as timedOutTool (#42).
  • execution.maxOutputBytes (1-32 MiB, default 8 MiB) bounds the retained
    worker output; the retained Pi event stream is compacted and oversized tool
    text is written once to tool-output/<toolCallId>.txt behind a head/tail
    marker (#41).
  • execution.continuations (0-3, default 1) starts an automatic fresh-session
    continuation segment after an output-capped segment, writing
    checkpoint-<n>.md and events-<n>.jsonl (#41).
  • junior validate adds non-blocking split warnings for a contract naming more
    than six distinct context paths or more than ten acceptance criteria (#41).
  • The cpm tool's plan.review sees Junior's managed OpenRouter key when no
    explicit key is set, and junior tools inspect reports review-key visibility
    as cpmReview without its value (praxec/cpm-planner#72).

Changed

  • A tool command that is not Junior's managed binary records the version it
    reports through --version (unknown when none) and an empty source SHA,
    instead of a built-in last-known release table that went stale with every
    upstream release.

Fixed

  • Local git excludes are verified with git check-ignore; a pattern Git does
    not apply is reported in unapplied and named in an error instead of being
    recorded as added (#40).
  • isolationSetup provisioning is idempotent in a resumed worktree: an
    existing link that already points at the source is satisfied instead of
    failing with EEXIST, while a link to a different target still fails (resumed
    worktree link fix).