@tenova/swt3-ai 0.2.3 → 0.2.4

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 CHANGED
@@ -6,6 +6,17 @@ Cryptographic AI Governance for the Edge. Zero Latency. Zero Data Retention.
6
6
 
7
7
  Works with OpenAI, Anthropic, Vercel AI SDK, and any OpenAI-compatible endpoint (vLLM, Ollama, Azure, Llama.cpp).
8
8
 
9
+ ## See It Work in 10 Seconds
10
+
11
+ No API keys. No account. No network calls.
12
+
13
+ ```bash
14
+ npm install @tenova/swt3-ai
15
+ npx swt3-demo
16
+ ```
17
+
18
+ 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
+
9
20
  ## Three Lines of Code
10
21
 
11
22
  ### OpenAI
@@ -128,6 +139,38 @@ const azureClient = witness.wrap(
128
139
  ) as OpenAI;
129
140
  ```
130
141
 
142
+ ## Quick Start (Try It Locally)
143
+
144
+ 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
+
146
+ ```typescript
147
+ import { Witness } from "@tenova/swt3-ai";
148
+ import OpenAI from "openai";
149
+
150
+ const witness = new Witness({
151
+ endpoint: "https://sovereign.tenova.io",
152
+ apiKey: "test", // any string — handoff runs before network flush
153
+ tenantId: "LOCAL_TEST",
154
+ factorHandoff: "file", // write anchors to ./swt3-handoff/ as JSON
155
+ });
156
+
157
+ const client = witness.wrap(new OpenAI()) as OpenAI;
158
+
159
+ const response = await client.chat.completions.create({
160
+ model: "gpt-4o",
161
+ messages: [{ role: "user", content: "What is the EU AI Act?" }],
162
+ });
163
+ console.log(response.choices[0].message.content);
164
+
165
+ // Check ./swt3-handoff/ — you'll see a JSON file per inference with:
166
+ // - SHA-256 fingerprint
167
+ // - Model ID, latency, token count
168
+ // - Clearing level applied
169
+ // - Full factor data for independent verification
170
+ ```
171
+
172
+ When you're ready for production, [book a 14-day assessment](https://calendly.com/tenova-axiom/30min) to get your tenant ID and API key. Point the SDK at your enclave and every inference is witnessed, anchored, and verifiable.
173
+
131
174
  ## What Happens Per Inference
132
175
 
133
176
  1. **Intercept**: ES6 Proxy wraps your AI client transparently
package/dist/demo.d.ts ADDED
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * SWT3 AI Witness SDK — Zero-Friction Demo
4
+ *
5
+ * Run with: npx @tenova/swt3-ai demo
6
+ * or: npx tsx node_modules/@tenova/swt3-ai/src/demo.ts
7
+ *
8
+ * No API keys. No account. No network calls.
9
+ */
10
+ export {};
11
+ //# sourceMappingURL=demo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"demo.d.ts","sourceRoot":"","sources":["../src/demo.ts"],"names":[],"mappings":";AACA;;;;;;;GAOG"}
package/dist/demo.js ADDED
@@ -0,0 +1,112 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * SWT3 AI Witness SDK — Zero-Friction Demo
4
+ *
5
+ * Run with: npx @tenova/swt3-ai demo
6
+ * or: npx tsx node_modules/@tenova/swt3-ai/src/demo.ts
7
+ *
8
+ * No API keys. No account. No network calls.
9
+ */
10
+ import { createHash } from "node:crypto";
11
+ const isColor = process.stdout.isTTY;
12
+ const B = isColor ? "\x1b[1m" : "";
13
+ const D = isColor ? "\x1b[2m" : "";
14
+ const G = isColor ? "\x1b[32m" : "";
15
+ const A = isColor ? "\x1b[33m" : "";
16
+ const C = isColor ? "\x1b[36m" : "";
17
+ const W = isColor ? "\x1b[37m" : "";
18
+ const R = isColor ? "\x1b[0m" : "";
19
+ function sha256(data, len = 64) {
20
+ return createHash("sha256").update(data).digest("hex").slice(0, len);
21
+ }
22
+ function mintFingerprint(tenant, proc, fa, fb, fc, tsMs) {
23
+ const n = (v) => (v === Math.floor(v) ? String(v) : String(v));
24
+ const input = `WITNESS:${tenant}:${proc}:${n(fa)}:${n(fb)}:${n(fc)}:${tsMs}`;
25
+ return createHash("sha256").update(input).digest("hex").slice(0, 12);
26
+ }
27
+ function sleep(ms) {
28
+ return new Promise((r) => setTimeout(r, ms));
29
+ }
30
+ async function main() {
31
+ console.log();
32
+ console.log(`${B}SWT3 AI Witness SDK — Live Demo${R}`);
33
+ console.log(`${D}No API keys. No account. No network calls.${R}`);
34
+ console.log(`${D}${"─".repeat(56)}${R}`);
35
+ console.log();
36
+ const tenant = "DEMO_TENANT";
37
+ const provider = "LOCAL";
38
+ const modelId = "gpt-4o-2024-08-06";
39
+ const prompt = "What are the compliance requirements for the EU AI Act?";
40
+ const responseText = "The EU AI Act requires high-risk AI systems to maintain technical documentation, implement risk management systems, and ensure human oversight...";
41
+ console.log(`${C}1. Simulating AI inference...${R}`);
42
+ console.log(` Model: ${W}${modelId}${R}`);
43
+ console.log(` Prompt: ${D}${prompt.slice(0, 50)}...${R}`);
44
+ await sleep(300);
45
+ const promptHash = sha256(prompt, 16);
46
+ const responseHash = sha256(responseText, 16);
47
+ const modelHash = sha256(modelId, 12);
48
+ console.log();
49
+ console.log(`${C}2. Hashing locally (raw text never leaves your infrastructure)...${R}`);
50
+ console.log(` Prompt hash: ${G}${promptHash}${R}`);
51
+ console.log(` Response hash: ${G}${responseHash}${R}`);
52
+ console.log(` Model hash: ${G}${modelHash}${R}`);
53
+ await sleep(300);
54
+ const latencyMs = 847;
55
+ const tokenCount = 142;
56
+ const guardrailsActive = 3;
57
+ console.log();
58
+ console.log(`${C}3. Extracting compliance factors...${R}`);
59
+ console.log(` factor_a (latency): ${W}${latencyMs} ms${R}`);
60
+ console.log(` factor_b (tokens): ${W}${tokenCount}${R}`);
61
+ console.log(` factor_c (guardrails): ${W}${guardrailsActive} active${R}`);
62
+ await sleep(300);
63
+ console.log();
64
+ console.log(`${C}4. Applying Clearing Level 1 (Standard)...${R}`);
65
+ console.log(` ${G}✓${R} Hashes retained`);
66
+ console.log(` ${G}✓${R} Factors retained`);
67
+ console.log(` ${G}✓${R} Raw prompt purged from wire`);
68
+ console.log(` ${G}✓${R} Raw response purged from wire`);
69
+ await sleep(300);
70
+ const tsMs = Date.now();
71
+ const epoch = Math.floor(tsMs / 1000);
72
+ const procedures = [
73
+ ["AI-INF.1", 1, 1, 1, "PASS", "Inference traced"],
74
+ ["AI-MDL.1", 1, 1, 0, "PASS", "Model version recorded"],
75
+ ["AI-GRD.1", 1, 1, guardrailsActive, "PASS", "Guardrails active"],
76
+ ];
77
+ console.log();
78
+ console.log(`${C}5. Minting SWT3 Witness Anchors...${R}`);
79
+ console.log();
80
+ for (const [procId, fa, fb, fc, verdict, desc] of procedures) {
81
+ const fp = mintFingerprint(tenant, procId, fa, fb, fc, tsMs);
82
+ const anchor = `SWT3-E-${provider}-AI-${procId}-${verdict}-${epoch}-${fp}`;
83
+ const color = verdict === "PASS" ? G : A;
84
+ console.log(` ${color}■ ${verdict}${R} ${W}${procId}${R} ${D}${desc}${R}`);
85
+ console.log(` ${D}${anchor}${R}`);
86
+ console.log();
87
+ }
88
+ console.log(`${C}6. Verifying anchor integrity...${R}`);
89
+ const fpCheck = mintFingerprint(tenant, "AI-INF.1", 1, 1, 1, tsMs);
90
+ console.log(` Recomputed: ${G}${fpCheck}${R}`);
91
+ console.log(` Match: ${G}✓ Anchor is independently verifiable${R}`);
92
+ console.log();
93
+ console.log(`${D}${"─".repeat(56)}${R}`);
94
+ console.log(`${B}What just happened:${R}`);
95
+ console.log(" • AI inference was simulated locally");
96
+ console.log(" • Prompt and response were SHA-256 hashed (raw text never transmitted)");
97
+ console.log(" • 3 compliance factors extracted (latency, tokens, guardrails)");
98
+ console.log(" • Clearing Level 1 purged raw data from the wire payload");
99
+ console.log(" • 3 SWT3 Witness Anchors minted with tamper-evident fingerprints");
100
+ console.log(" • Any party can re-derive the fingerprint using the same formula");
101
+ console.log();
102
+ console.log(`${B}Ready for production?${R}`);
103
+ console.log(` Book a 14-day assessment: ${C}https://calendly.com/tenova-axiom/30min${R}`);
104
+ console.log(` SDK docs: ${C}https://sovereign.tenova.io/docs/${R}`);
105
+ console.log(` GitHub: ${C}https://github.com/tenova-labs/swt3-ai${R}`);
106
+ console.log();
107
+ console.log(`${D}One Protocol. Every Model. Any Language. Zero Trust Required.${R}`);
108
+ console.log(`${D}TeNova — Defining the AI Accountability Standard.${R}`);
109
+ console.log();
110
+ }
111
+ main();
112
+ //# sourceMappingURL=demo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"demo.js","sourceRoot":"","sources":["../src/demo.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tenova/swt3-ai",
3
- "version": "0.2.3",
3
+ "version": "0.2.4",
4
4
  "description": "SWT3 AI Witness SDK: cryptographic attestation for AI inference",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -11,6 +11,9 @@
11
11
  "types": "./dist/index.d.ts"
12
12
  }
13
13
  },
14
+ "bin": {
15
+ "swt3-demo": "./dist/demo.js"
16
+ },
14
17
  "files": [
15
18
  "dist",
16
19
  "README.md"