@fidacy/openclaw-plugin 0.2.7 → 0.2.9
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 +24 -0
- package/dist/index.js +11 -9
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,29 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.2.9
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 48e1a28: Rebundle with @fidacy/mcp 0.3.0: the free-trial decision counter now survives the background auto-provision write (it was being wiped, resetting the 20-decision anonymous trial on every restart), and anonymous telemetry counts tool usage (tool_use event, allowlisted tool name only, never content).
|
|
8
|
+
|
|
9
|
+
## 0.2.8
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- 2e846a7: Funnel: move the strongest claim nudge before the activation wall, and make the
|
|
14
|
+
first-block nudge scary-but-true.
|
|
15
|
+
|
|
16
|
+
The proof-teaser nudge fired at decision 25, stranded behind the 20-decision
|
|
17
|
+
activation wall: once the firewall fails closed at 20, denied calls stop
|
|
18
|
+
advancing the counter, so 25 was never reached and the single strongest reason
|
|
19
|
+
to claim (the history you already built) never showed. It now fires at 15, five
|
|
20
|
+
decisions before the wall — carrot before stick, which is the highest-converting
|
|
21
|
+
moment the PLG research points to.
|
|
22
|
+
|
|
23
|
+
The first-deny nudge now cites the real $441,788 agent incident. Grounded fear,
|
|
24
|
+
never manufactured: for a company whose pitch is verify-don't-trust, a cited
|
|
25
|
+
fact converts and a fabricated panic would be self-refuting.
|
|
26
|
+
|
|
3
27
|
## 0.2.7
|
|
4
28
|
|
|
5
29
|
### Patch Changes
|
package/dist/index.js
CHANGED
|
@@ -4709,7 +4709,7 @@ function resolveMandateRules(cfg) {
|
|
|
4709
4709
|
}
|
|
4710
4710
|
|
|
4711
4711
|
// ../mcp/src/telemetry.ts
|
|
4712
|
-
var CLIENT_VERSION = true ? "0.2.
|
|
4712
|
+
var CLIENT_VERSION = true ? "0.2.9" : "dev";
|
|
4713
4713
|
function bandOf(amount) {
|
|
4714
4714
|
if (typeof amount !== "number" || !Number.isFinite(amount) || amount <= 0) return void 0;
|
|
4715
4715
|
if (amount < 10) return "lt10";
|
|
@@ -4760,7 +4760,7 @@ function resultOf(status, violatedRule) {
|
|
|
4760
4760
|
if (r.startsWith("non_positive_amount") || r.startsWith("invalid_")) return "deny_invalid";
|
|
4761
4761
|
return "deny_scope";
|
|
4762
4762
|
}
|
|
4763
|
-
function record(type, result, band, capRatio) {
|
|
4763
|
+
function record(type, result, band, capRatio, action) {
|
|
4764
4764
|
if (!telemetryEnabled()) return;
|
|
4765
4765
|
buffer.push({
|
|
4766
4766
|
type,
|
|
@@ -4769,7 +4769,8 @@ function record(type, result, band, capRatio) {
|
|
|
4769
4769
|
shell: currentShell,
|
|
4770
4770
|
...result ? { result } : {},
|
|
4771
4771
|
...band ? { band } : {},
|
|
4772
|
-
...capRatio ? { cap_ratio: capRatio } : {}
|
|
4772
|
+
...capRatio ? { cap_ratio: capRatio } : {},
|
|
4773
|
+
...action ? { action } : {}
|
|
4773
4774
|
});
|
|
4774
4775
|
if (!flushTimer) {
|
|
4775
4776
|
flushTimer = setTimeout(() => {
|
|
@@ -4887,7 +4888,7 @@ function requestUpgrade() {
|
|
|
4887
4888
|
}
|
|
4888
4889
|
|
|
4889
4890
|
// ../mcp/src/provision.ts
|
|
4890
|
-
var CLIENT_VERSION2 = true ? "0.2.
|
|
4891
|
+
var CLIENT_VERSION2 = true ? "0.2.9" : "dev";
|
|
4891
4892
|
function provisionEnabled() {
|
|
4892
4893
|
const v = (process.env.FIDACY_DISABLE_PROVISION ?? "").trim().toLowerCase();
|
|
4893
4894
|
return !(v === "1" || v === "true" || v === "yes");
|
|
@@ -4911,8 +4912,9 @@ async function autoProvision() {
|
|
|
4911
4912
|
if (!res.ok) return "failed";
|
|
4912
4913
|
const data = await res.json();
|
|
4913
4914
|
if (typeof data.api_key !== "string" || !data.api_key) return "failed";
|
|
4915
|
+
const fresh = readConfig() ?? cfg;
|
|
4914
4916
|
writeConfig({
|
|
4915
|
-
...
|
|
4917
|
+
...fresh,
|
|
4916
4918
|
api_key: data.api_key,
|
|
4917
4919
|
tier: data.tier === "paid" ? "paid" : "free"
|
|
4918
4920
|
});
|
|
@@ -4947,7 +4949,7 @@ function bumpDecisionCount() {
|
|
|
4947
4949
|
sessionDecisions += 1;
|
|
4948
4950
|
const cfg = readConfig();
|
|
4949
4951
|
if (!cfg) return sessionDecisions;
|
|
4950
|
-
const n = (cfg.decisions_count ?? 0) + 1;
|
|
4952
|
+
const n = Math.max((cfg.decisions_count ?? 0) + 1, sessionDecisions);
|
|
4951
4953
|
cfg.decisions_count = n;
|
|
4952
4954
|
try {
|
|
4953
4955
|
writeConfig(cfg);
|
|
@@ -4963,13 +4965,13 @@ function decisionNudge(status, violatedRule, upgradeToolName) {
|
|
|
4963
4965
|
return `That was a duplicate-invoice (BEC) catch, the #1 payment fraud. For your operator: ${claimPath}. On a hosted account every block like this is server-signed and anchored to Bitcoin: court-grade evidence.`;
|
|
4964
4966
|
}
|
|
4965
4967
|
if (status === "DENY" && nudgeOnce("first_deny")) {
|
|
4966
|
-
return `Fidacy just blocked this for
|
|
4968
|
+
return `Fidacy just blocked this payment before it moved. This is the failure it exists for: last week an AI agent sent $441,788 to a stranger who posted a fake story with a wallet address. Nothing was checking it. For your operator: ${claimPath}.`;
|
|
4967
4969
|
}
|
|
4968
4970
|
if (status === "ALLOW" && nudgeOnce("first_allow")) {
|
|
4969
4971
|
return `Fidacy authorized this and signed the decision. For your operator: ${claimPath}.`;
|
|
4970
4972
|
}
|
|
4971
|
-
if (count ===
|
|
4972
|
-
return `
|
|
4973
|
+
if (count === 15 && nudgeOnce("proof_teaser")) {
|
|
4974
|
+
return `Fidacy has now checked ${count} payments on this agent and stands between it and the wrong one, the prompt-injected payee, the duplicate, the over-limit charge. That protection pauses after 20 decisions without a free key. Keep the agent covered: ${claimPath}.`;
|
|
4973
4975
|
}
|
|
4974
4976
|
if (count === 10 && nudgeOnce("milestone_10")) {
|
|
4975
4977
|
return `That's 10 actions gated on this install. For your operator: ${claimPath}.`;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fidacy/openclaw-plugin",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.9",
|
|
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)",
|
|
@@ -56,8 +56,8 @@
|
|
|
56
56
|
"openclaw": "2026.6.11",
|
|
57
57
|
"typebox": "1.1.39",
|
|
58
58
|
"typescript": "^5.6.3",
|
|
59
|
-
"@fidacy/
|
|
60
|
-
"@fidacy/
|
|
59
|
+
"@fidacy/mcp": "0.3.0",
|
|
60
|
+
"@fidacy/firewall": "0.1.1"
|
|
61
61
|
},
|
|
62
62
|
"scripts": {
|
|
63
63
|
"build": "node scripts/bundle.mjs",
|