@dorigjo/besa 0.1.0-beta.4 → 0.1.0-beta.5
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 +38 -44
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -13,31 +13,16 @@
|
|
|
13
13
|
<p align="center">
|
|
14
14
|
<a href="https://github.com/dorigjo/besa/actions/workflows/ci.yml"><img src="https://github.com/dorigjo/besa/actions/workflows/ci.yml/badge.svg" alt="CI" /></a>
|
|
15
15
|
<a href="https://www.npmjs.com/package/@dorigjo/besa"><img src="https://img.shields.io/npm/v/@dorigjo/besa" alt="npm" /></a>
|
|
16
|
-
<img src="https://img.shields.io/badge/public_release-coming_soon-C1121F?labelColor=003049" alt="Public release coming soon" />
|
|
17
16
|
</p>
|
|
18
17
|
|
|
19
18
|
---
|
|
20
19
|
|
|
21
|
-
## Early Access
|
|
22
|
-
|
|
23
|
-
Besa 0.1.0-beta.4 is available as a GitHub Release tarball while npm publishing is pending.
|
|
24
|
-
|
|
25
|
-
Install:
|
|
26
|
-
|
|
27
|
-
```bash
|
|
28
|
-
npm install https://github.com/dorigjo/besa/releases/download/v0.1.0-beta.4/dorigjo-besa-0.1.0-beta.4.tgz
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
See [EARLY_ACCESS.md](EARLY_ACCESS.md) for integrity hash, quickstart, and known limitations.
|
|
32
|
-
|
|
33
|
-
---
|
|
34
|
-
|
|
35
20
|
Besa creates cryptographic execution evidence for AI-agent tool calls. Every
|
|
36
21
|
admission decision is signed. Every signed receipt is tamper-evident and
|
|
37
22
|
independently verifiable.
|
|
38
23
|
|
|
39
|
-
> **Beta.** `0.1.0-beta.
|
|
40
|
-
>
|
|
24
|
+
> **Beta.** `0.1.0-beta.5` is a public developer beta. Not yet production-ready.
|
|
25
|
+
> Feedback and issues: [github.com/dorigjo/besa/issues](https://github.com/dorigjo/besa/issues).
|
|
41
26
|
|
|
42
27
|
---
|
|
43
28
|
|
|
@@ -81,16 +66,13 @@ all tamper-evident. Changing any field causes verification to fail.
|
|
|
81
66
|
## Install
|
|
82
67
|
|
|
83
68
|
```bash
|
|
84
|
-
npm install @dorigjo/besa
|
|
69
|
+
npm install @dorigjo/besa
|
|
85
70
|
```
|
|
86
71
|
|
|
87
|
-
|
|
72
|
+
Pin the beta channel explicitly:
|
|
88
73
|
|
|
89
74
|
```bash
|
|
90
|
-
|
|
91
|
-
cd besa
|
|
92
|
-
npm ci
|
|
93
|
-
npm run build
|
|
75
|
+
npm install @dorigjo/besa@beta
|
|
94
76
|
```
|
|
95
77
|
|
|
96
78
|
Set the key passphrase before any signing operation:
|
|
@@ -99,33 +81,45 @@ Set the key passphrase before any signing operation:
|
|
|
99
81
|
export BESA_KEY_PASSPHRASE="your-passphrase-at-least-16-bytes"
|
|
100
82
|
```
|
|
101
83
|
|
|
84
|
+
### Build from source
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
git clone https://github.com/dorigjo/besa
|
|
88
|
+
cd besa
|
|
89
|
+
npm ci
|
|
90
|
+
npm run build
|
|
91
|
+
```
|
|
92
|
+
|
|
102
93
|
---
|
|
103
94
|
|
|
104
95
|
## Quickstart
|
|
105
96
|
|
|
106
97
|
```bash
|
|
98
|
+
# Show available commands
|
|
99
|
+
npx besa --help
|
|
100
|
+
|
|
107
101
|
# Generate or load the local signing key
|
|
108
|
-
|
|
102
|
+
npx besa keys
|
|
109
103
|
|
|
110
104
|
# Validate the manifest (dry-run, no signing)
|
|
111
|
-
|
|
105
|
+
npx besa load examples/manifest.yaml
|
|
112
106
|
|
|
113
107
|
# Sign the manifest
|
|
114
|
-
|
|
108
|
+
npx besa sign examples/manifest.yaml
|
|
115
109
|
|
|
116
110
|
# Verify the signature
|
|
117
|
-
|
|
111
|
+
npx besa verify examples/manifest.signed.json
|
|
118
112
|
|
|
119
113
|
# Admission dry-run (does not consume budget)
|
|
120
|
-
|
|
121
|
-
|
|
114
|
+
npx besa admit examples/manifest.signed.json crm.lookup # → allow
|
|
115
|
+
npx besa admit examples/manifest.signed.json crm.delete # → deny RISK_BLOCKED
|
|
122
116
|
|
|
123
117
|
# Issue a signed receipt (consumes budget)
|
|
124
|
-
|
|
118
|
+
npx besa receipt crm.lookup examples/manifest.signed.json \
|
|
125
119
|
--request examples/request.json
|
|
126
120
|
|
|
127
121
|
# Verify the receipt chain
|
|
128
|
-
|
|
122
|
+
npx besa verify-receipt .besa/receipts/<id>.json \
|
|
129
123
|
examples/manifest.signed.json
|
|
130
124
|
```
|
|
131
125
|
|
|
@@ -133,39 +127,39 @@ node dist/index.js verify-receipt .besa/receipts/<id>.json \
|
|
|
133
127
|
|
|
134
128
|
```powershell
|
|
135
129
|
$env:BESA_KEY_PASSPHRASE = "your-passphrase-at-least-16-bytes"
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
--request
|
|
130
|
+
npx besa keys
|
|
131
|
+
npx besa sign examples/manifest.yaml
|
|
132
|
+
npx besa verify examples/manifest.signed.json
|
|
133
|
+
npx besa admit examples/manifest.signed.json crm.lookup
|
|
134
|
+
npx besa receipt crm.lookup examples/manifest.signed.json `
|
|
135
|
+
--request examples/request.json
|
|
142
136
|
|
|
143
137
|
$receipt = Get-ChildItem .\.besa\receipts\*.json |
|
|
144
138
|
Sort-Object LastWriteTime -Descending | Select-Object -First 1
|
|
145
|
-
|
|
139
|
+
npx besa verify-receipt $receipt.FullName examples/manifest.signed.json
|
|
146
140
|
```
|
|
147
141
|
|
|
148
142
|
### Consumer trust (separate system)
|
|
149
143
|
|
|
150
144
|
```bash
|
|
151
145
|
# Pin the publisher's public key
|
|
152
|
-
|
|
146
|
+
npx besa trust add examples/manifest.signed.json \
|
|
153
147
|
--trust consumer-trust.json
|
|
154
148
|
|
|
155
149
|
# Verify against a pinned trust anchor (fails without it)
|
|
156
|
-
|
|
150
|
+
npx besa verify examples/manifest.signed.json \
|
|
157
151
|
--trust consumer-trust.json
|
|
158
152
|
```
|
|
159
153
|
|
|
160
154
|
### Key rotation
|
|
161
155
|
|
|
162
156
|
```bash
|
|
163
|
-
|
|
157
|
+
npx besa keys rotate
|
|
164
158
|
|
|
165
|
-
|
|
159
|
+
npx besa trust apply .besa/rotations/<rotation>.json \
|
|
166
160
|
--trust consumer-trust.json
|
|
167
161
|
|
|
168
|
-
|
|
162
|
+
npx besa sign examples/manifest.yaml # re-sign under the new key
|
|
169
163
|
```
|
|
170
164
|
|
|
171
165
|
The previous key becomes `retired`: artifacts signed before rotation remain
|
|
@@ -272,7 +266,7 @@ time under a specific key.
|
|
|
272
266
|
|
|
273
267
|
- Ed25519 signatures (256-bit security) on the complete artifact envelope
|
|
274
268
|
- AES-256-GCM key encryption at rest with scrypt KDF (N=32768, r=8, p=1)
|
|
275
|
-
- SHA-256 manifest hashing and full
|
|
269
|
+
- SHA-256 manifest hashing and full 256-bit (64-hex-character) SHA-256 public key fingerprints
|
|
276
270
|
- Domain-separated signature messages (`besa:<domain>:v1\0<canonical-json>`)
|
|
277
271
|
- Timing-safe public key comparison via `crypto.timingSafeEqual`
|
|
278
272
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dorigjo/besa",
|
|
3
|
-
"version": "0.1.0-beta.
|
|
3
|
+
"version": "0.1.0-beta.5",
|
|
4
4
|
"description": "Cryptographic execution evidence for AI-agent tool calls: signed manifests, admission decisions, and tamper-evident receipts.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/sdk.js",
|