@golproductions/check 3.0.6 → 3.0.8
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/README.md +14 -105
- package/package.json +5 -21
- package/src/index.js +45 -4
- package/src/mcp.js +1 -1
package/README.md
CHANGED
|
@@ -1,125 +1,34 @@
|
|
|
1
|
-
# Check
|
|
1
|
+
# Check -- The Universal Anti-Hallucination Engine
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
AI agents hallucinate. Check catches it before it reaches your project.
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
No AI inside. Deterministic. Same input, same output. Every time.
|
|
5
|
+
No AI inside. Deterministic. Sub-100ms.
|
|
8
6
|
|
|
9
7
|
## Install
|
|
10
8
|
|
|
11
|
-
One command. Every IDE.
|
|
12
|
-
|
|
13
9
|
```
|
|
14
10
|
npx @golproductions/check --install YOUR_KEY
|
|
15
11
|
```
|
|
16
12
|
|
|
17
|
-
Auto-detects
|
|
18
|
-
|
|
19
|
-
Get your free API key (120 free checks) at [golproductions.com/check](https://www.golproductions.com/check.html)
|
|
20
|
-
|
|
21
|
-
## What it catches
|
|
13
|
+
One command. Auto-detects your environment and configures everything.
|
|
22
14
|
|
|
23
|
-
|
|
24
|
-
|------|-------------|
|
|
25
|
-
| **Phantom commands** | AI runs `git stash apply 3` — stash doesn't exist. **Blocked.** |
|
|
26
|
-
| **Hallucinated imports** | AI writes `import cache from "express-session"` — not installed. **Blocked.** |
|
|
27
|
-
| **Invented functions** | AI calls `db.findUserByEmail()` — doesn't exist in your project. **Blocked.** |
|
|
28
|
-
| **Broken syntax** | AI writes a file with mismatched brackets. **Flagged.** |
|
|
29
|
-
| **Post-write integrity** | After the AI writes a file, imports and function calls are re-verified. **Two checkpoints.** |
|
|
15
|
+
120 free checks on signup at [golproductions.com/check](https://www.golproductions.com/check.html)
|
|
30
16
|
|
|
31
17
|
## Supported environments
|
|
32
18
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
| Environment | Integration |
|
|
36
|
-
|-------------|-------------|
|
|
37
|
-
| Claude Code | PreToolUse hook |
|
|
38
|
-
| Cursor | beforeShellExecution hook |
|
|
39
|
-
| Gemini CLI / Antigravity | BeforeTool hook |
|
|
40
|
-
|
|
41
|
-
**MCP Server (agent-driven)**
|
|
42
|
-
|
|
43
|
-
| Environment | Integration |
|
|
44
|
-
|-------------|-------------|
|
|
45
|
-
| Claude Code | MCP server |
|
|
46
|
-
| Cursor | MCP server |
|
|
47
|
-
| Windsurf / Devin Desktop | MCP server |
|
|
48
|
-
| Continue | MCP server |
|
|
49
|
-
| Amazon Q | MCP server |
|
|
50
|
-
| Roo Code | MCP server |
|
|
51
|
-
| Claude Desktop | MCP server |
|
|
52
|
-
| Any MCP client | MCP server |
|
|
53
|
-
|
|
54
|
-
**Editor plugins**
|
|
55
|
-
|
|
56
|
-
| Editor | Install |
|
|
57
|
-
|--------|---------|
|
|
58
|
-
| VS Code / Cursor / Devin Desktop | [Open VSX](https://open-vsx.org/extension/golproductions/gol-check) |
|
|
59
|
-
| JetBrains (IntelliJ, WebStorm, PyCharm, GoLand, Rider, PHPStorm, RubyMine) | [JetBrains Marketplace](https://plugins.jetbrains.com/plugin/com.golproductions.check) |
|
|
60
|
-
| Neovim | [check.nvim](https://github.com/golproductions/check.nvim) |
|
|
61
|
-
| Emacs | [check.el](https://github.com/golproductions/check.el) |
|
|
62
|
-
| Sublime Text | [GOLCheck](https://github.com/golproductions/check-sublime) |
|
|
63
|
-
| Zed | [check-zed](https://github.com/golproductions/check-zed) |
|
|
64
|
-
|
|
65
|
-
**Direct API**
|
|
66
|
-
|
|
67
|
-
```
|
|
68
|
-
POST https://triage.golproductions.com/preflight
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
## MCP Server
|
|
72
|
-
|
|
73
|
-
Run Check as an MCP server for direct agent integration:
|
|
74
|
-
|
|
75
|
-
```
|
|
76
|
-
npx @golproductions/check check-mcp
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
Exposes two tools:
|
|
80
|
-
- **Check** — validates a command, returns `RUNNABLE` or `INVALID`
|
|
81
|
-
- **CheckAndExecute** — validates then executes, blocking invalid commands before they reach the shell
|
|
82
|
-
|
|
83
|
-
## How it works
|
|
84
|
-
|
|
85
|
-
```
|
|
86
|
-
AI generates code
|
|
87
|
-
↓
|
|
88
|
-
Check intercepts (pre-execution)
|
|
89
|
-
↓
|
|
90
|
-
Verifies against your actual project
|
|
91
|
-
↓
|
|
92
|
-
Real → allowed | Not real → blocked
|
|
93
|
-
↓
|
|
94
|
-
After file write → second verification pass
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
Sub-100ms. Your AI never knows it's there.
|
|
98
|
-
|
|
99
|
-
## Why not just use another guardrail?
|
|
100
|
-
|
|
101
|
-
| | Check | Security firewalls | LLM guardrails | Eval platforms |
|
|
102
|
-
|---|---|---|---|---|
|
|
103
|
-
| **Checks code correctness** | Yes | No — checks safety | No — checks format | No — scores after |
|
|
104
|
-
| **Knows your project** | Yes | No | No | No |
|
|
105
|
-
| **Pre-execution** | Yes | Yes | Varies | No |
|
|
106
|
-
| **Post-write verification** | Yes | No | No | No |
|
|
107
|
-
| **No AI inside** | Yes | Varies | Uses LLMs | Uses LLMs |
|
|
108
|
-
| **Per-check pricing** | $0.0068 AUD | Free (self-hosted) | Enterprise | SaaS |
|
|
109
|
-
|
|
110
|
-
Every other tool checks the AI. **Check checks the code.**
|
|
19
|
+
Claude Code, Cursor, Gemini CLI, Windsurf, Devin Desktop, Continue, Amazon Q, Roo Code, Claude Desktop, JetBrains, VS Code, Neovim, Emacs, Sublime Text, Zed, and any MCP client.
|
|
111
20
|
|
|
112
21
|
## Pricing
|
|
113
22
|
|
|
114
|
-
|
|
23
|
+
$0.0068 AUD per check. No subscription. Credits never expire.
|
|
115
24
|
|
|
116
|
-
| Tier | Checks |
|
|
117
|
-
|
|
118
|
-
| Free | 120 |
|
|
119
|
-
| $5 | ~735 |
|
|
120
|
-
| $10 | ~1,470 |
|
|
121
|
-
| $25 | ~3,676 |
|
|
122
|
-
| $50 | ~7,352 |
|
|
25
|
+
| Tier | Checks |
|
|
26
|
+
|------|--------|
|
|
27
|
+
| Free | 120 |
|
|
28
|
+
| $5 | ~735 |
|
|
29
|
+
| $10 | ~1,470 |
|
|
30
|
+
| $25 | ~3,676 |
|
|
31
|
+
| $50 | ~7,352 |
|
|
123
32
|
|
|
124
33
|
## Links
|
|
125
34
|
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@golproductions/check",
|
|
3
|
-
"version": "3.0.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "3.0.8",
|
|
4
|
+
"description": "The universal anti-hallucination engine for AI coding agents. Catches what is not real before it reaches your project.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"check": "src/index.js",
|
|
7
7
|
"check-mcp": "src/mcp.js"
|
|
@@ -18,35 +18,19 @@
|
|
|
18
18
|
"keywords": [
|
|
19
19
|
"anti-hallucination",
|
|
20
20
|
"ai-hallucination",
|
|
21
|
-
"hallucination-detection",
|
|
22
|
-
"ai-firewall",
|
|
23
21
|
"ai-agents",
|
|
24
|
-
"ai-
|
|
25
|
-
"command-validation",
|
|
26
|
-
"import-validation",
|
|
27
|
-
"function-verification",
|
|
28
|
-
"code-integrity",
|
|
29
|
-
"pre-execution",
|
|
30
|
-
"deterministic-verification",
|
|
22
|
+
"ai-coding-agent",
|
|
31
23
|
"claude-code",
|
|
32
24
|
"cursor",
|
|
33
|
-
"antigravity",
|
|
34
25
|
"windsurf",
|
|
35
|
-
"devin-desktop",
|
|
36
26
|
"gemini-cli",
|
|
37
27
|
"amazon-q",
|
|
38
28
|
"continue-dev",
|
|
39
29
|
"roo-code",
|
|
40
|
-
"cline",
|
|
41
|
-
"ai-guardrails",
|
|
42
|
-
"llm-validation",
|
|
43
30
|
"mcp",
|
|
44
31
|
"model-context-protocol",
|
|
45
|
-
"ai-coding-agent",
|
|
46
|
-
"code-verification",
|
|
47
32
|
"ai-safety",
|
|
48
|
-
"developer-tools"
|
|
49
|
-
"devtools"
|
|
33
|
+
"developer-tools"
|
|
50
34
|
],
|
|
51
35
|
"dependencies": {
|
|
52
36
|
"@modelcontextprotocol/sdk": "^1.12.0",
|
|
@@ -57,5 +41,5 @@
|
|
|
57
41
|
"type": "git",
|
|
58
42
|
"url": "git+https://github.com/golproductions/check.git"
|
|
59
43
|
},
|
|
60
|
-
"homepage": "https://
|
|
44
|
+
"homepage": "https://golproductions.com/check"
|
|
61
45
|
}
|
package/src/index.js
CHANGED
|
@@ -5,12 +5,30 @@ import { homedir, platform, arch } from "node:os";
|
|
|
5
5
|
import { pipeline } from "node:stream/promises";
|
|
6
6
|
import { Readable } from "node:stream";
|
|
7
7
|
|
|
8
|
-
const VERSION = "3.0.
|
|
8
|
+
const VERSION = "3.0.8";
|
|
9
9
|
const BINARY_VERSION = "3.0.0";
|
|
10
10
|
const API = "https://triage.golproductions.com/preflight";
|
|
11
11
|
const CDN = "https://pub-e55366a7f5994be9be04f0e205179f4a.r2.dev/releases";
|
|
12
12
|
const CLIENT_ID = process.env.GOL_CLIENT_ID || "";
|
|
13
13
|
|
|
14
|
+
async function validateKey(key) {
|
|
15
|
+
try {
|
|
16
|
+
const res = await fetch(API, {
|
|
17
|
+
method: "POST",
|
|
18
|
+
headers: { "Content-Type": "application/json", "X-GOL-CLIENT-ID": key, "User-Agent": "c/" + VERSION },
|
|
19
|
+
body: JSON.stringify({ command: "echo check-install-verify", cwd: process.cwd(), v: VERSION }),
|
|
20
|
+
signal: AbortSignal.timeout(10000),
|
|
21
|
+
});
|
|
22
|
+
if (res.ok) return { valid: true, expired: false };
|
|
23
|
+
let body = {};
|
|
24
|
+
try { body = await res.json(); } catch {}
|
|
25
|
+
const expired = /expir/i.test(body.reason || body.error || body.message || "");
|
|
26
|
+
return { valid: false, expired };
|
|
27
|
+
} catch {
|
|
28
|
+
return { valid: false, expired: false };
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
14
32
|
async function downloadBinary(dest) {
|
|
15
33
|
const os = platform() === "win32" ? "win" : platform() === "darwin" ? "macos" : "linux";
|
|
16
34
|
const cpu = arch() === "arm64" ? "arm64" : "x64";
|
|
@@ -23,7 +41,30 @@ async function downloadBinary(dest) {
|
|
|
23
41
|
}
|
|
24
42
|
|
|
25
43
|
async function install() {
|
|
26
|
-
const key = process.argv[3] || process.env.GOL_CLIENT_ID || "
|
|
44
|
+
const key = process.argv[3] || process.env.GOL_CLIENT_ID || "";
|
|
45
|
+
|
|
46
|
+
if (!key || key === "your_key") {
|
|
47
|
+
console.log("\n Check requires a valid Client ID to install.\n");
|
|
48
|
+
console.log(" Get your key (free): https://golproductions.com/check\n");
|
|
49
|
+
console.log(" Then run:");
|
|
50
|
+
console.log(" npx @golproductions/check --install YOUR_KEY\n");
|
|
51
|
+
process.exit(1);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
const result = await validateKey(key);
|
|
55
|
+
if (!result.valid) {
|
|
56
|
+
if (result.expired) {
|
|
57
|
+
console.log("\n Your Client ID has expired: " + key);
|
|
58
|
+
console.log("\n Renew your key at: https://golproductions.com/check\n");
|
|
59
|
+
} else {
|
|
60
|
+
console.log("\n Invalid Client ID: " + key);
|
|
61
|
+
console.log("\n Get a valid key at: https://golproductions.com/check\n");
|
|
62
|
+
}
|
|
63
|
+
process.exit(1);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
console.log("\n Key verified. Installing Check...\n");
|
|
67
|
+
|
|
27
68
|
const home = homedir();
|
|
28
69
|
let installed = 0;
|
|
29
70
|
|
|
@@ -249,7 +290,7 @@ async function main() {
|
|
|
249
290
|
f = detect(p);
|
|
250
291
|
const c = cmd(p, f);
|
|
251
292
|
if (!c) { out(f, true); return; }
|
|
252
|
-
if (!CLIENT_ID) {
|
|
293
|
+
if (!CLIENT_ID) { out(f, false, "check: GOL_CLIENT_ID not set. Get your key at https://golproductions.com/check"); return; }
|
|
253
294
|
const controller = new AbortController();
|
|
254
295
|
const timer = setTimeout(() => controller.abort(), 5000);
|
|
255
296
|
const res = await fetch(API, {
|
|
@@ -262,7 +303,7 @@ async function main() {
|
|
|
262
303
|
const d = await res.json();
|
|
263
304
|
if (d.verdict === "runnable") { out(f, true); }
|
|
264
305
|
else { out(f, false, d.reason || "denied — address the issue before continuing"); }
|
|
265
|
-
} catch { out(f,
|
|
306
|
+
} catch { out(f, false, "check: verification failed, command blocked"); }
|
|
266
307
|
}
|
|
267
308
|
|
|
268
309
|
main();
|
package/src/mcp.js
CHANGED
|
@@ -6,7 +6,7 @@ import { execFile } from "node:child_process";
|
|
|
6
6
|
import { promisify } from "node:util";
|
|
7
7
|
|
|
8
8
|
const execFileAsync = promisify(execFile);
|
|
9
|
-
const VERSION = "
|
|
9
|
+
const VERSION = "3.0.8";
|
|
10
10
|
const API = "https://triage.golproductions.com/preflight";
|
|
11
11
|
const CLIENT_ID = process.env.GOL_CLIENT_ID;
|
|
12
12
|
const IS_WIN = process.platform === "win32";
|