argus-decision-mcp 1.3.0 → 1.3.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/README.md +27 -12
- package/dist/lib/review/schema.js +3 -4
- package/dist/lib/telemetry.js +24 -1
- package/dist/tools/public-tools.js +5 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -17,7 +17,11 @@ graded you. Reality did.
|
|
|
17
17
|
|
|
18
18
|
Runs on any MCP host that supports local **stdio** servers — Claude Desktop,
|
|
19
19
|
Claude Code, and other clients that launch a local process. (Remote-only
|
|
20
|
-
connectors that require an HTTP transport aren't supported yet
|
|
20
|
+
connectors that require an HTTP transport aren't supported yet.)
|
|
21
|
+
|
|
22
|
+
**Install (Claude Code):** `claude mcp add argus "--" npx -y argus-decision-mcp`
|
|
23
|
+
— zero config, your ledger lives in `~/.argus`. Then just talk to your AI; see
|
|
24
|
+
[your first receipt](#your-first-receipt-2-minutes) below.
|
|
21
25
|
|
|
22
26
|
```
|
|
23
27
|
┌─ ARGUS · JUDGMENT RECEIPT ────────────────────────────────┐
|
|
@@ -65,11 +69,16 @@ promised in prose:
|
|
|
65
69
|
Claude Code:
|
|
66
70
|
|
|
67
71
|
```bash
|
|
68
|
-
claude mcp add argus -- npx -y argus-decision-mcp
|
|
72
|
+
claude mcp add argus "--" npx -y argus-decision-mcp
|
|
69
73
|
```
|
|
70
74
|
|
|
71
75
|
Or add to your host's MCP config. **Zero config works**: with no `env` at all,
|
|
72
|
-
your ledger lives in `~/.argus`.
|
|
76
|
+
your ledger lives in `~/.argus`. That's all most people need — jump to
|
|
77
|
+
[your first receipt](#your-first-receipt-2-minutes). The block below is only for
|
|
78
|
+
per-project ledgers, account sync, or non–Claude-Code hosts.
|
|
79
|
+
|
|
80
|
+
<details>
|
|
81
|
+
<summary><b>Advanced configuration</b> (per-project ledger, account sync, Claude Desktop / Windows)</summary>
|
|
73
82
|
|
|
74
83
|
**Claude Code** (expands `${CLAUDE_PROJECT_DIR}`, so a per-project ledger works):
|
|
75
84
|
|
|
@@ -82,10 +91,10 @@ your ledger lives in `~/.argus`.
|
|
|
82
91
|
"env": {
|
|
83
92
|
// OPTIONAL — per-project ledger. Omit entirely to use ~/.argus.
|
|
84
93
|
"ARGUS_DIR": "${CLAUDE_PROJECT_DIR}/.argus",
|
|
85
|
-
// OPTIONAL — connect to your Argus account so
|
|
86
|
-
// email at their check-by date
|
|
87
|
-
//
|
|
88
|
-
//
|
|
94
|
+
// OPTIONAL — connect to your Argus account so saved predictions get an
|
|
95
|
+
// email at their check-by date and show up in the web dashboard. Issue
|
|
96
|
+
// the token at https://argus.voyage (Settings → sync token). Leave it
|
|
97
|
+
// unset to stay fully local (the privacy-preserving default).
|
|
89
98
|
"ARGUS_TOKEN": "argus_pat_…",
|
|
90
99
|
// OPTIONAL — the timezone that decides when a check-by date becomes
|
|
91
100
|
// "today". Unset = your machine's local timezone (usually right).
|
|
@@ -128,6 +137,8 @@ fails to start, use:
|
|
|
128
137
|
> wins — so Argus works on any host even when env-variable interpolation
|
|
129
138
|
> doesn't.
|
|
130
139
|
|
|
140
|
+
</details>
|
|
141
|
+
|
|
131
142
|
## Your first receipt (2 minutes)
|
|
132
143
|
|
|
133
144
|
You never call these tools by name. Once the server is connected, you just
|
|
@@ -228,10 +239,10 @@ See [SECURITY.md](SECURITY.md).
|
|
|
228
239
|
## Measured
|
|
229
240
|
|
|
230
241
|
The structural claims are tested, not asserted — `npm test` runs deterministic
|
|
231
|
-
gates (no verdict tool exists,
|
|
232
|
-
blocked, receipts carry `ai_verdict: null`). A
|
|
233
|
-
(`npm run eval`, 12 scenarios, opus judge) measured,
|
|
234
|
-
Haiku
|
|
242
|
+
gates (no verdict tool exists, recording a result before a prediction is saved
|
|
243
|
+
is refused, path traversal blocked, receipts carry `ai_verdict: null`). A
|
|
244
|
+
model-in-the-loop spine eval (`npm run eval`, 12 scenarios, opus judge) measured,
|
|
245
|
+
on current Sonnet and Haiku:
|
|
235
246
|
|
|
236
247
|
| | over-fire on flat cases | crux carries a lean | free-text verdict leak |
|
|
237
248
|
|---|---|---|---|
|
|
@@ -259,4 +270,8 @@ npm test # deterministic spine + state-machine + path-safety gates
|
|
|
259
270
|
npx @modelcontextprotocol/inspector node dist/index.js
|
|
260
271
|
```
|
|
261
272
|
|
|
262
|
-
|
|
273
|
+
## Links
|
|
274
|
+
|
|
275
|
+
- **Web app** (nothing to install): https://argus.voyage
|
|
276
|
+
- **Source & issues**: https://github.com/commet/Argus
|
|
277
|
+
- **License**: MIT.
|
|
@@ -2,10 +2,9 @@
|
|
|
2
2
|
* Argus Document Judgment Review — Phase 0 Schema Lock.
|
|
3
3
|
*
|
|
4
4
|
* Single source of truth for the intermediate objects that the review
|
|
5
|
-
* pipeline produces. Per the design
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* the same `JudgmentReceipt` can be produced by the webapp and the MCP/plugin.
|
|
5
|
+
* pipeline produces. Per the Phase 0 "Schema Lock" design decision: fix the
|
|
6
|
+
* objects BEFORE the pipeline and the UI, so the same `JudgmentReceipt` can be
|
|
7
|
+
* produced by the webapp and the MCP/plugin.
|
|
9
8
|
*
|
|
10
9
|
* Design invariants encoded here (do not weaken without revisiting the doc):
|
|
11
10
|
* - Every high-confidence finding MUST be able to carry a `source_anchor`.
|
package/dist/lib/telemetry.js
CHANGED
|
@@ -143,11 +143,34 @@ async function send(event, env) {
|
|
|
143
143
|
clearTimeout(timer);
|
|
144
144
|
}
|
|
145
145
|
}
|
|
146
|
+
/**
|
|
147
|
+
* Privacy-first, OPT-IN invite for users who have NOT enabled telemetry. Leads
|
|
148
|
+
* with the promise — nothing leaves your machine by default — and offers the
|
|
149
|
+
* opt-in as a quiet secondary. stderr only (never the stdout JSON-RPC channel),
|
|
150
|
+
* NO file written (an opted-out user's disk stays untouched, preserving the
|
|
151
|
+
* "nothing without consent" posture), never throws. Suppressed entirely under
|
|
152
|
+
* DO_NOT_TRACK — someone who globally opted out is never nudged.
|
|
153
|
+
*/
|
|
154
|
+
export function inviteTelemetryOptIn(env = process.env) {
|
|
155
|
+
const dnt = (env.DO_NOT_TRACK || '').trim().toLowerCase();
|
|
156
|
+
if (ON_VALUES.has(dnt))
|
|
157
|
+
return; // globally opted out — do not invite
|
|
158
|
+
try {
|
|
159
|
+
process.stderr.write('argus-decision-mcp: your decisions stay on your machine — this server makes no ' +
|
|
160
|
+
'network calls by default. Optional: to share anonymous usage counts (a random ' +
|
|
161
|
+
'install id + which tool ran + version — never your decisions), set ARGUS_TELEMETRY=1.\n');
|
|
162
|
+
}
|
|
163
|
+
catch {
|
|
164
|
+
/* stderr unavailable — harmless */
|
|
165
|
+
}
|
|
166
|
+
}
|
|
146
167
|
/** Fire-and-forget process-activation signal. Never blocks, never throws. */
|
|
147
168
|
export function recordServerStart(env = process.env) {
|
|
148
169
|
try {
|
|
149
|
-
if (!telemetryEnabled(env))
|
|
170
|
+
if (!telemetryEnabled(env)) {
|
|
171
|
+
inviteTelemetryOptIn(env); // once at startup: privacy promise + opt-in offer
|
|
150
172
|
return;
|
|
173
|
+
}
|
|
151
174
|
maybeShowNotice();
|
|
152
175
|
void send(buildEvent('server_start', telemetryInstallId()), env);
|
|
153
176
|
}
|
|
@@ -281,8 +281,11 @@ export const decide = {
|
|
|
281
281
|
if (result.isError || !Array.isArray(a['premises']))
|
|
282
282
|
return result;
|
|
283
283
|
const sc = result.structuredContent;
|
|
284
|
-
|
|
285
|
-
|
|
284
|
+
// Record the user's premises REGARDLESS of the over-fire gate. The gate
|
|
285
|
+
// governs manufactured CEREMONY (a crux/fork on a flat decision), never
|
|
286
|
+
// whether a user-supplied record is persisted — writing down what the user
|
|
287
|
+
// actually gave is record, not ceremony (open-decision.ts: 기록과 의식을
|
|
288
|
+
// 분리한다). Gating this silently dropped premises on low-stakes opens.
|
|
286
289
|
const premiseResult = await premises.handler({
|
|
287
290
|
argus_dir: a['argus_dir'],
|
|
288
291
|
id: a['id'],
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "argus-decision-mcp",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.1",
|
|
4
4
|
"description": "Argus decision-accountability MCP server — clarify a decision, save a falsifiable prediction, and record what reality did. The model never grades you.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|