@tenova/swt3-ai 0.2.5 → 0.2.7
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 +72 -11
- package/dist/buffer.d.ts +1 -0
- package/dist/buffer.d.ts.map +1 -1
- package/dist/buffer.js +7 -0
- package/dist/buffer.js.map +1 -1
- package/dist/clearing.d.ts +1 -1
- package/dist/clearing.d.ts.map +1 -1
- package/dist/clearing.js +59 -1
- package/dist/clearing.js.map +1 -1
- package/dist/demo.js +10 -0
- package/dist/demo.js.map +1 -1
- package/dist/handoff.d.ts.map +1 -1
- package/dist/handoff.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/signing.d.ts +20 -0
- package/dist/signing.d.ts.map +1 -0
- package/dist/signing.js +28 -0
- package/dist/signing.js.map +1 -0
- package/dist/types.d.ts +8 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -1
- package/dist/witness.d.ts +16 -0
- package/dist/witness.d.ts.map +1 -1
- package/dist/witness.js +78 -1
- package/dist/witness.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
Deterministic AI Governance for production agents. Zero latency. Zero data retention.
|
|
2
|
+
|
|
3
|
+
[](https://www.npmjs.com/package/@tenova/swt3-ai)
|
|
4
|
+
[](https://www.npmjs.com/package/@tenova/swt3-ai)
|
|
5
|
+
[](https://github.com/tenova-labs/swt3-ai/blob/main/LICENSE)
|
|
2
6
|
|
|
3
7
|
# @tenova/swt3-ai
|
|
4
8
|
|
|
@@ -6,6 +10,10 @@ Cryptographic AI Governance for the Edge. Zero Latency. Zero Data Retention.
|
|
|
6
10
|
|
|
7
11
|
Works with OpenAI, Anthropic, Vercel AI SDK, and any OpenAI-compatible endpoint (vLLM, Ollama, Azure, Llama.cpp).
|
|
8
12
|
|
|
13
|
+
## Why SWT3?
|
|
14
|
+
|
|
15
|
+
AI agents are making production decisions, but when regulators ask "prove your AI followed the rules," most teams have nothing but logs and dashboards. SWT3 produces cryptographic, tamper-proof evidence of every AI action. No prompt data leaves your infrastructure. The EU AI Act (enforcement: August 2, 2026) requires exactly this.
|
|
16
|
+
|
|
9
17
|
## See It Work in 10 Seconds
|
|
10
18
|
|
|
11
19
|
No API keys. No account. No network calls.
|
|
@@ -15,7 +23,7 @@ npm install @tenova/swt3-ai
|
|
|
15
23
|
npx swt3-demo
|
|
16
24
|
```
|
|
17
25
|
|
|
18
|
-
You'll see the full SWT3 witnessing pipeline: hash, extract, clear, anchor, verify
|
|
26
|
+
You'll see the full SWT3 witnessing pipeline: hash, extract, clear, anchor, verify, all running locally. When you're ready for production, keep reading.
|
|
19
27
|
|
|
20
28
|
## Three Lines of Code
|
|
21
29
|
|
|
@@ -141,7 +149,7 @@ const azureClient = witness.wrap(
|
|
|
141
149
|
|
|
142
150
|
## Quick Start (Try It Locally)
|
|
143
151
|
|
|
144
|
-
Want to see the SDK work before connecting to a live endpoint? Use `factorHandoff` to write witness anchors to local JSON files
|
|
152
|
+
Want to see the SDK work before connecting to a live endpoint? Use `factorHandoff` to write witness anchors to local JSON files. No account needed.
|
|
145
153
|
|
|
146
154
|
```typescript
|
|
147
155
|
import { Witness } from "@tenova/swt3-ai";
|
|
@@ -149,7 +157,7 @@ import OpenAI from "openai";
|
|
|
149
157
|
|
|
150
158
|
const witness = new Witness({
|
|
151
159
|
endpoint: "https://sovereign.tenova.io",
|
|
152
|
-
apiKey: "test", // any string
|
|
160
|
+
apiKey: "test", // any string, handoff runs before network flush
|
|
153
161
|
tenantId: "LOCAL_TEST",
|
|
154
162
|
factorHandoff: "file", // write anchors to ./swt3-handoff/ as JSON
|
|
155
163
|
});
|
|
@@ -162,14 +170,31 @@ const response = await client.chat.completions.create({
|
|
|
162
170
|
});
|
|
163
171
|
console.log(response.choices[0].message.content);
|
|
164
172
|
|
|
165
|
-
// Check ./swt3-handoff/
|
|
173
|
+
// Check ./swt3-handoff/ - you'll see a JSON file per inference with:
|
|
166
174
|
// - SHA-256 fingerprint
|
|
167
175
|
// - Model ID, latency, token count
|
|
168
176
|
// - Clearing level applied
|
|
169
177
|
// - Full factor data for independent verification
|
|
170
178
|
```
|
|
171
179
|
|
|
172
|
-
When you're ready for production, [
|
|
180
|
+
When you're ready for production, [create a free account](https://sovereign.tenova.io/signup) to get your tenant ID and API key. Point the SDK at your enclave and every inference is witnessed, anchored, and verifiable.
|
|
181
|
+
|
|
182
|
+
## Local SDK vs Axiom Engine
|
|
183
|
+
|
|
184
|
+
| Capability | Local SDK | + Axiom Engine (free) |
|
|
185
|
+
|---|---|---|
|
|
186
|
+
| Mint anchors | ✓ | ✓ |
|
|
187
|
+
| Verify one anchor | ✓ | ✓ |
|
|
188
|
+
| Evidence retention | 0 (files on disk) | 7 days (free) / 90 days (Pro) |
|
|
189
|
+
| Compliance dashboard | — | ✓ |
|
|
190
|
+
| Auditor share links | — | ✓ (Pro) |
|
|
191
|
+
| EU AI Act conformity | — | ✓ (Pro) |
|
|
192
|
+
| Compliance Passport | — | ✓ (Pro) |
|
|
193
|
+
| Enclave integrity proof | — | ✓ (Enclave) |
|
|
194
|
+
| **Survives an audit** | **No** | **Yes** |
|
|
195
|
+
|
|
196
|
+
> **Local anchors prove it to you. Axiom proves it to your auditor.**
|
|
197
|
+
> [Create a free account →](https://sovereign.tenova.io/signup)
|
|
173
198
|
|
|
174
199
|
## What Happens Per Inference
|
|
175
200
|
|
|
@@ -213,6 +238,35 @@ const witness = new Witness({
|
|
|
213
238
|
| AI-MDL.2 | Model version identifier recorded | EU AI Act Art. 72 |
|
|
214
239
|
| AI-GRD.1 | Required guardrails were active | NIST AI RMF MANAGE 4.1 |
|
|
215
240
|
| AI-GRD.2 | No content filter / refusal triggered | EU AI Act Art. 9 |
|
|
241
|
+
| AI-TOOL.1 | Agent tool/function call recorded (latency, success) | NIST AI RMF MANAGE 4.1 |
|
|
242
|
+
| AI-ID.1 | Witness instance identity attested (agent accountability) | EU AI Act Art. 13 |
|
|
243
|
+
|
|
244
|
+
## View an Anchor
|
|
245
|
+
|
|
246
|
+
A Level 1 anchor for AI-INF.1 (Inference Provenance). This is what reaches the witness ledger. No prompts, no responses, just cryptographic proof.
|
|
247
|
+
|
|
248
|
+
```json
|
|
249
|
+
{
|
|
250
|
+
"procedure_id": "AI-INF.1",
|
|
251
|
+
"factor_a": 1,
|
|
252
|
+
"factor_b": 1,
|
|
253
|
+
"factor_c": 0,
|
|
254
|
+
"clearing_level": 1,
|
|
255
|
+
"anchor_fingerprint": "c059eb5938c0",
|
|
256
|
+
"anchor_epoch": 1774800000,
|
|
257
|
+
"fingerprint_timestamp_ms": 1774800000000,
|
|
258
|
+
"ai_prompt_hash": "315f5bdb76d078c4",
|
|
259
|
+
"ai_response_hash": "a1b2c3d4e5f60718",
|
|
260
|
+
"ai_latency_ms": 842,
|
|
261
|
+
"ai_model_id": "gpt-4o",
|
|
262
|
+
"ai_context": {
|
|
263
|
+
"provider": "openai",
|
|
264
|
+
"guardrails": ["content-filter", "pii-redaction"]
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
The `anchor_fingerprint` is computed from `SHA256("WITNESS:{tenant}:{procedure}:{fa}:{fb}:{fc}:{ts}")`. Anyone with the factors can independently verify the math.
|
|
216
270
|
|
|
217
271
|
## Resilience (Flight Recorder)
|
|
218
272
|
|
|
@@ -316,21 +370,28 @@ SWT3 AI Witness is available as a managed service through [Axiom Sovereign Engin
|
|
|
316
370
|
| **Enclave** | 1 year | + OSCAL, Gate API, attestations, webhook feeds | $9,500/mo |
|
|
317
371
|
| **Sovereign** | Custom | + White-glove ATO sprint, mock assessment, on-prem | [Book Assessment](https://calendly.com/tenova-axiom/30min) |
|
|
318
372
|
|
|
319
|
-
|
|
373
|
+
1,100+ downloads across npm and PyPI. 151 procedures. 13 frameworks. Patent pending.
|
|
320
374
|
|
|
321
375
|
## Ready to Witness Your AI?
|
|
322
376
|
|
|
323
377
|
Get an API key and start witnessing in under 10 minutes:
|
|
324
378
|
|
|
325
|
-
- [
|
|
326
|
-
- [Quickstart Guide](https://sovereign.tenova.io/guides/ai-witness-quickstart.html)
|
|
327
|
-
- [
|
|
379
|
+
- [Create a Free Account](https://sovereign.tenova.io/signup) - instant API key, start witnessing in 5 minutes
|
|
380
|
+
- [Quickstart Guide](https://sovereign.tenova.io/guides/ai-witness-quickstart.html) - 10-minute integration walkthrough
|
|
381
|
+
- [Book a Strategy Call](https://calendly.com/tenova-axiom/30min) - enterprise, on-prem, or Sovereign tier
|
|
382
|
+
|
|
383
|
+
## Compliance & Privacy
|
|
384
|
+
|
|
385
|
+
Your prompts and responses **never leave your infrastructure**. The SDK computes SHA-256 hashes locally and transmits only irreversible hashes and numeric factors. At Clearing Level 3, even the model name is hashed.
|
|
386
|
+
|
|
387
|
+
- [Data Flow and Privacy Architecture](https://github.com/tenova-labs/swt3-ai/blob/main/docs/data-flow.md) - Visual data boundary for legal and DPO review
|
|
388
|
+
- [Clearing & Data Sovereignty Addendum](https://sovereign.tenova.io/terms/clearing-addendum) - Shared responsibility, incident response SLA, regulatory applicability
|
|
389
|
+
- [Air-Gap Deployment Guide](https://github.com/tenova-labs/swt3-ai/blob/main/docs/sovereign-sync.md) - Zero-egress operation, sneakernet sync, offline verification
|
|
328
390
|
|
|
329
391
|
## Documentation
|
|
330
392
|
|
|
331
393
|
- [SDK Developer Docs](https://sovereign.tenova.io/docs/) - Quickstart, providers, clearing levels, configuration
|
|
332
394
|
- [Factor Handoff Protocol](https://sovereign.tenova.io/docs/factor-handoff-protocol.html) - How factors are securely transferred to your custody
|
|
333
|
-
- [Clearing Protocol Terms](https://sovereign.tenova.io/terms/clearing-addendum) - Shared responsibility model and liability
|
|
334
395
|
- [CMMC Compliance Overlay](https://sovereign.tenova.io/guides/cmmc-overlay.html) - Control mappings for defense industrial base
|
|
335
396
|
|
|
336
397
|
---
|
package/dist/buffer.d.ts
CHANGED
|
@@ -19,6 +19,7 @@ export declare class WitnessBuffer {
|
|
|
19
19
|
private timer;
|
|
20
20
|
private stopped;
|
|
21
21
|
private consecutiveFailures;
|
|
22
|
+
private ctaShown;
|
|
22
23
|
constructor(config: WitnessConfig, maxRetryBuffer?: number);
|
|
23
24
|
/** Add a single payload to the buffer. */
|
|
24
25
|
enqueue(payload: WitnessPayload): void;
|
package/dist/buffer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buffer.d.ts","sourceRoot":"","sources":["../src/buffer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAiB,MAAM,YAAY,CAAC;AAI/F,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,KAAK,CAAwB;IACrC,OAAO,CAAC,UAAU,CAAwB;IAC1C,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,WAAW,CAAwB;IAC3C,OAAO,CAAC,KAAK,CAA8C;IAC3D,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,mBAAmB,CAAK;
|
|
1
|
+
{"version":3,"file":"buffer.d.ts","sourceRoot":"","sources":["../src/buffer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAiB,MAAM,YAAY,CAAC;AAI/F,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,KAAK,CAAwB;IACrC,OAAO,CAAC,UAAU,CAAwB;IAC1C,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,WAAW,CAAwB;IAC3C,OAAO,CAAC,KAAK,CAA8C;IAC3D,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,mBAAmB,CAAK;IAChC,OAAO,CAAC,QAAQ,CAAS;gBAEb,MAAM,EAAE,aAAa,EAAE,cAAc,SAA2B;IAM5E,0CAA0C;IAC1C,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAQtC,6BAA6B;IAC7B,WAAW,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,IAAI;IAI7C,yCAAyC;IACnC,KAAK,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAIxC,oDAAoD;IAC9C,IAAI,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAgBvC,yDAAyD;IACzD,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,oDAAoD;IACpD,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED,2CAA2C;IAC3C,IAAI,QAAQ,IAAI,cAAc,EAAE,CAE/B;IAED,OAAO,CAAC,UAAU;YAYJ,aAAa;YAWb,SAAS;CAwFxB"}
|
package/dist/buffer.js
CHANGED
|
@@ -19,6 +19,7 @@ export class WitnessBuffer {
|
|
|
19
19
|
timer = null;
|
|
20
20
|
stopped = false;
|
|
21
21
|
consecutiveFailures = 0;
|
|
22
|
+
ctaShown = false;
|
|
22
23
|
constructor(config, maxRetryBuffer = DEFAULT_MAX_RETRY_BUFFER) {
|
|
23
24
|
this.config = config;
|
|
24
25
|
this.maxRetryBuffer = maxRetryBuffer;
|
|
@@ -124,6 +125,12 @@ export class WitnessBuffer {
|
|
|
124
125
|
if (result.rejected > 0) {
|
|
125
126
|
console.warn(`[swt3-ai] Batch flush: ${result.accepted} accepted, ${result.rejected} rejected`);
|
|
126
127
|
}
|
|
128
|
+
if (!this.ctaShown && (result.accepted ?? 0) > 0) {
|
|
129
|
+
this.ctaShown = true;
|
|
130
|
+
console.info(`\n [SWT3] ${result.accepted} anchors delivered to ${this.config.endpoint}` +
|
|
131
|
+
`\n [SWT3] Dashboard & audit reports \u2192 https://sovereign.tenova.io/signup` +
|
|
132
|
+
`\n [SWT3] EU AI Act deadline: Aug 2, 2026. Is your AI ready?\n`);
|
|
133
|
+
}
|
|
127
134
|
return receipts;
|
|
128
135
|
}
|
|
129
136
|
catch (err) {
|
package/dist/buffer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buffer.js","sourceRoot":"","sources":["../src/buffer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,MAAM,wBAAwB,GAAG,IAAI,CAAC;AAEtC,MAAM,OAAO,aAAa;IAChB,MAAM,CAAgB;IACtB,KAAK,GAAqB,EAAE,CAAC;IAC7B,UAAU,GAAqB,EAAE,CAAC;IAClC,cAAc,CAAS;IACvB,WAAW,GAAqB,EAAE,CAAC;IACnC,KAAK,GAAyC,IAAI,CAAC;IACnD,OAAO,GAAG,KAAK,CAAC;IAChB,mBAAmB,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"buffer.js","sourceRoot":"","sources":["../src/buffer.ts"],"names":[],"mappings":"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"}
|
package/dist/clearing.d.ts
CHANGED
|
@@ -16,5 +16,5 @@ import type { InferenceRecord, WitnessPayload } from "./types.js";
|
|
|
16
16
|
* Applies clearing level to each payload via object destructuring (Level 2+
|
|
17
17
|
* fields are simply never assigned, guaranteeing they don't exist on the wire).
|
|
18
18
|
*/
|
|
19
|
-
export declare function extractPayloads(record: InferenceRecord, tenantId: string, clearingLevel: 0 | 1 | 2 | 3, latencyThresholdMs?: number, guardrailsRequired?: number, procedures?: string[]): WitnessPayload[];
|
|
19
|
+
export declare function extractPayloads(record: InferenceRecord, tenantId: string, clearingLevel: 0 | 1 | 2 | 3, latencyThresholdMs?: number, guardrailsRequired?: number, procedures?: string[], agentId?: string, signingKey?: string): WitnessPayload[];
|
|
20
20
|
//# sourceMappingURL=clearing.d.ts.map
|
package/dist/clearing.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clearing.d.ts","sourceRoot":"","sources":["../src/clearing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;
|
|
1
|
+
{"version":3,"file":"clearing.d.ts","sourceRoot":"","sources":["../src/clearing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAElE;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,eAAe,EACvB,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAC5B,kBAAkB,GAAE,MAAc,EAClC,kBAAkB,GAAE,MAAU,EAC9B,UAAU,CAAC,EAAE,MAAM,EAAE,EACrB,OAAO,CAAC,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,MAAM,GAClB,cAAc,EAAE,CA0JlB"}
|
package/dist/clearing.js
CHANGED
|
@@ -11,14 +11,58 @@
|
|
|
11
11
|
* Level 3 — Classified: Factors only. model_id hashed. Everything else DELETED.
|
|
12
12
|
*/
|
|
13
13
|
import { mintFingerprint, sha256Truncated, timestampMs } from "./fingerprint.js";
|
|
14
|
+
import { signPayload } from "./signing.js";
|
|
14
15
|
/**
|
|
15
16
|
* Extract witness payloads from an inference record.
|
|
16
17
|
* Applies clearing level to each payload via object destructuring (Level 2+
|
|
17
18
|
* fields are simply never assigned, guaranteeing they don't exist on the wire).
|
|
18
19
|
*/
|
|
19
|
-
export function extractPayloads(record, tenantId, clearingLevel, latencyThresholdMs = 30000, guardrailsRequired = 0, procedures) {
|
|
20
|
+
export function extractPayloads(record, tenantId, clearingLevel, latencyThresholdMs = 30000, guardrailsRequired = 0, procedures, agentId, signingKey) {
|
|
20
21
|
const [ts, epoch] = timestampMs();
|
|
21
22
|
const payloads = [];
|
|
23
|
+
// Tool call records produce only AI-TOOL.1 (skip inference procedures)
|
|
24
|
+
if (record.toolName) {
|
|
25
|
+
let toolFactors = [
|
|
26
|
+
{ procedureId: "AI-TOOL.1", factorA: 1, factorB: record.latencyMs, factorC: record.hasRefusal ? 0 : 1 },
|
|
27
|
+
];
|
|
28
|
+
if (procedures) {
|
|
29
|
+
const allowed = new Set(procedures);
|
|
30
|
+
toolFactors = toolFactors.filter((p) => allowed.has(p.procedureId));
|
|
31
|
+
}
|
|
32
|
+
for (const pf of toolFactors) {
|
|
33
|
+
const fp = mintFingerprint(tenantId, pf.procedureId, pf.factorA, pf.factorB, pf.factorC, ts);
|
|
34
|
+
const payload = {
|
|
35
|
+
procedure_id: pf.procedureId,
|
|
36
|
+
factor_a: pf.factorA,
|
|
37
|
+
factor_b: pf.factorB,
|
|
38
|
+
factor_c: pf.factorC,
|
|
39
|
+
clearing_level: clearingLevel,
|
|
40
|
+
anchor_fingerprint: fp,
|
|
41
|
+
anchor_epoch: epoch,
|
|
42
|
+
fingerprint_timestamp_ms: ts,
|
|
43
|
+
};
|
|
44
|
+
if (clearingLevel <= 2) {
|
|
45
|
+
payload.ai_latency_ms = record.latencyMs;
|
|
46
|
+
}
|
|
47
|
+
if (clearingLevel <= 1) {
|
|
48
|
+
payload.ai_model_id = record.modelId;
|
|
49
|
+
const ctx = {
|
|
50
|
+
provider: "tool",
|
|
51
|
+
tool_name: record.toolName,
|
|
52
|
+
};
|
|
53
|
+
if (record.toolCallId) {
|
|
54
|
+
ctx.tool_call_id = record.toolCallId;
|
|
55
|
+
}
|
|
56
|
+
payload.ai_context = ctx;
|
|
57
|
+
}
|
|
58
|
+
if (agentId)
|
|
59
|
+
payload.agent_id = agentId;
|
|
60
|
+
if (signingKey)
|
|
61
|
+
payload.payload_signature = signPayload(signingKey, fp, agentId);
|
|
62
|
+
payloads.push(payload);
|
|
63
|
+
}
|
|
64
|
+
return payloads;
|
|
65
|
+
}
|
|
22
66
|
let procFactors = [
|
|
23
67
|
// AI-INF.1: Inference Provenance
|
|
24
68
|
{
|
|
@@ -66,6 +110,15 @@ export function extractPayloads(record, tenantId, clearingLevel, latencyThreshol
|
|
|
66
110
|
factorB: record.hasRefusal ? 0 : 1,
|
|
67
111
|
factorC: record.hasRefusal ? 1 : 0,
|
|
68
112
|
});
|
|
113
|
+
// AI-ID.1: Agent Identity Attestation (only when agentId is configured)
|
|
114
|
+
if (agentId) {
|
|
115
|
+
procFactors.push({
|
|
116
|
+
procedureId: "AI-ID.1",
|
|
117
|
+
factorA: 1,
|
|
118
|
+
factorB: 1,
|
|
119
|
+
factorC: 0,
|
|
120
|
+
});
|
|
121
|
+
}
|
|
69
122
|
// Filter to requested procedures
|
|
70
123
|
if (procedures) {
|
|
71
124
|
const allowed = new Set(procedures);
|
|
@@ -89,6 +142,11 @@ export function extractPayloads(record, tenantId, clearingLevel, latencyThreshol
|
|
|
89
142
|
// are never set (not even as undefined). This guarantees they are
|
|
90
143
|
// absent from JSON.stringify output, not just null.
|
|
91
144
|
applyClearingLevel(payload, record, clearingLevel);
|
|
145
|
+
// agent_id survives all clearing levels (operational metadata)
|
|
146
|
+
if (agentId)
|
|
147
|
+
payload.agent_id = agentId;
|
|
148
|
+
if (signingKey)
|
|
149
|
+
payload.payload_signature = signPayload(signingKey, fp, agentId);
|
|
92
150
|
payloads.push(payload);
|
|
93
151
|
}
|
|
94
152
|
return payloads;
|
package/dist/clearing.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clearing.js","sourceRoot":"","sources":["../src/clearing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"clearing.js","sourceRoot":"","sources":["../src/clearing.ts"],"names":[],"mappings":"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"}
|
package/dist/demo.js
CHANGED
|
@@ -15,6 +15,7 @@ const G = isColor ? "\x1b[32m" : "";
|
|
|
15
15
|
const A = isColor ? "\x1b[33m" : "";
|
|
16
16
|
const C = isColor ? "\x1b[36m" : "";
|
|
17
17
|
const W = isColor ? "\x1b[37m" : "";
|
|
18
|
+
const RD = isColor ? "\x1b[31m" : "";
|
|
18
19
|
const R = isColor ? "\x1b[0m" : "";
|
|
19
20
|
function sha256(data, len = 64) {
|
|
20
21
|
return createHash("sha256").update(data).digest("hex").slice(0, len);
|
|
@@ -104,6 +105,15 @@ async function main() {
|
|
|
104
105
|
console.log(` → Track your Integrity Debt Score and generate a Compliance Passport:`);
|
|
105
106
|
console.log(` ${C}https://sovereign.tenova.io/signup${R} ${D}(free, no credit card)${R}`);
|
|
106
107
|
console.log();
|
|
108
|
+
// EU AI Act countdown
|
|
109
|
+
const deadline = new Date("2026-08-02T00:00:00Z");
|
|
110
|
+
const daysLeft = Math.ceil((deadline.getTime() - Date.now()) / 86400000);
|
|
111
|
+
if (daysLeft > 0) {
|
|
112
|
+
const dc = daysLeft < 60 ? RD : daysLeft < 120 ? A : C;
|
|
113
|
+
console.log(` ${dc}\u26a0 EU AI Act enforcement in ${daysLeft} days (Aug 2, 2026)${R}`);
|
|
114
|
+
console.log(` ${D}Local anchors prove it to you. Axiom proves it to your auditor.${R}`);
|
|
115
|
+
console.log();
|
|
116
|
+
}
|
|
107
117
|
console.log(`${B}Ready for production?${R}`);
|
|
108
118
|
console.log(` Start free: ${C}https://sovereign.tenova.io/signup${R}`);
|
|
109
119
|
console.log(` SDK docs: ${C}https://sovereign.tenova.io/docs/${R}`);
|
package/dist/demo.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"demo.js","sourceRoot":"","sources":["../src/demo.ts"],"names":[],"mappings":";AACA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;AACrC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;AACnC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;AACnC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;AACpC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;AACpC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;AACpC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;AACpC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;AAEnC,SAAS,MAAM,CAAC,IAAY,EAAE,GAAG,GAAG,EAAE;IACpC,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,eAAe,CACtB,MAAc,EAAE,IAAY,EAC5B,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,IAAY;IAEhD,MAAM,CAAC,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACvE,MAAM,KAAK,GAAG,WAAW,MAAM,IAAI,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;IAC7E,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,kCAAkC,CAAC,EAAE,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,6CAA6C,CAAC,EAAE,CAAC,CAAC;IAClE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACzC,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,MAAM,MAAM,GAAG,aAAa,CAAC;IAC7B,MAAM,QAAQ,GAAG,OAAO,CAAC;IACzB,MAAM,OAAO,GAAG,mBAAmB,CAAC;IACpC,MAAM,MAAM,GAAG,yDAAyD,CAAC;IACzE,MAAM,YAAY,GAAG,mJAAmJ,CAAC;IAEzK,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,gCAAgC,CAAC,EAAE,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,GAAG,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC9D,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAEjB,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACtC,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAEtC,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,oEAAoE,CAAC,EAAE,CAAC,CAAC;IACzF,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,GAAG,UAAU,GAAG,CAAC,EAAE,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,GAAG,YAAY,GAAG,CAAC,EAAE,CAAC,CAAC;IACzD,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,GAAG,SAAS,GAAG,CAAC,EAAE,CAAC,CAAC;IACtD,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAEjB,MAAM,SAAS,GAAG,GAAG,CAAC;IACtB,MAAM,UAAU,GAAG,GAAG,CAAC;IACvB,MAAM,gBAAgB,GAAG,CAAC,CAAC;IAE3B,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,sCAAsC,CAAC,EAAE,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,GAAG,SAAS,MAAM,CAAC,EAAE,CAAC,CAAC;IACjE,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,GAAG,UAAU,GAAG,CAAC,EAAE,CAAC,CAAC;IAC/D,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,GAAG,gBAAgB,UAAU,CAAC,EAAE,CAAC,CAAC;IAC5E,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAEjB,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,6CAA6C,CAAC,EAAE,CAAC,CAAC;IAClE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC5C,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IAC1D,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAEjB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACxB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;IAEtC,MAAM,UAAU,GAAuD;QACrE,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,kBAAkB,CAAC;QACjD,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,wBAAwB,CAAC;QACvD,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,gBAAgB,EAAE,MAAM,EAAE,mBAAmB,CAAC;KAClE,CAAC;IAEF,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,qCAAqC,CAAC,EAAE,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,KAAK,MAAM,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,UAAU,EAAE,CAAC;QAC7D,MAAM,EAAE,GAAG,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QAC7D,MAAM,MAAM,GAAG,UAAU,QAAQ,OAAO,MAAM,IAAI,OAAO,IAAI,KAAK,IAAI,EAAE,EAAE,CAAC;QAC3E,MAAM,KAAK,GAAG,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,MAAM,KAAK,KAAK,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC;QAC/E,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC;QACtC,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,mCAAmC,CAAC,EAAE,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;IACnE,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,GAAG,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,uCAAuC,CAAC,EAAE,CAAC,CAAC;IAC3E,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACzC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,0EAA0E,CAAC,CAAC;IACxF,OAAO,CAAC,GAAG,CAAC,kEAAkE,CAAC,CAAC;IAChF,OAAO,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAC;IAC1E,OAAO,CAAC,GAAG,CAAC,oEAAoE,CAAC,CAAC;IAClF,OAAO,CAAC,GAAG,CAAC,oEAAoE,CAAC,CAAC;IAClF,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,gCAAgC,CAAC,EAAE,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,yEAAyE,CAAC,CAAC;IACvF,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,qCAAqC,CAAC,IAAI,CAAC,yBAAyB,CAAC,EAAE,CAAC,CAAC;IAC7F,OAAO,CAAC,GAAG,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"demo.js","sourceRoot":"","sources":["../src/demo.ts"],"names":[],"mappings":";AACA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;AACrC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;AACnC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;AACnC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;AACpC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;AACpC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;AACpC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;AACpC,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;AACrC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;AAEnC,SAAS,MAAM,CAAC,IAAY,EAAE,GAAG,GAAG,EAAE;IACpC,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,eAAe,CACtB,MAAc,EAAE,IAAY,EAC5B,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,IAAY;IAEhD,MAAM,CAAC,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACvE,MAAM,KAAK,GAAG,WAAW,MAAM,IAAI,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;IAC7E,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,kCAAkC,CAAC,EAAE,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,6CAA6C,CAAC,EAAE,CAAC,CAAC;IAClE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACzC,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,MAAM,MAAM,GAAG,aAAa,CAAC;IAC7B,MAAM,QAAQ,GAAG,OAAO,CAAC;IACzB,MAAM,OAAO,GAAG,mBAAmB,CAAC;IACpC,MAAM,MAAM,GAAG,yDAAyD,CAAC;IACzE,MAAM,YAAY,GAAG,mJAAmJ,CAAC;IAEzK,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,gCAAgC,CAAC,EAAE,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,GAAG,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC9D,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAEjB,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACtC,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAEtC,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,oEAAoE,CAAC,EAAE,CAAC,CAAC;IACzF,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,GAAG,UAAU,GAAG,CAAC,EAAE,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,GAAG,YAAY,GAAG,CAAC,EAAE,CAAC,CAAC;IACzD,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,GAAG,SAAS,GAAG,CAAC,EAAE,CAAC,CAAC;IACtD,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAEjB,MAAM,SAAS,GAAG,GAAG,CAAC;IACtB,MAAM,UAAU,GAAG,GAAG,CAAC;IACvB,MAAM,gBAAgB,GAAG,CAAC,CAAC;IAE3B,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,sCAAsC,CAAC,EAAE,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,GAAG,SAAS,MAAM,CAAC,EAAE,CAAC,CAAC;IACjE,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,GAAG,UAAU,GAAG,CAAC,EAAE,CAAC,CAAC;IAC/D,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,GAAG,gBAAgB,UAAU,CAAC,EAAE,CAAC,CAAC;IAC5E,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAEjB,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,6CAA6C,CAAC,EAAE,CAAC,CAAC;IAClE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC5C,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IAC1D,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAEjB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACxB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;IAEtC,MAAM,UAAU,GAAuD;QACrE,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,kBAAkB,CAAC;QACjD,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,wBAAwB,CAAC;QACvD,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,gBAAgB,EAAE,MAAM,EAAE,mBAAmB,CAAC;KAClE,CAAC;IAEF,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,qCAAqC,CAAC,EAAE,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,KAAK,MAAM,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,UAAU,EAAE,CAAC;QAC7D,MAAM,EAAE,GAAG,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QAC7D,MAAM,MAAM,GAAG,UAAU,QAAQ,OAAO,MAAM,IAAI,OAAO,IAAI,KAAK,IAAI,EAAE,EAAE,CAAC;QAC3E,MAAM,KAAK,GAAG,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,MAAM,KAAK,KAAK,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC;QAC/E,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC;QACtC,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,mCAAmC,CAAC,EAAE,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;IACnE,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,GAAG,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,uCAAuC,CAAC,EAAE,CAAC,CAAC;IAC3E,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACzC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,0EAA0E,CAAC,CAAC;IACxF,OAAO,CAAC,GAAG,CAAC,kEAAkE,CAAC,CAAC;IAChF,OAAO,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAC;IAC1E,OAAO,CAAC,GAAG,CAAC,oEAAoE,CAAC,CAAC;IAClF,OAAO,CAAC,GAAG,CAAC,oEAAoE,CAAC,CAAC;IAClF,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,gCAAgC,CAAC,EAAE,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,yEAAyE,CAAC,CAAC;IACvF,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,qCAAqC,CAAC,IAAI,CAAC,yBAAyB,CAAC,EAAE,CAAC,CAAC;IAC7F,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,sBAAsB;IACtB,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,sBAAsB,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC;IACzE,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;QACjB,MAAM,EAAE,GAAG,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,mCAAmC,QAAQ,sBAAsB,CAAC,EAAE,CAAC,CAAC;QACzF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,kEAAkE,CAAC,EAAE,CAAC,CAAC;QACzF,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,qCAAqC,CAAC,EAAE,CAAC,CAAC;IACtF,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,oCAAoC,CAAC,EAAE,CAAC,CAAC;IACrF,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,0CAA0C,CAAC,EAAE,CAAC,CAAC;IAC3F,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,yCAAyC,CAAC,EAAE,CAAC,CAAC;IAC1F,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,gEAAgE,CAAC,EAAE,CAAC,CAAC;IACrF,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,oDAAoD,CAAC,EAAE,CAAC,CAAC;IACzE,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC;AAED,IAAI,EAAE,CAAC"}
|
package/dist/handoff.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handoff.d.ts","sourceRoot":"","sources":["../src/handoff.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"handoff.d.ts","sourceRoot":"","sources":["../src/handoff.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAuClE;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,cAAc,EAAE,EAC1B,SAAS,EAAE,eAAe,EAC1B,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,IAAI,CA+BN"}
|
package/dist/handoff.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handoff.js","sourceRoot":"","sources":["../src/handoff.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACtF,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,MAAM,eAAe,GAAG,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"handoff.js","sourceRoot":"","sources":["../src/handoff.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACtF,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,MAAM,eAAe,GAAG,OAAO,CAAC;AAqChC;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAC/B,QAA0B,EAC1B,SAA0B,EAC1B,QAAgB,EAChB,WAAmB;IAEnB,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE5C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QAChE,MAAM,QAAQ,GAAG,GAAG,OAAO,CAAC,kBAAkB,OAAO,CAAC;QACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAC7C,MAAM,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;QAElC,IAAI,CAAC;YACH,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;YAExE,6DAA6D;YAC7D,IAAI,CAAC;gBACH,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAC5B,CAAC;YAAC,MAAM,CAAC;gBACP,8DAA8D;YAChE,CAAC;YAED,gBAAgB;YAChB,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAChC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,gCAAgC;YAChC,IAAI,CAAC;gBACH,UAAU,CAAC,OAAO,CAAC,CAAC;YACtB,CAAC;YAAC,MAAM,CAAC;gBACP,wBAAwB;YAC1B,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CACzB,OAAuB,EACvB,SAA0B,EAC1B,QAAgB;IAEhB,OAAO;QACL,eAAe,EAAE,eAAe;QAChC,YAAY,EAAE,kBAAkB,OAAO,CAAC,cAAc,EAAE;QACxD,SAAS,EAAE,QAAQ;QACnB,aAAa,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE;QAClE,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;QAC9C,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,wBAAwB,EAAE,OAAO,CAAC,wBAAwB;QAC1D,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,OAAO,EAAE;YACP,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,QAAQ,EAAE,OAAO,CAAC,QAAQ;SAC3B;QACD,QAAQ,EAAE;YACR,WAAW,EAAE,SAAS,CAAC,OAAO;YAC9B,aAAa,EAAE,SAAS,CAAC,SAAS;YAClC,cAAc,EAAE,SAAS,CAAC,UAAU;YACpC,gBAAgB,EAAE,SAAS,CAAC,YAAY;YACxC,aAAa,EAAE,SAAS,CAAC,SAAS;YAClC,eAAe,EAAE,SAAS,CAAC,WAAW;YACtC,gBAAgB,EAAE,SAAS,CAAC,YAAY;YACxC,WAAW,EAAE,SAAS,CAAC,QAAQ;YAC/B,qBAAqB,EAAE,SAAS,CAAC,iBAAiB;YAClD,kBAAkB,EAAE,SAAS,CAAC,cAAc,IAAI,EAAE;YAClD,oBAAoB,EAAE,SAAS,CAAC,gBAAgB;YAChD,sBAAsB,EAAE,SAAS,CAAC,kBAAkB;YACpD,mBAAmB,EAAE,SAAS,CAAC,eAAe;SAC/C;KACF,CAAC;AACJ,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -18,4 +18,5 @@ export type { WitnessOptions } from "./witness.js";
|
|
|
18
18
|
export type { WitnessConfig, WitnessPayload, WitnessReceipt, InferenceRecord, BatchResponse, } from "./types.js";
|
|
19
19
|
export { mintFingerprint, sha256Truncated, sha256Hex, timestampMs } from "./fingerprint.js";
|
|
20
20
|
export { extractPayloads } from "./clearing.js";
|
|
21
|
+
export { signPayload } from "./signing.js";
|
|
21
22
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,YAAY,EACV,aAAa,EACb,cAAc,EACd,cAAc,EACd,eAAe,EACf,aAAa,GACd,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC5F,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,YAAY,EACV,aAAa,EACb,cAAc,EACd,cAAc,EACd,eAAe,EACf,aAAa,GACd,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC5F,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -16,4 +16,5 @@
|
|
|
16
16
|
export { Witness } from "./witness.js";
|
|
17
17
|
export { mintFingerprint, sha256Truncated, sha256Hex, timestampMs } from "./fingerprint.js";
|
|
18
18
|
export { extractPayloads } from "./clearing.js";
|
|
19
|
+
export { signPayload } from "./signing.js";
|
|
19
20
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AASvC,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC5F,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AASvC,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC5F,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SWT3 AI Witness SDK - Payload Signing (HMAC-SHA256).
|
|
3
|
+
*
|
|
4
|
+
* Signs anchor fingerprints to prove which SDK instance minted them.
|
|
5
|
+
* The signature input is deterministic and must match the Python SDK.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Sign an anchor fingerprint with HMAC-SHA256.
|
|
9
|
+
*
|
|
10
|
+
* @param signingKey - Shared secret between SDK and server.
|
|
11
|
+
* @param anchorFingerprint - The 12-char hex fingerprint to sign.
|
|
12
|
+
* @param agentId - Optional agent identifier to bind to the signature.
|
|
13
|
+
* @returns 64-char hex HMAC-SHA256 digest.
|
|
14
|
+
*
|
|
15
|
+
* Message format:
|
|
16
|
+
* "{fingerprint}:{agentId}" if agentId is provided
|
|
17
|
+
* "{fingerprint}" if agentId is undefined
|
|
18
|
+
*/
|
|
19
|
+
export declare function signPayload(signingKey: string, anchorFingerprint: string, agentId?: string): string;
|
|
20
|
+
//# sourceMappingURL=signing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signing.d.ts","sourceRoot":"","sources":["../src/signing.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CACzB,UAAU,EAAE,MAAM,EAClB,iBAAiB,EAAE,MAAM,EACzB,OAAO,CAAC,EAAE,MAAM,GACf,MAAM,CAOR"}
|
package/dist/signing.js
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SWT3 AI Witness SDK - Payload Signing (HMAC-SHA256).
|
|
3
|
+
*
|
|
4
|
+
* Signs anchor fingerprints to prove which SDK instance minted them.
|
|
5
|
+
* The signature input is deterministic and must match the Python SDK.
|
|
6
|
+
*/
|
|
7
|
+
import { createHmac } from "node:crypto";
|
|
8
|
+
/**
|
|
9
|
+
* Sign an anchor fingerprint with HMAC-SHA256.
|
|
10
|
+
*
|
|
11
|
+
* @param signingKey - Shared secret between SDK and server.
|
|
12
|
+
* @param anchorFingerprint - The 12-char hex fingerprint to sign.
|
|
13
|
+
* @param agentId - Optional agent identifier to bind to the signature.
|
|
14
|
+
* @returns 64-char hex HMAC-SHA256 digest.
|
|
15
|
+
*
|
|
16
|
+
* Message format:
|
|
17
|
+
* "{fingerprint}:{agentId}" if agentId is provided
|
|
18
|
+
* "{fingerprint}" if agentId is undefined
|
|
19
|
+
*/
|
|
20
|
+
export function signPayload(signingKey, anchorFingerprint, agentId) {
|
|
21
|
+
const message = agentId
|
|
22
|
+
? `${anchorFingerprint}:${agentId}`
|
|
23
|
+
: anchorFingerprint;
|
|
24
|
+
return createHmac("sha256", signingKey)
|
|
25
|
+
.update(message, "utf-8")
|
|
26
|
+
.digest("hex");
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=signing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signing.js","sourceRoot":"","sources":["../src/signing.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,WAAW,CACzB,UAAkB,EAClB,iBAAyB,EACzB,OAAgB;IAEhB,MAAM,OAAO,GAAG,OAAO;QACrB,CAAC,CAAC,GAAG,iBAAiB,IAAI,OAAO,EAAE;QACnC,CAAC,CAAC,iBAAiB,CAAC;IACtB,OAAO,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC;SACpC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC;SACxB,MAAM,CAAC,KAAK,CAAC,CAAC;AACnB,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -16,6 +16,8 @@ export interface WitnessConfig {
|
|
|
16
16
|
procedures?: string[];
|
|
17
17
|
factorHandoff?: "file";
|
|
18
18
|
factorHandoffPath?: string;
|
|
19
|
+
agentId?: string;
|
|
20
|
+
signingKey?: string;
|
|
19
21
|
}
|
|
20
22
|
export interface WitnessPayload {
|
|
21
23
|
procedure_id: string;
|
|
@@ -36,7 +38,11 @@ export interface WitnessPayload {
|
|
|
36
38
|
provider?: string;
|
|
37
39
|
guardrails?: string[];
|
|
38
40
|
system_fingerprint?: string;
|
|
41
|
+
tool_name?: string;
|
|
42
|
+
tool_call_id?: string;
|
|
39
43
|
};
|
|
44
|
+
agent_id?: string;
|
|
45
|
+
payload_signature?: string;
|
|
40
46
|
}
|
|
41
47
|
export interface WitnessReceipt {
|
|
42
48
|
procedure_id: string;
|
|
@@ -71,6 +77,8 @@ export interface InferenceRecord {
|
|
|
71
77
|
provider: string;
|
|
72
78
|
systemFingerprint?: string;
|
|
73
79
|
guardrailNames: string[];
|
|
80
|
+
toolName?: string;
|
|
81
|
+
toolCallId?: string;
|
|
74
82
|
}
|
|
75
83
|
/** Valid AI procedure IDs from SWT3 Spec v1.2.0 */
|
|
76
84
|
export declare const AI_PROCEDURES: Set<string>;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
CHANGED
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAsFH,mDAAmD;AACnD,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC;IACnC,UAAU,EAAE,UAAU,EAAE,UAAU;IAClC,UAAU,EAAE,UAAU,EAAE,UAAU;IAClC,UAAU,EAAE,UAAU,EAAE,UAAU;IAClC,WAAW,EAAE,WAAW;IACxB,WAAW,EAAE,WAAW;IACxB,WAAW,EAAE,WAAW;IACxB,WAAW,EAAE,WAAW;IACxB,WAAW;IACX,SAAS;CACV,CAAC,CAAC"}
|
package/dist/witness.d.ts
CHANGED
|
@@ -36,10 +36,13 @@ export interface WitnessOptions {
|
|
|
36
36
|
procedures?: string[];
|
|
37
37
|
factorHandoff?: "file";
|
|
38
38
|
factorHandoffPath?: string;
|
|
39
|
+
agentId?: string;
|
|
40
|
+
signingKey?: string;
|
|
39
41
|
}
|
|
40
42
|
export declare class Witness {
|
|
41
43
|
private config;
|
|
42
44
|
private buffer;
|
|
45
|
+
private handoffWarned;
|
|
43
46
|
constructor(options: WitnessOptions);
|
|
44
47
|
/**
|
|
45
48
|
* Wrap an AI client with transparent witnessing.
|
|
@@ -52,6 +55,19 @@ export declare class Witness {
|
|
|
52
55
|
* const client = witness.wrap(new Anthropic()) as Anthropic;
|
|
53
56
|
*/
|
|
54
57
|
wrap(client: unknown): unknown;
|
|
58
|
+
/**
|
|
59
|
+
* Wrap a function as a witnessed tool call (AI-TOOL.1).
|
|
60
|
+
*
|
|
61
|
+
* Usage:
|
|
62
|
+
* const search = witness.wrapTool(searchDatabase, "search_db");
|
|
63
|
+
* const result = await search("SELECT ...");
|
|
64
|
+
*
|
|
65
|
+
* Each call mints an AI-TOOL.1 anchor with:
|
|
66
|
+
* factor_a = 1 (tool was called)
|
|
67
|
+
* factor_b = latency_ms
|
|
68
|
+
* factor_c = 1 if succeeded, 0 if exception raised
|
|
69
|
+
*/
|
|
70
|
+
wrapTool<T extends (...args: any[]) => any>(fn: T, toolName?: string): T;
|
|
55
71
|
/**
|
|
56
72
|
* Record a witnessed inference. Extracts factors, applies clearing,
|
|
57
73
|
* and enqueues payloads for background flush.
|
package/dist/witness.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"witness.d.ts","sourceRoot":"","sources":["../src/witness.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;
|
|
1
|
+
{"version":3,"file":"witness.d.ts","sourceRoot":"","sources":["../src/witness.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAUH,OAAO,EAAwB,KAAK,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAC3F,OAAO,KAAK,EAAiC,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEjG,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,OAAO;IAClB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,aAAa,CAAS;gBAElB,OAAO,EAAE,cAAc;IAkCnC;;;;;;;;;OASG;IACH,IAAI,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO;IAyB9B;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,CAAC;IAiExE;;;;;;;OAOG;IACH,MAAM,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI;IAqCxC;;;;;;;;;OASG;IACH,cAAc,CAAC,OAAO,CAAC,EAAE,qBAAqB,GAAG,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI;IAI1E,yCAAyC;IACnC,KAAK,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAIxC,qDAAqD;IAC/C,IAAI,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAIvC,kCAAkC;IAClC,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,2CAA2C;IAC3C,IAAI,QAAQ,IAAI,cAAc,EAAE,CAE/B;CACF"}
|
package/dist/witness.js
CHANGED
|
@@ -19,6 +19,8 @@
|
|
|
19
19
|
*
|
|
20
20
|
* Copyright (c) 2026 Tenable Nova LLC. Apache 2.0. Patent pending.
|
|
21
21
|
*/
|
|
22
|
+
import { randomUUID } from "node:crypto";
|
|
23
|
+
import { sha256Truncated } from "./fingerprint.js";
|
|
22
24
|
import { extractPayloads } from "./clearing.js";
|
|
23
25
|
import { WitnessBuffer } from "./buffer.js";
|
|
24
26
|
import { writeHandoffFiles } from "./handoff.js";
|
|
@@ -29,6 +31,7 @@ import { createVercelOnFinish } from "./adapters/vercel-ai.js";
|
|
|
29
31
|
export class Witness {
|
|
30
32
|
config;
|
|
31
33
|
buffer;
|
|
34
|
+
handoffWarned = false;
|
|
32
35
|
constructor(options) {
|
|
33
36
|
if (!options.endpoint)
|
|
34
37
|
throw new Error("endpoint is required");
|
|
@@ -59,6 +62,8 @@ export class Witness {
|
|
|
59
62
|
procedures: options.procedures,
|
|
60
63
|
factorHandoff: options.factorHandoff,
|
|
61
64
|
factorHandoffPath: options.factorHandoffPath,
|
|
65
|
+
agentId: options.agentId,
|
|
66
|
+
signingKey: options.signingKey,
|
|
62
67
|
};
|
|
63
68
|
this.buffer = new WitnessBuffer(this.config);
|
|
64
69
|
}
|
|
@@ -90,6 +95,72 @@ export class Witness {
|
|
|
90
95
|
}
|
|
91
96
|
throw new TypeError(`Unsupported client: ${name || "unknown"}. Supported: OpenAI, Anthropic, BedrockRuntimeClient.`);
|
|
92
97
|
}
|
|
98
|
+
/**
|
|
99
|
+
* Wrap a function as a witnessed tool call (AI-TOOL.1).
|
|
100
|
+
*
|
|
101
|
+
* Usage:
|
|
102
|
+
* const search = witness.wrapTool(searchDatabase, "search_db");
|
|
103
|
+
* const result = await search("SELECT ...");
|
|
104
|
+
*
|
|
105
|
+
* Each call mints an AI-TOOL.1 anchor with:
|
|
106
|
+
* factor_a = 1 (tool was called)
|
|
107
|
+
* factor_b = latency_ms
|
|
108
|
+
* factor_c = 1 if succeeded, 0 if exception raised
|
|
109
|
+
*/
|
|
110
|
+
wrapTool(fn, toolName) {
|
|
111
|
+
const name = toolName ?? fn.name ?? "anonymous";
|
|
112
|
+
const self = this;
|
|
113
|
+
const wrapper = function (...args) {
|
|
114
|
+
const callId = randomUUID().replace(/-/g, "").slice(0, 12);
|
|
115
|
+
const start = performance.now();
|
|
116
|
+
let succeeded = true;
|
|
117
|
+
let result;
|
|
118
|
+
const finish = () => {
|
|
119
|
+
const elapsedMs = Math.round(performance.now() - start);
|
|
120
|
+
const inputHash = sha256Truncated(JSON.stringify(args));
|
|
121
|
+
const outputHash = sha256Truncated(succeeded ? JSON.stringify(result) : "ERROR");
|
|
122
|
+
const record = {
|
|
123
|
+
modelId: name,
|
|
124
|
+
modelHash: sha256Truncated(name),
|
|
125
|
+
promptHash: inputHash,
|
|
126
|
+
responseHash: outputHash,
|
|
127
|
+
latencyMs: elapsedMs,
|
|
128
|
+
guardrailsActive: 0,
|
|
129
|
+
guardrailsRequired: 0,
|
|
130
|
+
guardrailPassed: true,
|
|
131
|
+
hasRefusal: !succeeded,
|
|
132
|
+
provider: "tool",
|
|
133
|
+
guardrailNames: [],
|
|
134
|
+
toolName: name,
|
|
135
|
+
toolCallId: callId,
|
|
136
|
+
};
|
|
137
|
+
self.record(record);
|
|
138
|
+
};
|
|
139
|
+
try {
|
|
140
|
+
result = fn.apply(this, args);
|
|
141
|
+
}
|
|
142
|
+
catch (err) {
|
|
143
|
+
succeeded = false;
|
|
144
|
+
finish();
|
|
145
|
+
throw err;
|
|
146
|
+
}
|
|
147
|
+
// Handle async functions (Promise detection)
|
|
148
|
+
if (result && typeof result.then === "function") {
|
|
149
|
+
return result.then((v) => {
|
|
150
|
+
result = v;
|
|
151
|
+
finish();
|
|
152
|
+
return v;
|
|
153
|
+
}, (err) => {
|
|
154
|
+
succeeded = false;
|
|
155
|
+
finish();
|
|
156
|
+
throw err;
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
finish();
|
|
160
|
+
return result;
|
|
161
|
+
};
|
|
162
|
+
return wrapper;
|
|
163
|
+
}
|
|
93
164
|
/**
|
|
94
165
|
* Record a witnessed inference. Extracts factors, applies clearing,
|
|
95
166
|
* and enqueues payloads for background flush.
|
|
@@ -105,12 +176,18 @@ export class Witness {
|
|
|
105
176
|
inference.guardrailsActive = this.config.guardrailNames.length;
|
|
106
177
|
inference.guardrailsRequired = this.config.guardrailsRequired;
|
|
107
178
|
}
|
|
108
|
-
const payloads = extractPayloads(inference, this.config.tenantId, this.config.clearingLevel, this.config.latencyThresholdMs, this.config.guardrailsRequired, this.config.procedures);
|
|
179
|
+
const payloads = extractPayloads(inference, this.config.tenantId, this.config.clearingLevel, this.config.latencyThresholdMs, this.config.guardrailsRequired, this.config.procedures, this.config.agentId, this.config.signingKey);
|
|
109
180
|
// Factor handoff: write full (uncleared) data to custody destination
|
|
110
181
|
// BEFORE enqueuing the cleared payload for transmission.
|
|
111
182
|
// If this fails, we do NOT proceed.
|
|
112
183
|
if (this.config.factorHandoff === "file" && this.config.factorHandoffPath) {
|
|
113
184
|
writeHandoffFiles(payloads, inference, this.config.tenantId, this.config.factorHandoffPath);
|
|
185
|
+
if (!this.handoffWarned) {
|
|
186
|
+
this.handoffWarned = true;
|
|
187
|
+
console.info(`\n [SWT3] ${payloads.length} anchors saved locally to ${this.config.factorHandoffPath}` +
|
|
188
|
+
`\n [SWT3] \u26a0 Local anchors won\u2019t survive a compliance audit.` +
|
|
189
|
+
`\n [SWT3] Connect to Axiom Engine \u2192 https://sovereign.tenova.io/signup (free)\n`);
|
|
190
|
+
}
|
|
114
191
|
}
|
|
115
192
|
this.buffer.enqueueMany(payloads);
|
|
116
193
|
}
|
package/dist/witness.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"witness.js","sourceRoot":"","sources":["../src/witness.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;
|
|
1
|
+
{"version":3,"file":"witness.js","sourceRoot":"","sources":["../src/witness.ts"],"names":[],"mappings":"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"}
|