@fidacy/openclaw-plugin 0.5.3 → 0.5.4

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
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.5.4
4
+
5
+ ### Patch Changes
6
+
7
+ - Scope disclosure. A ClawHub security audit of 0.5.3 flagged that the plugin "observes all agent tool calls and stores or anchors session metadata beyond the clearly advertised payment scope". Correct: since 0.5.0 the plugin hooks every tool call to build the session report, while the manifest description still promised only signed verdicts on money-moving actions. Anyone installing read a smaller promise than the software keeps.
8
+
9
+ The manifest description now leads with the observer and names what stays on the machine (command, file path, arguments) versus what leaves (per-category counts and a hash), plus FIDACY_DISABLE_TELEMETRY. The README opens with that split, before any pitch, and includes the opt-in operatorEmail.
10
+
11
+ No behaviour change: same code as 0.5.3, honest labelling.
12
+
13
+ On the static-analysis hit for FIDACY_ENGINE_API_KEY plus a network call: that is your own credential going only to the engineUrl you configured, the shape of any API client. The README already carries the command that proves no credential literal ships in the package, and it passes.
14
+
3
15
  ## 0.2.10
4
16
 
5
17
  ### Patch Changes
package/README.md CHANGED
@@ -2,26 +2,53 @@
2
2
 
