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 +96 -0
- package/README.md +4 -4
- package/package.json +1 -1
- package/socket.yml +19 -0
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
|
|
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
|
|
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**:
|
|
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
|
-
- **
|
|
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.
|
|
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 /
|