SpecBridge v0.6.1: Gemini CLI, OpenAI-compatible, and Antigravity adapters#7
Merged
Merged
Conversation
…pters Adapter expansion against the frozen v0.6.0 runner contract (additive-only contract changes: optional AgentRunner.declaredSupportLevel and new AgentRunnerKind values; all v0.6.0 snapshot tests pass unchanged). - Gemini CLI adapter: token-probe detection (no inference, no login), plan-mode/read-only-allowlist authoring, capability-gated auto_edit task execution (no arbitrary shell; YOLO rejected at three layers), explicit-UUID resume with session-identity verification, thought-event redaction. - OpenAI-compatible authoring adapter: chat-completions and responses API styles, explicit structured-output modes (json-schema / json-object / strict-json-prompt) with complete-response validation and opt-in-only fallback, env-var-NAME credentials with full value redaction, bounded redirects that never forward Authorization across origins and reject HTTPS downgrades. Authoring only; task execution rejected before any request. - Experimental Antigravity CLI adapter: executable/version/documented- capability detection and diagnostics only; no PTY/TUI automation exists (enforced by tests); never production, never selected automatically. - Read-only MCP runner diagnostic tools (runner_list, runner_show, runner_doctor, runner_matrix) over the shared runner services; the capability matrix moved to one shared implementation for CLI, MCP, and docs. - Ninth plugin skill /specbridge:runners (MCP-diagnostics-driven, read-only, no provider invocation). - Config schema v2 profile variants (all new profiles default disabled; migration never enables a provider), fake Gemini/Antigravity executables and a fake OpenAI-compatible server for offline CI, provider docs, and version bump to 0.6.1. 910 tests pass; plugin validation and isolated bundle verification pass; CLI smoke suites pass end-to-end against fake providers.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What changed
v0.6.1 is an adapter expansion release against the frozen v0.6.0 runner platform — no core redesign, no parallel contracts or registries. All v0.6.0 contract snapshot tests pass unchanged; the only contract changes are additive (optional
AgentRunner.declaredSupportLevel, newAgentRunnerKindvalues).Gemini CLI adapter (
gemini-cli, built-in profilegemini-default)--version/--helponly): no model request, no login, no trusted-folder change; authentication honestlyunknownwith arunner test --networkpath.auto_edit+ (tool allowlist or sandbox). An installation that cannot prove the bounded edit policy keeps safe authoring while execution is refused before invocation, with the exact gap and compatible claude-code/codex-cli suggestions. YOLO is impossible at three layers (schema enums + config-wide fragment rejection, argv assembly, pre-spawn assertion); shell tools are excluded from every allowlist.latest/index); a session-identity mismatch is reported, never claimed as a successful resume.thoughtevents are redacted from normalized events and retained output.OpenAI-compatible authoring adapter (
openai-compatible, built-inopenai-compatible-local)json-schema,json-object,strict-json-prompt) with complete-response Zod validation in every mode (no fences, no substring extraction, no silent repair) and an opt-in-only, warned downgrade.Experimental Antigravity adapter (
antigravity-cli, built-inantigravity)--version/--help, so accidental TUI automation fails tests.Platform integration
runner_list/runner_show/runner_doctor/runner_matrixover the shared runner services; the capability matrix moved to one shared implementation feeding CLI, MCP, README, and docs identically (asserted by test)./specbridge:runners(MCP-diagnostics-driven, read-only, no provider invocation, no login, no config edits); plugin bundle revalidated in isolation.Small pre-existing fix
runner conformanceprinted "production confirmed" from check counts alone; it now respectsproductionConfirmed, so a passing experimental adapter is no longer mislabeled.Why
Completes roadmap Phase P: keep
.kirospecs usable with more agents/models under the same capability-driven safety model — provider claims stay non-authoritative, Git evidence + trusted verification decide task completion, and no new provider weakens the permission, evidence, structured-output, or endpoint-security requirements.Verification
pnpm lint/pnpm typecheck: passpnpm test: 910/910 (baseline 772; +138 new tests: adapters, execution-level orchestration, MCP tools, plugin, selection, security scans)pnpm build,pnpm build:plugin,pnpm validate:plugin(9 skills, versions 0.6.1),pnpm verify:plugin-bundle(8/8 isolated checks): passnode scripts/smoke.mjs: 34/34Reviewer notes
docs/runner-adapter-contract.md+ CHANGELOG;tests/runners/contracts.test.tsis untouched.tests/runners/security-v061.test.tsencodes the release's security searches (no YOLO argv, no PTY deps, no credential-file reads, single env-var access, read-only MCP wiring).--yolo,danger-full-access) appear only in prohibition lists, assertions, docs, and negative-test fixtures.