@tenova/swt3-ai 0.2.2 → 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
@@ -262,6 +305,14 @@ Each anchor gets its own JSON file containing the full uncleared factors and met
262
305
 
263
306
  For the full protocol specification, see the [Factor Handoff Protocol](https://sovereign.tenova.io/docs/factor-handoff-protocol.html).
264
307
 
308
+ ## Ready to Witness Your AI?
309
+
310
+ Get an API key and start witnessing in under 10 minutes:
311
+
312
+ - [Book a 14-Day Assessment](https://calendly.com/tenova-axiom/30min) — free pilot, Compliance Passport delivered at day 14
313
+ - [Quickstart Guide](https://sovereign.tenova.io/guides/ai-witness-quickstart.html) — 10-minute integration walkthrough
314
+ - [Contact Sales](mailto:sales@tenovaai.com) — enterprise, on-prem, or custom clearing levels
315
+
265
316
  ## Documentation
266
317
 
267
318
  - [SDK Developer Docs](https://sovereign.tenova.io/docs/) - Quickstart, providers, clearing levels, configuration
@@ -271,6 +322,14 @@ For the full protocol specification, see the [Factor Handoff Protocol](https://s
271
322
 
272
323
  ---
273
324
 
325
+ ## Support the Standard
326
+
327
+ If you believe AI systems should prove they followed the rules, [give us a star](https://github.com/tenova-labs/swt3-ai). Every star signals that the industry is ready for an accountability standard.
328
+
329
+ ---
330
+
274
331
  *SWT3: Sovereign Witness Traceability. We don't run your models. We witness them.*
275
332
 
333
+ *TeNova: Defining the AI Accountability Standard. One protocol. Zero Integrity Debt. Total Sovereignty.*
334
+
276
335
  SWT3 and Sovereign Witness Traceability are trademarks of Tenable Nova LLC. Patent pending. Apache 2.0 licensed.
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":";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,GAAG,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,0CAA0C,CAAC,EAAE,CAAC,CAAC;IAC3F,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,oCAAoC,CAAC,EAAE,CAAC,CAAC;IACrF,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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tenova/swt3-ai",
3
- "version": "0.2.2",
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"