Skip to content

Releases: GCS-ZHN/mcp-sentinel

v1.2.0

Choose a tag to compare

@github-actions github-actions released this 16 Aug 00:26

Changes

345ca49 chore: bump lockstep version to 1.2.0

Full Changelog: v1.1.0...v1.2.0

v1.1.0

Choose a tag to compare

@github-actions github-actions released this 15 Aug 12:16

Changes

26f6605 chore: bump lockstep version to 1.1.0

Full Changelog: v1.0.0...v1.1.0

v0.4.1

Choose a tag to compare

@github-actions github-actions released this 28 Jul 12:56

Bug Fixes

  • Session expiry reconnection (#1): MCP Streamable HTTP sessions that expire (HTTP 404 "Session not found") now trigger automatic reconnection. The dead client is evicted from the connection cache, a fresh transport is created, and the failed tool call is retried exactly once. Previously, expired sessions caused the sentinel to fail permanently with no recovery path.

    Per the MCP Streamable HTTP spec § Session Management, clients MUST re-initialize when receiving HTTP 404 with a session ID. The @modelcontextprotocol/sdk throws StreamableHTTPError on 404 but does not auto-reconnect — this plugin now fulfills that obligation.

Features

  • Resilient reconnection: callTool handles transient network errors (ECONNREFUSED, ECONNRESET, ETIMEDOUT, fetch failed) and server faults (5xx) by reconnecting and retrying once.
  • Concurrency safety: getOrCreateClient uses promise-sharing to deduplicate concurrent connection attempts. A WeakMap fallback prevents the second concurrent poll from failing when another poll already evicted the dead client — critical for multi-session environments.
  • Mock server HTTP mode: tests/mock-mcp-server.ts --transport=http supports Streamable HTTP with configurable session expiry for integration testing.

Internal

  • Full TSDoc/JSDoc comments on all 9 source modules
  • 84 tests, typecheck + build green

Full Changelog: v0.4.0...v0.4.1

v0.4.0

Choose a tag to compare

@github-actions github-actions released this 26 Jul 05:58

Features

  • pollLog FIFO cap: SENTINEL_MAX_POLL_LOG env var limits per-task poll history entries. Oldest trimmed first. Unset/zero/negative = unlimited.
  • Task TTL auto-cleanup: SENTINEL_TASK_TTL_MS env var auto-removes completed/errored/cancelled tasks from memory after N ms. Unset/zero/negative = never cleanup.
  • Structured logging: All sentinel events (poll, error, timeout, completion, cancel, cleanup) now emit to opencode log via client.app.log() at debug/info/warn/error levels. Log failures are non-fatal.

Internal

  • New src/services/sentinel-config.ts for env var parsing
  • New src/services/logger.ts wrapping opencode client.app.log()
  • cleanup() now clears both interval timers and TTL timeout timers
  • 69 unit tests (up from 47) covering config, logger, and TTL integration
  • E2E testing framework: 3-group concurrent pty_spawn tests with prompt templates in AGENTS.md
  • README updated with environment variable configuration section

Full Changelog: v0.3.2...v0.4.0

v0.3.2

Choose a tag to compare

@github-actions github-actions released this 25 Jul 15:41

Bug Fixes

  • Runtime guards for numeric rangesinterval is now clamped to a minimum of 1000ms in the handler (prevents setInterval flooding when schema validation is bypassed)
  • timeout semanticstimeout=0 or negative is now treated as "no limit" (infinite wait), timeout>0 is clamped to a minimum of 5000ms. Previously timeout=0 could trigger an immediate timeout
  • mcp_sentinel_attach timeout — same timeout=0 → no limit semantics applied to the attach tool

Schema Changes

  • timeout parameter in mcp_sentinel_poll and mcp_sentinel_attach: .min() relaxed to 0 (handler enforces semantics: 0 = no limit, >0 = min 5000ms)

Testing

  • E2E test prompts added to tests/e2e-test-prompts.md — 15 test scenarios covering normal flow, error handling, numeric edge cases, and pagination

Install

opencode plugin -g opencode-mcp-sentinel

v0.3.1

Choose a tag to compare

@github-actions github-actions released this 25 Jul 14:19

Bug Fixes

  • Version management — MCP client version now reads from package.json at compile time instead of hardcoded string, ensuring release version always matches
  • MCP error extraction — raw MCP error responses now extract text content cleanly instead of JSON.stringify on the array, preserving field names like path: ["job_id"] for debugging
  • Input validation — all tools now validate inputs strictly: empty strings rejected, JSON parse errors caught, until validated as object type, startSentinel wrapped in try/catch
  • mcp_sentinel_status fallbackaction parameter now defaults to "status", switch has default case returning error string (was silently returning undefined)
  • Mock CI serverinputSchema upgraded to z.object({...}).strict() to reject unknown parameters with proper MCP error codes

Documentation

  • AGENTS.md — comprehensive development standards: core error handling principles, input validation patterns, testing requirements, release conventions
  • Explicit authorization required for push/release operations

Install

opencode plugin -g opencode-mcp-sentinel

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 25 Jul 07:13

Breaking Changes

  • Tool rename: poll_mcpmcp_sentinel_poll, poll_statusmcp_sentinel_status, poll_attachmcp_sentinel_attach, poll_readmcp_sentinel_read
  • Status parameter rename: poll_idid in mcp_sentinel_status

Features

  • mcp_sentinel_attach — block agent until sentinel completes, with ctx.abort support
  • mcp_sentinel_read — read raw MCP poll outputs with offset/limit pagination
  • Cancel status — cancelled sentinels now report cancelled instead of completed
  • Mock CI server — 8 stages (init → lint → build → unit-test → integration-test → package → deploy-staging → deploy-prod), 16+ polls for realistic long task simulation
  • Sentinel IDs — ID prefix changed from poll_ to sentinel_

Internal

  • Full rename from poll-* to sentinel-* naming convention (files, types, functions)
  • CI workflow: typecheckbuildtest on PRs
  • Release workflow: added bun test step before publish

Install

opencode plugin -g opencode-mcp-sentinel

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 25 Jul 06:35

Changes

c3a345c release: v0.2.0 — poll_attach blocking wait, long mock server, no default timeout

Full Changelog: v0.1.0...v0.2.0

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 25 Jul 06:11

Changes

d140e0e fix: correct repository url for provenance

Full Changelog: https://github.com/GCS-ZHN/opencode-mcp-sentinel/commits/v0.1.0