llm-cli-gateway 1.6.0 → 1.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,102 @@
2
2
 
3
3
  All notable changes to the llm-cli-gateway project.
4
4
 
5
+ ## [1.6.1] - 2026-05-26 — docs-only follow-up to 1.6.0
6
+
7
+ Pure documentation release; zero source-code changes since 1.6.0.
8
+
9
+ ### Changed — agent-install guidance current with v1.6.0 + five providers
10
+
11
+ - New `setup/providers/mistral-vibe.md` provider snippet (Mistral was the
12
+ fifth provider but had no setup/providers/ page; install agents had
13
+ nothing to point at when the user asked for Mistral coverage).
14
+ - New `setup/assistants/mistral-install-prompt.md` per-assistant install
15
+ prompt (mirrors the Grok prompt; outbound-only framing,
16
+ session_logging walk-through, `VIBE_ACTIVE_MODEL` guidance, secret-
17
+ safety rules preserved).
18
+ - `setup/assistants/ASSISTANT_CONTRACT.md`: Mistral added to "Applies
19
+ to" and outbound providers; new "Doctor Report Notes (v1.6.0)"
20
+ paragraph clarifying that the `cache_awareness` block is structural
21
+ (always present) and that all `[cache_awareness]` flags default off.
22
+ - All 6 per-assistant install prompts (universal, chatgpt, claude,
23
+ codex, gemini, grok) extended to enumerate all five providers and
24
+ reference the cache_awareness doctor block.
25
+ - `setup/install-plan.dag.toml` choose-targets / check-diagnostics /
26
+ apply-client-snippet steps generalised to all five providers; Mistral
27
+ named outbound-only; cache_awareness must-not-treat-as-blocker note
28
+ added inline. TOML re-validated.
29
+ - 6 `docs/personal-mcp/connect-*.md` legacy pages now carry an
30
+ admonition pointing to `setup/providers/` + `ASSISTANT_CONTRACT.md`
31
+ as canonical.
32
+
33
+ ### Changed — 12 SKILL.md files current with v1.6.0
34
+
35
+ - All 12 skills (7 under `skills/`, 5 under `.agents/skills/`) extended
36
+ with `promptParts`, `cache_state://` MCP resources, and (where the
37
+ skill's centre of gravity is session continuity) the
38
+ `cache_ttl_expiring_soon` warning. Depth tiered by skill audience:
39
+ multi-llm-orchestration, model-routing, multi-llm-consensus,
40
+ implement-review-fix, multi-llm-review, async-job-orchestration,
41
+ session-workflow, secure-orchestration carry full sections or
42
+ examples; agent-codex-gate, codex-review-gate, design-review-cycle,
43
+ red-team-assessment carry tip-level mentions.
44
+ - Plugin-namespaced skills (`.agents/skills/*`) version-bumped 1.5 → 1.6.
45
+ - Exact runtime strings cross-checked against `src/index.ts` (the
46
+ `provide exactly one of …` / `one of … is required` mutex errors and
47
+ the `cache_ttl_expiring_soon` warning code).
48
+
49
+ ### Fixed — README / BEST_PRACTICES / integrations doc drift
50
+
51
+ - README.md: headline + Core Capabilities now name Mistral as the fifth
52
+ provider; test counts 284 / 221 → 681; new Supply-chain hardening
53
+ call-out under Security & Quality.
54
+ - BEST_PRACTICES.md: testing coverage / performance lines 284 → 681.
55
+ - integrations/llm-plugin/README.md: Grok + Mistral added to providers
56
+ list, usage examples, and the "at least one of" requirements list.
57
+ - ENFORCEMENT.md: self-enforcement checklist provider list now Claude /
58
+ Codex / Gemini / Grok / Mistral.
59
+
60
+ ### Fixed — `docs/launch/blog-cache-awareness.md` accuracy + voice
61
+
62
+ Technical corrections from the multi-LLM voice + technical review:
63
+ - Mutually-exclusive error-string quotation reformatted so the
64
+ ``provide exactly one of `prompt` or `promptParts``` example renders
65
+ correctly in markdown.
66
+ - `lastWriteAt` references corrected to `lastRequestAt` (the actual
67
+ public field name on `SessionCacheStats`).
68
+ - Security tools sentence rewritten: separates SHA-pinned actions,
69
+ version-pinned Python/Go tools, and the SHA256-verified gitleaks
70
+ binary; clarifies that `eslint-plugin-security` runs via the existing
71
+ eslint config (not security.yml); replaces the inaccurate "Top-level
72
+ `permissions: contents: read` on every workflow" claim with the
73
+ accurate least-privilege phrasing.
74
+ - "Signed installer artefacts" → "SHA256-verifiable installer artefacts"
75
+ (no signing today); npm note adds the sigstore-provenance context.
76
+ - Haiku 3.5 Vertex 2048 caveat added: the in-code alias table
77
+ conservatively collapses all Haiku variants to 4096.
78
+ - Solorigate / Codecov / xz now link separately.
79
+ - Codex smoke-test evidence now links to
80
+ `docs/personal-mcp/PROVIDER_CACHE_SURFACES.md` and the CHANGELOG.
81
+ - Three broken links surfaced by lychee CI fixed: Mistral Vibe URL,
82
+ bare CLAUDE.md link (the file lives outside the gateway repo), and
83
+ the agent-assurance exclude regex tightened to match bare URLs.
84
+
85
+ ### Fixed — `socket.yml` networkAccess false-positive documentation
86
+
87
+ - Documented that the `globalThis["fetch"]` flag on `dist/index.js` /
88
+ `dist/job-store.js` is a substring-match false positive. Neither file
89
+ contains any actual fetch call; the matches are English-prose
90
+ occurrences in an error message, the `fetchWith` JSON field name, and
91
+ a code comment. Verified by sub-agent investigation, no code change
92
+ required, no attack-surface delta vs 1.5.35.
93
+
94
+ ### Fixed — `lychee.toml` exclusions
95
+
96
+ - Added `https://npmjs.com/`, `https://help.openai.com/`, and bare
97
+ `github.com/verivus-oss/agent-assurance` URLs to the exclude list
98
+ (each is a Cloudflare bot-blocked / private host that returns
99
+ 4xx/5xx to anonymous CI requests). Rationale documented inline.
100
+
5
101
  ## [1.6.0] - 2026-05-26 — cache-awareness phase 1 + security posture
6
102
 
7
103
  Also includes (beyond cache-awareness):
package/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  > *"Without consultation, plans are frustrated, but with many counselors they succeed."*
4
4
  > — Proverbs 15:22 (LSB)
5
5
 
6
- A Model Context Protocol (MCP) server providing unified access to Claude Code, Codex, Gemini, and Grok CLIs with session management, retry logic, and async job orchestration.
6
+ A Model Context Protocol (MCP) server providing unified access to Claude Code, Codex, Gemini, Grok, and Mistral (Vibe) CLIs with session management, retry logic, and async job orchestration.
7
7
 
8
8
  ## Personal MCP Appliance MVP
9
9
 
@@ -79,7 +79,7 @@ docker compose -f docker-compose.personal.yml run --rm doctor
79
79
  ## Features
80
80
 
81
81
  ### Core Capabilities
82
- - **Multi-LLM Orchestration**: Unified interface for Claude Code, Codex, Gemini, and Grok CLIs
82
+ - **Multi-LLM Orchestration**: Unified interface for Claude Code, Codex, Gemini, Grok, and Mistral (Vibe) CLIs
83
83
  - **Session Management**: Track and resume conversations across all CLIs with persistent storage
84
84
  - **Token Optimization**: Automatic 44% reduction on prompts, 37% on responses (opt-in)
85
85
  - **Correlation ID Tracking**: Full request tracing across all LLM interactions
@@ -127,12 +127,12 @@ Opt-in flags (all default off) live under `[cache_awareness]` in `~/.llm-cli-gat
127
127
  - **Long-Running Jobs**: Non-time-bound async execution via `*_request_async` + polling tools
128
128
 
129
129
  ### Security & Quality
130
- - **Comprehensive Testing**: 284 tests covering unit, integration, and regression scenarios
130
+ - **Comprehensive Testing**: 681 tests covering unit, integration, and regression scenarios with real CLI execution
131
131
  - **Input Validation**: Zod schemas prevent injection attacks
132
132
  - **No Secret Leakage**: Generic session descriptions only (file permissions 0o600)
133
133
  - **No ReDoS**: Bounded regex patterns prevent catastrophic backtracking
134
134
  - **Type Safety**: Strict TypeScript with comprehensive error handling
135
- - **221 Tests**: Unit, integration, and regression tests with real CLI execution
135
+ - **Supply-chain hardening**: a dedicated `.github/workflows/security.yml` runs actionlint, zizmor, shellcheck, typos, osv-scanner, gitleaks, ruff, bandit, and lychee on every push and PR (see `SECURITY.md` for the threat model)
136
136
 
137
137
  ## Prerequisites
138
138
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "llm-cli-gateway",
3
- "version": "1.6.0",
3
+ "version": "1.6.1",
4
4
  "mcpName": "io.github.verivus-oss/llm-cli-gateway",
5
5
  "description": "MCP server providing unified access to Claude Code, Codex, Gemini, Grok, and Mistral Vibe CLIs with session management, retry logic, async job orchestration, durable job results, and cross-LLM validation.",
6
6
  "license": "MIT",
package/socket.yml CHANGED
@@ -14,6 +14,25 @@ version: 2
14
14
  # src/endpoint-exposure.ts also issues a HEAD probe when verifying
15
15
  # tunnel reachability — opt-in via the start:http entry point only.
16
16
  #
17
+ # Additionally, Socket may flag `dist/index.js` and `dist/job-store.js`
18
+ # against the `globalThis["fetch"]` rule. This is a substring-match
19
+ # false positive (verified for v1.6.0 by sub-agent investigation on
20
+ # 2026-05-26; same matches exist in v1.5.35). Neither file contains
21
+ # any `fetch(`, `globalThis.fetch`, polyfill import, or any other
22
+ # network-call construct. The matches are:
23
+ # - dist/index.js — the English word "fetch" inside an async-defer
24
+ # error message ("Poll with llm_job_status, fetch with
25
+ # llm_job_result.") AND the JSON field name `fetchWith:
26
+ # "llm_job_result"` (part of the deferred-job response contract).
27
+ # - dist/job-store.js — the word "fetch" inside a code comment on
28
+ # markOrphanedOnStartup() describing how callers retrieve partial
29
+ # output from SQLite.
30
+ # Verify with: `grep -rEn "\bfetch\(|globalThis\.fetch|globalThis\[" dist/`
31
+ # — returns empty. Production code does not import undici / node-fetch
32
+ # / axios / got. The cache-awareness slice (v1.6.0) introduced zero
33
+ # new network surfaces; all I/O is filesystem (SQLite, sessions.json)
34
+ # or in-process.
35
+ #
17
36
  # shellAccess
18
37
  # src/executor.ts uses child_process.spawn(cmd, args, { ... }) with a
19
38
  # fixed allow-list of CLI binaries (claude / codex / gemini / grok /