Skip to content

feat(auto-advisor): decision spacing, explicit-call visibility, models rename; bump dev pins - #103

Merged
capyBearista merged 7 commits into
mainfrom
fix/auto-advisor-decision-spacing
Nov 2, 2026
Merged

capyBearista merged 7 commits into
mainfrom
fix/auto-advisor-decision-spacing

Conversation

@capyBearista

@capyBearista capyBearista commented Nov 2, 2026 •

Copy link
Copy Markdown
Owner

Summary

  • Dev pins: @opencode/plugin 2.2.5 and OpenTUI 0.8.0 in every package. These are dev-only (peer ranges unchanged). The built dist/ matches npm @latest apart from Bun's variable renaming, so no changesets for the other packages.
  • auto-advisor, event listener: after a failed read it re-subscribes to the run event stream instead of going silent (the 2.2.5 adapter closes the stream on error).
  • auto-advisor, config rename (breaking, minor): advisor.model → advisor.models, which accepts a string or a list; routing.models also accepts a single string.
  • auto-advisor, Decision spacing: new routing.minStepsBetweenDecisions (default 10). Steps already blocked by the cooldown or budget no longer make a Decision call. This cuts paid-fallback calls while the free decision model is rate-limited.
  • auto-advisor, explicit calls: each advisor() call writes a kind: "explicit" telemetry line, and the review panel shows Last advisor() call: <model> · <seconds> s · <time>.
  • auto-advisor, config format: auto-advisor.json is JSONC.
  • Docs: README config sections in the DCP style (where the file goes, plus collapsible defaults) for auto-advisor, ram-monitor, output-styles and adversarial-review. A test checks the auto-advisor defaults block against DEFAULTS.

Verification

  • bun run typecheck, bun run lint, bun run test (all 7 packages; auto-advisor 222 pass) and bun run build all pass at ae18653.
  • Built-entry smoke at ae18653: bun run smoke passes for auto-advisor, output-styles, ram-monitor and adversarial-review. agents-loader and double-tap-timeline have no smoke script; their built entries load through the package entry and export a V2 Plugin.define (id + setup), but setup was not run against a host.
  • Live in OpenCode 2.2.5:
    • Telemetry shows Decision calls at steps 1/11/21, and across turns (counted from the session DB).
    • The panel line showed the answering Advisor model.
    • An explicit call cancelled with Esc was logged with outcome: "error" and the attempt error "the consultation was cancelled".

Not verified

  • The OpenTUI 0.8.0 TUIs (timeline, ram-monitor, output-styles) were not live-checked.
  • Esc during an automatic review was not live-checked.
  • A real event-stream failure was not live-checked.

Follow-ups


Devin Review

…y package

@opencode/plugin 2.2.0 peers OpenTUI at exactly 0.7.0 and 2.2.5 peers >=0.8.0,
so the two move together. 2.2.5 ships OpenTUI 0.8.0 (0.8.1 came after it).
Dev pins stay identical across packages so Dependabot keeps one target; peer
ranges are unchanged.
Context: the OpenCode adapter closes an event stream on a failed read, so the
listener that drops stale consults ended for good. It now re-subscribes after
RESUBSCRIBE_MS and stops only on done (plugin unload). The fake stream in the
server tests closes on error like the real adapter; AGENTS.md gotcha updated.
Both model chains now share one shape: a single provider/model string or an
ordered list. routing.models gains the single-string form. The old key is
rejected as unknown.
… steps

Context: since 2026-11-01 Zen rate-limits jev-1.13-free, and the 60 s skip
sent 86% of decisions to the paid fallback; 28% of calls ran on steps a limit
already blocked. routing.minStepsBetweenDecisions (default 10) spaces calls
across the session, and blocked steps log a line without calling. The server
test harness now writes a base config that decides on every step.
… JSONC config

Explicit advisor() calls now write a kind: "explicit" telemetry line with every
Advisor model tried, and the review panel names the model that answered the last
one. auto-advisor.json accepts comments and trailing commas (Bun.JSONC), and the
README shows the full default configuration, checked against DEFAULTS by a test.
@capyBearista

Copy link
Copy Markdown
Owner Author

/devin review

@devin-ai-integration

Copy link
Copy Markdown

Starting Devin Review.

Devin Review

devin-ai-integration[bot]

This comment was marked as resolved.

…ry explicit consult

The timeline crashed on kind: "explicit" telemetry lines (no verdict) and let
them take the next step's messages; it now shows each call as its own one-line
row. An explicit call that failed before the Advisor chain ran (invalid config,
failed history read) wrote no telemetry line; every call past the refusals now
logs exactly once, and any Advisor record where no model answered carries
advisor.error. Explicit ms measures the Advisor only, like automatic consults.
@capyBearista

Copy link
Copy Markdown
Owner Author

/devin review

@devin-ai-integration

Copy link
Copy Markdown

Starting Devin Review.

Devin Review

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Devin Review found 1 new potential issue.

Devin Review

@capyBearista

Copy link
Copy Markdown
Owner Author

/devin review

@devin-ai-integration

Copy link
Copy Markdown

Starting Devin Review.

Devin Review

@capyBearista
capyBearista merged commit cbd733f into main Nov 2, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant