chainfess 0.1.0 → 0.1.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/CHANGELOG.md +8 -1
- package/README.md +2 -2
- package/package.json +2 -1
- package/src/cli.mjs +2 -2
- package/src/hook.mjs +1 -1
- package/src/report.mjs +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,10 +1,17 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.1.1
|
|
4
|
+
|
|
5
|
+
- README and `--help` say "no RPC calls" for `demo` instead of "no network": `demo` calls no RPC, but `npx` downloads the package on first run.
|
|
6
|
+
- README says `cast tx` reproduces each line and `cast nonce` prints the live count, which only rises after the audit.
|
|
7
|
+
- `package.json` has a `repository` field.
|
|
8
|
+
- `--version`, the report's `toolVersion` and the hook's `npx` command name 0.1.1.
|
|
9
|
+
|
|
3
10
|
## 0.1.0
|
|
4
11
|
|
|
5
12
|
First release.
|
|
6
13
|
|
|
7
|
-
- `chainfess demo`: bundled fixture, recorded RPC replies, no wallet, no
|
|
14
|
+
- `chainfess demo`: bundled fixture, recorded RPC replies, no wallet, no RPC calls.
|
|
8
15
|
- `chainfess audit`: Claude Code session logs (`.jsonl`), subagent transcripts, saved tool outputs and Foundry `broadcast/` files, compared with the wallet's nonce and blocks on Robinhood Chain.
|
|
9
16
|
- Four outcomes, deterministic, no LLM: Accounted, Partial, Unaccounted, Foreign signer.
|
|
10
17
|
- `chainfess sign` and `chainfess verify` for signed reports.
|
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Your agent says X. The chain says Y. Chainfess lists every transaction the log does not account for.
|
|
4
4
|
|
|
5
|
-
Try it in 10 seconds, no wallet, no
|
|
5
|
+
Try it in 10 seconds, no wallet, no RPC calls:
|
|
6
6
|
|
|
7
7
|
```
|
|
8
8
|
npx chainfess demo
|
|
@@ -45,7 +45,7 @@ Reports show hashes, addresses, values, the command pattern name, the source kin
|
|
|
45
45
|
|
|
46
46
|
## Verify
|
|
47
47
|
|
|
48
|
-
Verify the rules yourself: `cast tx <hash>`
|
|
48
|
+
Verify the rules yourself: `cast tx <hash>` reproduces each line. `cast nonce <wallet>` prints the live count, which only rises after the audit. The report footer prints both lines.
|
|
49
49
|
|
|
50
50
|
## Scope
|
|
51
51
|
|
package/package.json
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "chainfess",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "Compares a coding agent's session log with what its wallet did on chain and lists every transaction the log does not account for.",
|
|
5
5
|
"license": "MIT",
|
|
6
|
+
"repository": { "type": "git", "url": "git+https://github.com/chainfess/chainfess.git" },
|
|
6
7
|
"type": "module",
|
|
7
8
|
"bin": { "chainfess": "bin/chainfess.mjs" },
|
|
8
9
|
"engines": { "node": ">=20" },
|
package/src/cli.mjs
CHANGED
|
@@ -17,7 +17,7 @@ const HELP = `chainfess: your agent says X, the chain says Y.
|
|
|
17
17
|
Lists every transaction a coding agent's session log does not account for.
|
|
18
18
|
|
|
19
19
|
chainfess demo [--json]
|
|
20
|
-
Bundled fixture, recorded RPC replies, no wallet, no
|
|
20
|
+
Bundled fixture, recorded RPC replies, no wallet, no RPC calls.
|
|
21
21
|
|
|
22
22
|
chainfess audit --wallet 0x… [--log file]… [--all-sessions] [--rpc url] [--chain-id n]
|
|
23
23
|
[--from ISO] [--to ISO] [--from-block n] [--to-block n] [--max-hours h]
|
|
@@ -222,7 +222,7 @@ export async function main(argv, ioOverride = {}) {
|
|
|
222
222
|
return cmd === undefined ? 2 : 0;
|
|
223
223
|
case '--version':
|
|
224
224
|
case '-v':
|
|
225
|
-
io.out('0.1.
|
|
225
|
+
io.out('0.1.1\n');
|
|
226
226
|
return 0;
|
|
227
227
|
default:
|
|
228
228
|
io.err(`unknown command: ${String(cmd).slice(0, 40)}\n${HELP}`);
|
package/src/hook.mjs
CHANGED
|
@@ -9,7 +9,7 @@ import { parseArgs } from 'node:util';
|
|
|
9
9
|
|
|
10
10
|
const BIN = fileURLToPath(new URL('../bin/chainfess.mjs', import.meta.url));
|
|
11
11
|
const MARKER = 'chainfess-session-end-hook';
|
|
12
|
-
const VERSION = '0.1.
|
|
12
|
+
const VERSION = '0.1.1';
|
|
13
13
|
const STDIN_WAIT_MS = 2000;
|
|
14
14
|
|
|
15
15
|
function paths(io) {
|
package/src/report.mjs
CHANGED
|
@@ -3,7 +3,7 @@ import { toChecksum } from './keccak.mjs';
|
|
|
3
3
|
import { STATUS } from './classify.mjs';
|
|
4
4
|
import { DEFAULT_RPC } from './rpc.mjs';
|
|
5
5
|
|
|
6
|
-
export const TOOL_VERSION = '0.1.
|
|
6
|
+
export const TOOL_VERSION = '0.1.1';
|
|
7
7
|
const iso = (ms) => (ms === null || ms === undefined ? null : new Date(ms).toISOString().replace(/\.\d{3}Z$/, 'Z'));
|
|
8
8
|
|
|
9
9
|
export function weiToEth(wei) {
|