@lcv-ideas-software/cross-review 4.0.0
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 +2568 -0
- package/LICENSE +201 -0
- package/NOTICE +26 -0
- package/README.md +208 -0
- package/SECURITY.md +52 -0
- package/dist/scripts/api-streaming-smoke.d.ts +1 -0
- package/dist/scripts/api-streaming-smoke.js +78 -0
- package/dist/scripts/api-streaming-smoke.js.map +1 -0
- package/dist/scripts/runtime-default-smoke.d.ts +1 -0
- package/dist/scripts/runtime-default-smoke.js +88 -0
- package/dist/scripts/runtime-default-smoke.js.map +1 -0
- package/dist/scripts/runtime-smoke.d.ts +1 -0
- package/dist/scripts/runtime-smoke.js +148 -0
- package/dist/scripts/runtime-smoke.js.map +1 -0
- package/dist/scripts/smoke.d.ts +1 -0
- package/dist/scripts/smoke.js +6156 -0
- package/dist/scripts/smoke.js.map +1 -0
- package/dist/src/core/cache-manifest.d.ts +22 -0
- package/dist/src/core/cache-manifest.js +133 -0
- package/dist/src/core/cache-manifest.js.map +1 -0
- package/dist/src/core/caller-tokens.d.ts +32 -0
- package/dist/src/core/caller-tokens.js +240 -0
- package/dist/src/core/caller-tokens.js.map +1 -0
- package/dist/src/core/config.d.ts +9 -0
- package/dist/src/core/config.js +643 -0
- package/dist/src/core/config.js.map +1 -0
- package/dist/src/core/convergence.d.ts +5 -0
- package/dist/src/core/convergence.js +186 -0
- package/dist/src/core/convergence.js.map +1 -0
- package/dist/src/core/cost.d.ts +59 -0
- package/dist/src/core/cost.js +359 -0
- package/dist/src/core/cost.js.map +1 -0
- package/dist/src/core/file-config.d.ts +316 -0
- package/dist/src/core/file-config.js +490 -0
- package/dist/src/core/file-config.js.map +1 -0
- package/dist/src/core/orchestrator.d.ts +199 -0
- package/dist/src/core/orchestrator.js +3430 -0
- package/dist/src/core/orchestrator.js.map +1 -0
- package/dist/src/core/prompt-parts.d.ts +58 -0
- package/dist/src/core/prompt-parts.js +122 -0
- package/dist/src/core/prompt-parts.js.map +1 -0
- package/dist/src/core/relator-lottery.d.ts +23 -0
- package/dist/src/core/relator-lottery.js +112 -0
- package/dist/src/core/relator-lottery.js.map +1 -0
- package/dist/src/core/reports.d.ts +2 -0
- package/dist/src/core/reports.js +82 -0
- package/dist/src/core/reports.js.map +1 -0
- package/dist/src/core/session-store.d.ts +149 -0
- package/dist/src/core/session-store.js +1923 -0
- package/dist/src/core/session-store.js.map +1 -0
- package/dist/src/core/status.d.ts +61 -0
- package/dist/src/core/status.js +249 -0
- package/dist/src/core/status.js.map +1 -0
- package/dist/src/core/timeouts.d.ts +2 -0
- package/dist/src/core/timeouts.js +3 -0
- package/dist/src/core/timeouts.js.map +1 -0
- package/dist/src/core/types.d.ts +604 -0
- package/dist/src/core/types.js +36 -0
- package/dist/src/core/types.js.map +1 -0
- package/dist/src/dashboard/server.d.ts +2 -0
- package/dist/src/dashboard/server.js +339 -0
- package/dist/src/dashboard/server.js.map +1 -0
- package/dist/src/mcp/server.d.ts +54 -0
- package/dist/src/mcp/server.js +1584 -0
- package/dist/src/mcp/server.js.map +1 -0
- package/dist/src/observability/logger.d.ts +9 -0
- package/dist/src/observability/logger.js +24 -0
- package/dist/src/observability/logger.js.map +1 -0
- package/dist/src/peers/anthropic.d.ts +14 -0
- package/dist/src/peers/anthropic.js +290 -0
- package/dist/src/peers/anthropic.js.map +1 -0
- package/dist/src/peers/base.d.ts +72 -0
- package/dist/src/peers/base.js +416 -0
- package/dist/src/peers/base.js.map +1 -0
- package/dist/src/peers/deepseek.d.ts +12 -0
- package/dist/src/peers/deepseek.js +246 -0
- package/dist/src/peers/deepseek.js.map +1 -0
- package/dist/src/peers/errors.d.ts +2 -0
- package/dist/src/peers/errors.js +185 -0
- package/dist/src/peers/errors.js.map +1 -0
- package/dist/src/peers/gemini.d.ts +13 -0
- package/dist/src/peers/gemini.js +215 -0
- package/dist/src/peers/gemini.js.map +1 -0
- package/dist/src/peers/grok.d.ts +17 -0
- package/dist/src/peers/grok.js +346 -0
- package/dist/src/peers/grok.js.map +1 -0
- package/dist/src/peers/model-selection.d.ts +4 -0
- package/dist/src/peers/model-selection.js +260 -0
- package/dist/src/peers/model-selection.js.map +1 -0
- package/dist/src/peers/openai.d.ts +14 -0
- package/dist/src/peers/openai.js +299 -0
- package/dist/src/peers/openai.js.map +1 -0
- package/dist/src/peers/perplexity.d.ts +18 -0
- package/dist/src/peers/perplexity.js +375 -0
- package/dist/src/peers/perplexity.js.map +1 -0
- package/dist/src/peers/registry.d.ts +3 -0
- package/dist/src/peers/registry.js +77 -0
- package/dist/src/peers/registry.js.map +1 -0
- package/dist/src/peers/retry.d.ts +2 -0
- package/dist/src/peers/retry.js +36 -0
- package/dist/src/peers/retry.js.map +1 -0
- package/dist/src/peers/stub.d.ts +13 -0
- package/dist/src/peers/stub.js +344 -0
- package/dist/src/peers/stub.js.map +1 -0
- package/dist/src/peers/text.d.ts +18 -0
- package/dist/src/peers/text.js +39 -0
- package/dist/src/peers/text.js.map +1 -0
- package/dist/src/security/redact.d.ts +2 -0
- package/dist/src/security/redact.js +128 -0
- package/dist/src/security/redact.js.map +1 -0
- package/docs/api-keys.md +34 -0
- package/docs/architecture.md +118 -0
- package/docs/caching.md +135 -0
- package/docs/costs.md +40 -0
- package/docs/evidence-preflight.md +88 -0
- package/docs/github-security-baseline.md +32 -0
- package/docs/model-selection.md +105 -0
- package/docs/reports/cross-review-v2-api-capability-smoke-2026-04-30.md +354 -0
- package/docs/reports/cross-review-v2-format-recovery-findings-2026-04-28.md +223 -0
- package/docs/reports/cross-review-v2-official-provider-docs-refresh-2026-05-05.md +60 -0
- package/docs/reports/cross-review-v2-token-streaming-smoke-2026-04-30.md +119 -0
- package/package.json +88 -0
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
# Cross Review v2 - Token Streaming Smoke
|
|
2
|
+
|
|
3
|
+
Date: 2026-04-30, America/Sao_Paulo
|
|
4
|
+
Runtime under test: local `cross-review-v2` source, package version `2.2.0`
|
|
5
|
+
|
|
6
|
+
## Purpose
|
|
7
|
+
|
|
8
|
+
This report records a real provider token-streaming smoke test for
|
|
9
|
+
`cross-review-v2`. It verifies that the four peer adapters use provider-native
|
|
10
|
+
streaming APIs and emit session token-progress events.
|
|
11
|
+
|
|
12
|
+
No API key, prompt body or raw provider response text was printed or written to
|
|
13
|
+
this report.
|
|
14
|
+
|
|
15
|
+
## Command
|
|
16
|
+
|
|
17
|
+
```powershell
|
|
18
|
+
npm run api-streaming-smoke
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Result
|
|
22
|
+
|
|
23
|
+
The command completed successfully.
|
|
24
|
+
|
|
25
|
+
```json
|
|
26
|
+
{
|
|
27
|
+
"ok": true,
|
|
28
|
+
"streaming_tokens": true,
|
|
29
|
+
"streaming_text": false,
|
|
30
|
+
"results": [
|
|
31
|
+
{
|
|
32
|
+
"peer": "codex",
|
|
33
|
+
"provider": "openai",
|
|
34
|
+
"requested_model": "gpt-5.5",
|
|
35
|
+
"reported_model": "gpt-5.5-2026-04-23",
|
|
36
|
+
"status": "NEEDS_EVIDENCE",
|
|
37
|
+
"decision_quality": "clean",
|
|
38
|
+
"delta_events": 126,
|
|
39
|
+
"streamed_chars": 681,
|
|
40
|
+
"usage": {
|
|
41
|
+
"input_tokens": 471,
|
|
42
|
+
"output_tokens": 653,
|
|
43
|
+
"total_tokens": 1124,
|
|
44
|
+
"reasoning_tokens": 516
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"peer": "claude",
|
|
49
|
+
"provider": "anthropic",
|
|
50
|
+
"requested_model": "claude-opus-4-7",
|
|
51
|
+
"reported_model": "claude-opus-4-7",
|
|
52
|
+
"status": "READY",
|
|
53
|
+
"decision_quality": "clean",
|
|
54
|
+
"delta_events": 14,
|
|
55
|
+
"streamed_chars": 890,
|
|
56
|
+
"usage": {
|
|
57
|
+
"input_tokens": 1094,
|
|
58
|
+
"output_tokens": 308,
|
|
59
|
+
"total_tokens": 1402
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"peer": "gemini",
|
|
64
|
+
"provider": "google",
|
|
65
|
+
"requested_model": "gemini-3.1-pro-preview",
|
|
66
|
+
"reported_model": "gemini-3.1-pro-preview",
|
|
67
|
+
"status": "READY",
|
|
68
|
+
"decision_quality": "clean",
|
|
69
|
+
"delta_events": 3,
|
|
70
|
+
"streamed_chars": 282,
|
|
71
|
+
"usage": {
|
|
72
|
+
"input_tokens": 391,
|
|
73
|
+
"output_tokens": 59,
|
|
74
|
+
"total_tokens": 1182,
|
|
75
|
+
"reasoning_tokens": 732
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"peer": "deepseek",
|
|
80
|
+
"provider": "deepseek",
|
|
81
|
+
"requested_model": "deepseek-v4-pro",
|
|
82
|
+
"reported_model": "deepseek-v4-pro",
|
|
83
|
+
"status": "NEEDS_EVIDENCE",
|
|
84
|
+
"decision_quality": "clean",
|
|
85
|
+
"delta_events": 88,
|
|
86
|
+
"streamed_chars": 430,
|
|
87
|
+
"usage": {
|
|
88
|
+
"input_tokens": 402,
|
|
89
|
+
"output_tokens": 1561,
|
|
90
|
+
"total_tokens": 1963,
|
|
91
|
+
"reasoning_tokens": 1473
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
]
|
|
95
|
+
}
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
`NEEDS_EVIDENCE` in this smoke is not a failure. The prompt is intentionally
|
|
99
|
+
minimal and artificial; the release criterion here is that each adapter streams
|
|
100
|
+
provider output, emits token events, returns a parseable decision and reports
|
|
101
|
+
usage/model metadata without leaking sensitive data.
|
|
102
|
+
|
|
103
|
+
The default token-event mode records progress counts rather than raw provider
|
|
104
|
+
text. `CROSS_REVIEW_V2_STREAM_TEXT=1` is available only as a trusted local
|
|
105
|
+
diagnostic mode and still applies redaction before persistence.
|
|
106
|
+
|
|
107
|
+
## Release Implications
|
|
108
|
+
|
|
109
|
+
- `CROSS_REVIEW_V2_STREAM_TOKENS=1` is validated against real provider calls.
|
|
110
|
+
- `CROSS_REVIEW_V2_STREAM_TOKENS=0` was validated through `npm run
|
|
111
|
+
runtime-smoke`; `server_info.capabilities.token_streaming` and
|
|
112
|
+
`runtime_capabilities.capabilities.token_streaming` both reported `false`.
|
|
113
|
+
- Token streaming is a real provider-output path, not simulated progress.
|
|
114
|
+
- Existing final-result parsing remains active after streamed text is
|
|
115
|
+
accumulated.
|
|
116
|
+
- Stub regression coverage verifies that summed streamed character counts match
|
|
117
|
+
the final parsed result text length.
|
|
118
|
+
- The event stream can be consumed by MCP hosts and future UI layers to show
|
|
119
|
+
progress during slow reviews.
|
package/package.json
ADDED
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@lcv-ideas-software/cross-review",
|
|
3
|
+
"version": "4.0.0",
|
|
4
|
+
"description": "API-first MCP server for multi-model cross-review with unanimous convergence gates.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/src/mcp/server.js",
|
|
7
|
+
"bin": {
|
|
8
|
+
"cross-review": "dist/src/mcp/server.js",
|
|
9
|
+
"cross-review-dashboard": "dist/src/dashboard/server.js"
|
|
10
|
+
},
|
|
11
|
+
"files": [
|
|
12
|
+
"dist/",
|
|
13
|
+
"docs/",
|
|
14
|
+
"README.md",
|
|
15
|
+
"LICENSE",
|
|
16
|
+
"NOTICE",
|
|
17
|
+
"SECURITY.md",
|
|
18
|
+
"CHANGELOG.md"
|
|
19
|
+
],
|
|
20
|
+
"scripts": {
|
|
21
|
+
"build": "tsc -p tsconfig.json",
|
|
22
|
+
"clean": "node scripts/clean.mjs",
|
|
23
|
+
"prepack": "npm run clean && npm run build",
|
|
24
|
+
"dev": "tsx src/mcp/server.ts",
|
|
25
|
+
"dashboard": "tsx src/dashboard/server.ts",
|
|
26
|
+
"smoke": "tsx scripts/smoke.ts",
|
|
27
|
+
"runtime-smoke": "npm run build && tsx scripts/runtime-smoke.ts",
|
|
28
|
+
"runtime-default-smoke": "tsx scripts/runtime-default-smoke.ts",
|
|
29
|
+
"api-streaming-smoke": "tsx scripts/api-streaming-smoke.ts",
|
|
30
|
+
"test": "npm run build && npm run smoke && npm run runtime-smoke",
|
|
31
|
+
"lint": "eslint . --max-warnings=0",
|
|
32
|
+
"format": "prettier --write .",
|
|
33
|
+
"format:check": "prettier --check .",
|
|
34
|
+
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
35
|
+
"format:public": "prettier --write \"**/index.html\"",
|
|
36
|
+
"format:public:check": "prettier --check \"**/index.html\""
|
|
37
|
+
},
|
|
38
|
+
"dependencies": {
|
|
39
|
+
"@anthropic-ai/sdk": "^0.96.0",
|
|
40
|
+
"@google/genai": "^2.0.0",
|
|
41
|
+
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
42
|
+
"openai": "^6.35.0",
|
|
43
|
+
"pino": "^10.3.1",
|
|
44
|
+
"zod": "^4.3.6"
|
|
45
|
+
},
|
|
46
|
+
"overrides": {
|
|
47
|
+
"ip-address": ">=10.1.1",
|
|
48
|
+
"hono": ">=4.12.16"
|
|
49
|
+
},
|
|
50
|
+
"devDependencies": {
|
|
51
|
+
"@eslint/js": "^10.0.1",
|
|
52
|
+
"@types/node": "^25.6.0",
|
|
53
|
+
"eslint": "^10.2.1",
|
|
54
|
+
"prettier": "^3.8.3",
|
|
55
|
+
"tsx": "^4.21.0",
|
|
56
|
+
"typescript": "^6.0.3",
|
|
57
|
+
"typescript-eslint": "^8.59.1"
|
|
58
|
+
},
|
|
59
|
+
"engines": {
|
|
60
|
+
"node": ">=22"
|
|
61
|
+
},
|
|
62
|
+
"publishConfig": {
|
|
63
|
+
"access": "public"
|
|
64
|
+
},
|
|
65
|
+
"license": "Apache-2.0",
|
|
66
|
+
"author": "LCV Ideas & Software",
|
|
67
|
+
"repository": {
|
|
68
|
+
"type": "git",
|
|
69
|
+
"url": "git+https://github.com/LCV-Ideas-Software/cross-review.git"
|
|
70
|
+
},
|
|
71
|
+
"bugs": {
|
|
72
|
+
"url": "https://github.com/LCV-Ideas-Software/cross-review/issues"
|
|
73
|
+
},
|
|
74
|
+
"homepage": "https://cross-review.lcv.dev/",
|
|
75
|
+
"keywords": [
|
|
76
|
+
"mcp",
|
|
77
|
+
"model-context-protocol",
|
|
78
|
+
"cross-review",
|
|
79
|
+
"multi-agent",
|
|
80
|
+
"openai",
|
|
81
|
+
"anthropic",
|
|
82
|
+
"gemini",
|
|
83
|
+
"deepseek",
|
|
84
|
+
"grok",
|
|
85
|
+
"xai",
|
|
86
|
+
"api"
|
|
87
|
+
]
|
|
88
|
+
}
|