3
3
  ![Fidacy blocks a BEC lookalike-payee payment, then allows the legit one with a signed Ed25519 grant](https://raw.githubusercontent.com/lucaslubi/fidacy-mcp/main/assets/fidacy-firewall-demo.svg)
4
4
 
5
- Fidacy payment firewall as a **native OpenClaw plugin**. Registers five agent tools
6
- in-process (no MCP subprocess, no `npx` spawn):
5
+ Fidacy firewall for AI agents as a **native OpenClaw plugin**: the payment
6
+ firewall plus a session observer, registered in-process (no MCP subprocess, no
7
+ `npx` spawn).
7
8
 
8
- - `request_payment` authorize a payment against the active signed mandate.
9
+ ## What this plugin observes, and what leaves your machine
10
+
11
+ Read this before installing. Since 0.5.0 the plugin is not payment-only: it
12
+ hooks every agent tool call to build a session report, and each session ends in
13
+ a hash digest anyone can recompute.
14
+
15
+ Stays on your machine, always:
16
+
17
+ - the command, file path and arguments of every tool call
18
+ - the full session log (`~/.fidacy/sessions/`), which is yours to delete
19
+ - your mandate and config (`~/.fidacy/`)
20
+
21
+ Leaves your machine:
22
+
23
+ - per-category counts (for example `shell: 9, file: 4`) and the session digest,
24
+ anchored via the Fidacy engine when the install is activated
25
+ - anonymous telemetry events (install, session, decision counts; a random UUID,
26
+ never a name or hostname). Disable with `FIDACY_DISABLE_TELEMETRY=1`.
27
+ - your email, only if you set `operatorEmail`, which is opt-in and removable
28
+
29
+ ## The tools
30
+
31
+ - `request_payment`: authorize a payment against the active signed mandate.
9
32
  ALLOW returns a short-lived Ed25519 grant the executor requires; DENY returns the
10
33
  violated rule and no grant.
11
- - `verify_mandate` the active mandate envelope + Fidacy's public key.
12
- - `get_audit_proof` tamper-evident, hash-chained proof for any decision.
13
- - `assess_action` a SIGNED trust verdict from the live Fidacy engine
34
+ - `verify_mandate`: the active mandate envelope + Fidacy's public key.
35
+ - `get_audit_proof`: tamper-evident, hash-chained proof for any decision.
36
+ - `assess_action`: a SIGNED trust verdict from the live Fidacy engine
14
37
  (requires an engine API key), verifiable by anyone via `@fidacy/verify`.
15
- - `fidacy_upgrade` upgrade the local install to a real Fidacy account.
38
+ - `fidacy_upgrade`: upgrade the local install to a real Fidacy account.
39
+
40
+ Plus `spend_summary`, `list_decisions`, `sentinel_alerts`, `explain_decision`,
41
+ `anchor_artifact` and `check_artifact`.
16
42
 
17
- Same engine as [`@fidacy/mcp`](https://www.npmjs.com/package/@fidacy/mcp) one
43
+ Same engine as [`@fidacy/mcp`](https://www.npmjs.com/package/@fidacy/mcp): one
18
44
  engine, many shells. Local-first, deny-by-default, non-custodial: Fidacy authorizes,
19
45
  it never holds funds.
20
46
 
21
47
  ## To everyone who installed Fidacy
22
48
 
23
- You are one of ~170 installs that have made 2,100+ real firewall decisions to
24
- date, over 99% of them blocks. Thank you. Two things worth a minute of your time:
49
+ Excluding our own test traffic, installs like yours have made about 1,600 real
50
+ firewall decisions to date, over 99% of them blocks. Thank you. Two things worth
51
+ a minute of your time:
25
52
 
26
53
  1. **See and claim what YOUR install blocked.** Your install carries a private,
27
54
  anonymous id on your machine (we never learn who you are unless you choose to).
@@ -37,10 +64,10 @@ Lucas de Lima, founder
37
64
 
38
65
  ## Install (2 minutes)
39
66
 
40
- **Step 1 get your free API key** at
67
+ **Step 1: get your free API key** at
41
68
  [app.fidacy.com/signup](https://app.fidacy.com/signup) (free tier, no card).
42
69
 
43
- **Step 2 install and set the key:**
70
+ **Step 2: install and set the key.**
44
71
 
45
72
  ```bash
46
73
  openclaw plugins install @fidacy/openclaw-plugin
@@ -132,7 +159,7 @@ with SHA-256 and send only the 64 hex characters.
132
159
  ## Prefer MCP instead?
133
160
 
134
161
  If you'd rather run Fidacy as an MCP server (out-of-process), use
135
- `openclaw mcp add fidacy --command npx --arg -y --arg @fidacy/mcp` same tools,
162
+ `openclaw mcp add fidacy --command npx --arg -y --arg @fidacy/mcp` , same tools,
136
163
  same engine. This plugin is the native, in-process variant.
137
164
 
138
165
  ## Build (development)
@@ -143,7 +170,7 @@ pnpm --filter @fidacy/openclaw-plugin typecheck # tsc against the real openclaw
143
170
  ```
144
171
 
145
172
  `openclaw/plugin-sdk/*` stays external (the host provides it at runtime); everything
146
- else the shared `@fidacy/firewall` engine and `@fidacy/mcp` shell wiring is
173
+ else (the shared `@fidacy/firewall` engine and `@fidacy/mcp` shell wiring) is
147
174
  inlined so the published package is self-contained.
148
175
 
149
176
  Apache-2.0 · https://fidacy.com
package/dist/index.js CHANGED
@@ -4426,6 +4426,24 @@ function sessionLabel(sessionId, total, byCategory) {
4426
4426
  }
4427
4427
  return parts.join(" ").slice(0, 120);
4428
4428
  }
4429
+ function sessionSummary(opts) {
4430
+ const by = {};
4431
+ for (const [cat, n] of Object.entries(opts.byCategory)) if (n > 0) by[cat] = n;
4432
+ const s = {
4433
+ v: 1,
4434
+ // Mesmo saneamento do rótulo: o host vem de código nosso, mas o campo é
4435
+ // limitado na origem para que uma string estranha vire um valor curto e
4436
+ // legível em vez de um 400 que perderia o registro inteiro da sessão.
4437
+ host: opts.host.replace(/[^a-z0-9-]/gi, "").slice(0, 40) || "unknown",
4438
+ session_id: opts.sessionId.replace(/[^A-Za-z0-9-]/g, "").slice(0, 64) || "unknown",
4439
+ total: opts.total
4440
+ };
4441
+ if (Object.keys(by).length) s.by_category = by;
4442
+ if (opts.truncated) s.truncated = true;
4443
+ if (opts.startedAt) s.started_at = opts.startedAt;
4444
+ if (opts.endedAt) s.ended_at = opts.endedAt;
4445
+ return s;
4446
+ }
4429
4447
 
4430
4448
  // ../mcp/src/observer.ts
4431
4449
  var EXACT = {
@@ -5067,7 +5085,7 @@ var FileAuditStore = class {
5067
5085
  import { statSync } from "node:fs";
5068
5086
 
5069
5087
  // ../mcp/src/telemetry.ts
5070
- var CLIENT_VERSION = true ? "0.5.3" : "dev";
5088
+ var CLIENT_VERSION = true ? "0.5.4" : "dev";
5071
5089
  function bandOf(amount) {
5072
5090
  if (typeof amount !== "number" || !Number.isFinite(amount) || amount <= 0) return void 0;
5073
5091
  if (amount < 10) return "lt10";
@@ -5255,7 +5273,7 @@ function requestUpgrade() {
5255
5273
  }
5256
5274
 
5257
5275
  // ../mcp/src/provision.ts
5258
- var CLIENT_VERSION2 = true ? "0.5.3" : "dev";
5276
+ var CLIENT_VERSION2 = true ? "0.5.4" : "dev";
5259
5277
  function provisionEnabled() {
5260
5278
  const v = (process.env.FIDACY_DISABLE_PROVISION ?? "").trim().toLowerCase();
5261
5279
  return !(v === "1" || v === "true" || v === "yes");
@@ -5397,7 +5415,7 @@ function trialCountdownLine(keyOverride) {
5397
5415
  }
5398
5416
 
5399
5417
  // ../mcp/src/register.ts
5400
- var CLIENT_VERSION3 = true ? "0.5.3" : "dev";
5418
+ var CLIENT_VERSION3 = true ? "0.5.4" : "dev";
5401
5419
  function endpoint3() {
5402
5420
  const base = (process.env.FIDACY_ENGINE_URL ?? "https://api.fidacy.com").replace(/\/$/, "");
5403
5421
  return `${base}/v1/register`;
@@ -6340,6 +6358,10 @@ entry.register = (api) => {
6340
6358
  sha256: head,
6341
6359
  kind: "custom",
6342
6360
  label: sessionLabel(sessionId, total, byCategory),
6361
+ // O contrato estruturado que o console lê. `host` é o campo que o
6362
+ // rótulo nunca teve, e sem ele este plugin e o hook de Claude Code
6363
+ // escreviam linhas indistinguíveis.
6364
+ summary: sessionSummary({ host: "openclaw", sessionId, total, byCategory }),
6343
6365
  // Which install produced the session, so a fleet view can group by
6344
6366
  // machine. The anon id is a random UUID minted on this machine and
6345
6367
  // tied to no person, which is the point: the cockpit answers "which
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "id": "fidacy",
3
3
  "name": "Fidacy AI Agent Firewall",
4
- "description": "A signed, independently-verifiable verdict on every money-moving agent action. Blocks wrong/lookalike payee, over-cap, and duplicate-invoice fraud before money moves. Non-custodial, local-first, deny-by-default.",
4
+ "description": "Firewall for AI agents. Watches every action the agent takes and ends each session in a digest anyone can recompute; commands, paths and arguments never leave your machine, only counts and a hash. Blocks wrong/lookalike payee, over-cap and duplicate-invoice fraud before money moves. Non-custodial, local-first, deny-by-default. Anonymous telemetry (counts only) can be disabled with FIDACY_DISABLE_TELEMETRY=1.",
5
5
  "icon": "https://fidacy.com/logo.png",
6
- "version": "0.5.3",
6
+ "version": "0.5.4",
7
7
  "contracts": {
8
8
  "tools": [
9
9
  "request_payment",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fidacy/openclaw-plugin",
3
- "version": "0.5.3",
3
+ "version": "0.5.4",
4
4
  "description": "Fidacy payment firewall as a native OpenClaw plugin: signed, verifiable verdicts on every money-moving agent action, in-process (no MCP subprocess).",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Fidacy (ZeepCode Group Technology LLC) <hello@fidacy.com> (https://fidacy.com)",
@@ -47,21 +47,21 @@
47
47
  "npmSpec": "@fidacy/openclaw-plugin"
48
48
  }
49
49
  },
50
+ "scripts": {
51
+ "build": "node scripts/bundle.mjs",
52
+ "typecheck": "tsc --noEmit",
53
+ "test": "npm run build && node --test test/*.test.mjs"
54
+ },
50
55
  "engines": {
51
56
  "node": ">=20"
52
57
  },
53
58
  "devDependencies": {
59
+ "@fidacy/firewall": "workspace:*",
60
+ "@fidacy/mcp": "workspace:*",
54
61
  "@types/node": "^22.10.0",
55
62
  "esbuild": "^0.24.0",
56
63
  "openclaw": "2026.6.11",
57
64
  "typebox": "1.1.39",
58
- "typescript": "^5.6.3",
59
- "@fidacy/firewall": "0.1.1",
60
- "@fidacy/mcp": "0.7.0"
61
- },
62
- "scripts": {
63
- "build": "node scripts/bundle.mjs",
64
- "typecheck": "tsc --noEmit",
65
- "test": "npm run build && node --test test/*.test.mjs"
65
+ "typescript": "^5.6.3"
66
66
  }
67
- }
67
+ }