@fidacy/openclaw-plugin 0.5.7 → 0.5.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/CHANGELOG.md +13 -0
- package/README.md +54 -26
- package/dist/index.js +3 -3
- package/openclaw.plugin.json +5 -5
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.5.8
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 59bd236: Complete and reconcile the privacy disclosure. The ClawHub security audit put this plugin in Review for "inconsistent privacy disclosures about local storage and outbound metadata", and it was right on both counts.
|
|
8
|
+
|
|
9
|
+
- **Local storage.** The README claimed local state was `config.json` plus `audit/audit.log` and ended with "Nothing else". `~/.fidacy/pending-anchors.jsonl` was never disclosed. A separate line promised a session log at `~/.fidacy/sessions/`, which belongs to the MCP-plus-hooks install and not to this plugin. Both are now stated once, accurately, as a complete list.
|
|
10
|
+
- **Outbound metadata.** The README named two network calls. The plugin makes five: `/v1/telemetry`, `/v1/provision`, `/v1/artifacts`, `/v1/assess` and `/v1/register`. All five are now listed with what each one sends and what turns it off, in one place instead of two copies that had drifted apart.
|
|
11
|
+
- **The static-analysis flag.** `suspicious.env_credential_access` is described accurately now: reading your key and sending it to your engine is what a bearer token is, and every tool that accepts an API key matches that pattern. The old text gave a different and wrong reason ("the identifier is named like a secret"), in a second copy that contradicted the first.
|
|
12
|
+
- The "verify it yourself" pointer aimed at a mirror repo while releases are provenance-linked to `lucaslubi/fidacy`. It now points where the code actually is, so the instruction works.
|
|
13
|
+
|
|
14
|
+
No behaviour changed. This release is documentation only, and every claim in it was checked against the code rather than against the previous README.
|
|
15
|
+
|
|
3
16
|
## 0.5.7
|
|
4
17
|
|
|
5
18
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -15,16 +15,35 @@ a hash digest anyone can recompute.
|
|
|
15
15
|
Stays on your machine, always:
|
|
16
16
|
|
|
17
17
|
- the command, file path and arguments of every tool call
|
|
18
|
-
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
-
|
|
26
|
-
|
|
27
|
-
|
|
18
|
+
- your mandate and config (`~/.fidacy/`), which is yours to delete
|
|
19
|
+
|
|
20
|
+
Written to disk, and this is the complete list:
|
|
21
|
+
|
|
22
|
+
- `~/.fidacy/config.json` (mode 0600): the anonymous install id, tier, and your
|
|
23
|
+
mandate rules
|
|
24
|
+
- `~/.fidacy/audit/audit.log`: the hash-chained decision log
|
|
25
|
+
- `~/.fidacy/pending-anchors.jsonl`: session digests waiting to be anchored,
|
|
26
|
+
written only while an anchor is queued and cleared once it lands
|
|
27
|
+
|
|
28
|
+
Leaves your machine, and this is the complete list of hosts and paths. Every one
|
|
29
|
+
goes to your configured engine (`https://api.fidacy.com` by default) and nowhere
|
|
30
|
+
else:
|
|
31
|
+
|
|
32
|
+
- `/v1/telemetry`: anonymous usage events (install, session, decision counts; a
|
|
33
|
+
random UUID, never a name or hostname). Off with `FIDACY_DISABLE_TELEMETRY=1`.
|
|
34
|
+
- `/v1/provision`: a background free-key request. Off with
|
|
35
|
+
`FIDACY_DISABLE_PROVISION=1`.
|
|
36
|
+
- `/v1/artifacts`: per-category counts (for example `shell: 9, file: 4`) and the
|
|
37
|
+
session digest, plus any hash you anchor with `anchor_artifact`. Hashes and
|
|
38
|
+
counts only; no file content and no command text.
|
|
39
|
+
- `/v1/assess`: only when you call `assess_action` yourself, and only if you set
|
|
40
|
+
an engine API key. Sends the action you passed to the tool.
|
|
41
|
+
- `/v1/register`: only if you set `operatorEmail`, which is opt-in and removable.
|
|
42
|
+
Sends that email and nothing else.
|
|
43
|
+
|
|
44
|
+
With `FIDACY_DISABLE_TELEMETRY=1`, `FIDACY_DISABLE_PROVISION=1`, no engine key
|
|
45
|
+
and no `operatorEmail`, the plugin makes no network calls at all and gates
|
|
46
|
+
payments entirely offline.
|
|
28
47
|
|
|
29
48
|
## The tools
|
|
30
49
|
|
|
@@ -103,22 +122,32 @@ Verify any verdict yourself: https://api.fidacy.com/.well-known/jwks.json
|
|
|
103
122
|
|
|
104
123
|
This is a payment-control plugin, so audit it like one. What it actually does:
|
|
105
124
|
|
|
106
|
-
- **Network calls it makes:**
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
125
|
+
- **Network calls it makes:** the five endpoints listed under "what leaves your
|
|
126
|
+
machine" above, all on your configured engine and nowhere else. That list is
|
|
127
|
+
stated once, at the top, on purpose: this section used to carry a second,
|
|
128
|
+
shorter copy naming only two of them, and a privacy disclosure that
|
|
129
|
+
contradicts itself is worse than a long one. None of the five is ever on the
|
|
130
|
+
decision path; payment gating works fully offline.
|
|
131
|
+
- **Local state:** the three files listed above, and nothing else. This bullet
|
|
132
|
+
used to name two of them and end with "Nothing else", which was not true:
|
|
133
|
+
`pending-anchors.jsonl` was never disclosed. Delete `~/.fidacy` to clear all
|
|
134
|
+
of it.
|
|
113
135
|
- **`FIDACY_SIGNING_KEY_B64`:** an OPTIONAL env var the operator sets to pin a
|
|
114
136
|
stable local Ed25519 signing key for grants. If unset, a per-session key is
|
|
115
137
|
generated. The plugin reads it; it never writes or transmits it.
|
|
116
138
|
- **API keys:** read from your plugin config (`engineApiKey`) or the
|
|
117
139
|
`FIDACY_ENGINE_API_KEY` env var, sent only to your configured engine URL
|
|
118
140
|
(default `api.fidacy.com`) as a bearer token. There are no hardcoded keys or
|
|
119
|
-
secrets in the published bundle
|
|
120
|
-
|
|
121
|
-
|
|
141
|
+
secrets in the published bundle. A static analyser will flag this as
|
|
142
|
+
`suspicious.env_credential_access` ("environment variable access combined with
|
|
143
|
+
network send"), and that description is accurate: reading your key and sending
|
|
144
|
+
it to your engine is what a bearer token IS, and every tool that takes an API
|
|
145
|
+
key matches the same pattern. What the rule cannot tell you is WHOSE key and
|
|
146
|
+
WHICH host, so check both yourself: the bundle ships unminified, the source is
|
|
147
|
+
at github.com/lucaslubi/fidacy (`packages/openclaw-plugin`), and every release
|
|
148
|
+
is provenance-linked to the commit it was built from. The command below settles
|
|
149
|
+
the "hardcoded secret" question in one line, and the test suite fails the build
|
|
150
|
+
if a literal ever gets in.
|
|
122
151
|
- **Verify our signatures, not our word:** every verdict checks against the public
|
|
123
152
|
JWKS at `api.fidacy.com/.well-known/jwks.json` with the open-source
|
|
124
153
|
[`@fidacy/verify`](https://www.npmjs.com/package/@fidacy/verify).
|
|
@@ -141,15 +170,14 @@ published package, in any version. Check it yourself:
|
|
|
141
170
|
cd $(mktemp -d) && curl -sL $(npm view @fidacy/openclaw-plugin dist.tarball) | tar xz && grep -rE "fky_(live|test)_[A-Za-z0-9]{8,}|BEGIN [A-Z ]*PRIVATE KEY" package/ || echo "no credential literals found"
|
|
142
171
|
```
|
|
143
172
|
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
above is what settles the question, and the test suite fails the build if a literal ever
|
|
148
|
-
does get in.
|
|
173
|
+
On the `suspicious.env_credential_access` finding a static analyser reports here, see
|
|
174
|
+
the "API keys" bullet above. It is stated in one place rather than two, because the
|
|
175
|
+
two copies had drifted into giving different reasons for the same flag.
|
|
149
176
|
|
|
150
177
|
**Turning the network off.** `FIDACY_DISABLE_TELEMETRY=1` stops anonymous install and
|
|
151
178
|
usage telemetry. `FIDACY_DISABLE_PROVISION=1` stops the background free-key provisioning.
|
|
152
|
-
With both set
|
|
179
|
+
With both set, no engine credential and no `operatorEmail`, the plugin decides locally
|
|
180
|
+
and contacts nothing: those four switches cover all five endpoints listed at the top.
|
|
153
181
|
|
|
154
182
|
**Where the history lives.** Decisions go to a hash-chained log under `~/.fidacy` on your
|
|
155
183
|
machine. That local chain is what makes `spend_summary`, `list_decisions` and
|
package/dist/index.js
CHANGED
|
@@ -5102,7 +5102,7 @@ var FileAuditStore = class {
|
|
|
5102
5102
|
import { statSync } from "node:fs";
|
|
5103
5103
|
|
|
5104
5104
|
// ../mcp/src/telemetry.ts
|
|
5105
|
-
var CLIENT_VERSION = true ? "0.5.
|
|
5105
|
+
var CLIENT_VERSION = true ? "0.5.8" : "dev";
|
|
5106
5106
|
function bandOf(amount) {
|
|
5107
5107
|
if (typeof amount !== "number" || !Number.isFinite(amount) || amount <= 0) return void 0;
|
|
5108
5108
|
if (amount < 10) return "lt10";
|
|
@@ -5317,7 +5317,7 @@ function requestUpgrade() {
|
|
|
5317
5317
|
}
|
|
5318
5318
|
|
|
5319
5319
|
// ../mcp/src/provision.ts
|
|
5320
|
-
var CLIENT_VERSION2 = true ? "0.5.
|
|
5320
|
+
var CLIENT_VERSION2 = true ? "0.5.8" : "dev";
|
|
5321
5321
|
function provisionEnabled() {
|
|
5322
5322
|
const v = (process.env.FIDACY_DISABLE_PROVISION ?? "").trim().toLowerCase();
|
|
5323
5323
|
return !(v === "1" || v === "true" || v === "yes");
|
|
@@ -5460,7 +5460,7 @@ function trialCountdownLine(keyOverride) {
|
|
|
5460
5460
|
}
|
|
5461
5461
|
|
|
5462
5462
|
// ../mcp/src/register.ts
|
|
5463
|
-
var CLIENT_VERSION3 = true ? "0.5.
|
|
5463
|
+
var CLIENT_VERSION3 = true ? "0.5.8" : "dev";
|
|
5464
5464
|
function endpoint3() {
|
|
5465
5465
|
const base = (process.env.FIDACY_ENGINE_URL ?? "https://api.fidacy.com").replace(/\/$/, "");
|
|
5466
5466
|
return `${base}/v1/register`;
|
package/openclaw.plugin.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"name": "Fidacy AI Agent Firewall",
|
|
4
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.
|
|
6
|
+
"version": "0.5.8",
|
|
7
7
|
"contracts": {
|
|
8
8
|
"tools": [
|
|
9
9
|
"request_payment",
|
|
@@ -25,19 +25,19 @@
|
|
|
25
25
|
"properties": {
|
|
26
26
|
"operatorEmail": {
|
|
27
27
|
"type": "string",
|
|
28
|
-
"description": "Your email (optional). Ties this agent's protection history to you so it can move into a free account, and lets Fidacy reach you about this install. Never shared; remove any time.
|
|
28
|
+
"description": "Your email (optional). Ties this agent's protection history to you so it can move into a free account, and lets Fidacy reach you about this install. Never shared; remove any time."
|
|
29
29
|
},
|
|
30
30
|
"engineApiKey": {
|
|
31
31
|
"type": "string",
|
|
32
|
-
"description": "Fidacy engine API key (fky_live_/fky_test_) enabling signed verdicts via assess_action. Falls back to FIDACY_ENGINE_API_KEY.
|
|
32
|
+
"description": "Fidacy engine API key (fky_live_/fky_test_) enabling signed verdicts via assess_action. Falls back to FIDACY_ENGINE_API_KEY."
|
|
33
33
|
},
|
|
34
34
|
"engineUrl": {
|
|
35
35
|
"type": "string",
|
|
36
|
-
"description": "Fidacy engine base URL. Defaults to https://api.fidacy.com (or FIDACY_ENGINE_URL).
|
|
36
|
+
"description": "Fidacy engine base URL. Defaults to https://api.fidacy.com (or FIDACY_ENGINE_URL)."
|
|
37
37
|
},
|
|
38
38
|
"subject": {
|
|
39
39
|
"type": "string",
|
|
40
|
-
"description": "Mandate subject identity for this agent. Defaults to agent:demo (or FIDACY_SUBJECT).
|
|
40
|
+
"description": "Mandate subject identity for this agent. Defaults to agent:demo (or FIDACY_SUBJECT)."
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
43
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fidacy/openclaw-plugin",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.8",
|
|
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)",
|