Skip to content

Project Tango v3.0.0 — modular restructure, scoped tools, quality gates

Choose a tag to compare

@CoderGamerUnknow CoderGamerUnknow released this 04 Oct 09:39
· 17 commits to main since this release

What's new in v3.0.0

A full restructure of the server plus two long-requested tool capabilities — every change verified by the suite and by an end-to-end run against the built server.

Tools

  • Real category scoping — get_low_stock_alerts, analyze_sales_metrics and smart_restock_predictor accept an optional category and echo the filter they actually applied. The weekly_inventory_review prompt now scopes every step it sequences (the old "only step 1 is scoped" disclaimer is gone with the gap it covered).
  • find_orders bounding — new optional limit returns the newest N matches while totalMatches always reports the full match count. The default stays deliberately uncapped: no pagination, nothing dropped.
  • Honest responses throughout: blank arguments echo back as null, zero matches are successes, and tool descriptions interpolate their policy values and tool names so prose cannot drift from code.

Architecture

  • createServer(dataProvider) — the whole MCP surface (8 tools, 1 prompt, 1 resource) takes its DataProvider as an argument; index.ts is a thin stdio bootstrap. The seam is exercised in-process against stub providers.
  • Split into focused modules: server.ts, reviewPrompt.ts (pure prompt renderer), responses.ts, toolNames.ts, alongside the existing analytics split.

Correctness

  • Cross-process safe state writes: per-write temp files so two writers can never publish a torn state.json, with cleanup on failed rename; a two-writer race is pinned by test.
  • The README's dataset figures (130 matches / 142 orders / 46 KB) are asserted against live data by docs.test.ts.

Quality gates

  • 204 tests / 42 suites / 0 fail, coverage 99.96% lines / 96.16% branches / 98.17% functions enforced by floors (98/94/96).
  • Type-aware ESLint with zero suppressions; GitHub Actions CI runs typecheck → lint → coverage floors → README test-count drift check → build (all green on this commit's pipeline).
  • TypeScript 6.0.3 (typescript-eslint does not support the TS 7 API yet; typecheck remains clean).

Upgrade notes

No breaking changes. All new input parameters are optional and response fields (filters, totalMatches, limit) are additive — existing clients keep working unchanged.


Full changelog: v2.0.0...v3.0.0