@tenova/swt3-ai 0.5.1 → 0.5.3
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/LICENSE +191 -0
- package/README.md +227 -10
- package/dist/buffer.d.ts +7 -1
- package/dist/buffer.d.ts.map +1 -1
- package/dist/buffer.js +38 -3
- package/dist/buffer.js.map +1 -1
- package/dist/cli.d.ts +13 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +202 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +18 -5
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +346 -42
- package/dist/config.js.map +1 -1
- package/dist/demo.d.ts +1 -1
- package/dist/demo.d.ts.map +1 -1
- package/dist/demo.js +88 -4
- package/dist/demo.js.map +1 -1
- package/dist/doctor.d.ts +20 -0
- package/dist/doctor.d.ts.map +1 -0
- package/dist/doctor.js +357 -0
- package/dist/doctor.js.map +1 -0
- package/dist/environment.d.ts +34 -0
- package/dist/environment.d.ts.map +1 -0
- package/dist/environment.js +99 -0
- package/dist/environment.js.map +1 -0
- package/dist/exporters/chain-monitor.d.ts +55 -0
- package/dist/exporters/chain-monitor.d.ts.map +1 -0
- package/dist/exporters/chain-monitor.js +172 -0
- package/dist/exporters/chain-monitor.js.map +1 -0
- package/dist/hardware.d.ts +96 -0
- package/dist/hardware.d.ts.map +1 -0
- package/dist/hardware.js +265 -0
- package/dist/hardware.js.map +1 -0
- package/dist/index.d.ts +19 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -2
- package/dist/index.js.map +1 -1
- package/dist/merkle.d.ts +107 -0
- package/dist/merkle.d.ts.map +1 -0
- package/dist/merkle.js +226 -0
- package/dist/merkle.js.map +1 -0
- package/dist/schema.d.ts +18 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +255 -0
- package/dist/schema.js.map +1 -0
- package/dist/trust.d.ts +100 -0
- package/dist/trust.d.ts.map +1 -0
- package/dist/trust.js +222 -0
- package/dist/trust.js.map +1 -0
- package/dist/types.d.ts +167 -11
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +42 -1
- package/dist/types.js.map +1 -1
- package/dist/wal.d.ts +69 -0
- package/dist/wal.d.ts.map +1 -0
- package/dist/wal.js +223 -0
- package/dist/wal.js.map +1 -0
- package/dist/witness.d.ts +293 -1
- package/dist/witness.d.ts.map +1 -1
- package/dist/witness.js +1234 -5
- package/dist/witness.js.map +1 -1
- package/package.json +7 -7
- package/templates/cost-conscious.yaml +35 -0
- package/templates/eu-ai-act-high-risk.yaml +56 -0
- package/templates/granite-sovereign.yaml +55 -0
- package/templates/minimal.yaml +38 -0
- package/templates/mythos-defense.yaml +65 -0
- package/templates/nist-ai-rmf.yaml +47 -0
- package/templates/owasp-agentic-top10.yaml +50 -0
package/dist/cli.js
ADDED
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* SWT3 CLI -- governance tooling for AI systems.
|
|
4
|
+
*
|
|
5
|
+
* Commands:
|
|
6
|
+
* swt3 init Interactive governance setup
|
|
7
|
+
* swt3 init --profile X Non-interactive (CI/CD friendly)
|
|
8
|
+
* swt3 demo Run the zero-friction demo
|
|
9
|
+
* swt3 doctor Diagnose config health
|
|
10
|
+
* swt3 help Show usage
|
|
11
|
+
*/
|
|
12
|
+
import { existsSync, writeFileSync } from "node:fs";
|
|
13
|
+
import { join } from "node:path";
|
|
14
|
+
import { createInterface } from "node:readline";
|
|
15
|
+
const VERSION = "0.5.1";
|
|
16
|
+
const PROFILES = {
|
|
17
|
+
"eu-ai-act-high-risk": "EU AI Act Article 6, Annex III (strict, signing required)",
|
|
18
|
+
"granite-sovereign": "IBM Granite 4.1 + air-gap sovereign (strict, TPM required)",
|
|
19
|
+
"mythos-defense": "Exploit chain containment (strict, rate limiting, tool blocklist)",
|
|
20
|
+
"nist-ai-rmf": "NIST AI RMF + 800-53 GovCon (permissive, gradual adoption)",
|
|
21
|
+
"owasp-agentic-top10": "OWASP Agentic AI Top 10 (runtime containment, fail closed)",
|
|
22
|
+
"minimal": "Development / evaluation (no enforcement)",
|
|
23
|
+
};
|
|
24
|
+
const PROFILE_NAMES = Object.keys(PROFILES);
|
|
25
|
+
function printHelp() {
|
|
26
|
+
console.log(`
|
|
27
|
+
SWT3 CLI v${VERSION}
|
|
28
|
+
|
|
29
|
+
Usage:
|
|
30
|
+
swt3 init Interactive governance setup
|
|
31
|
+
swt3 init --profile <name> Non-interactive setup
|
|
32
|
+
swt3 init --profile <name> --tenant <id> --agent <id>
|
|
33
|
+
swt3 demo Run the zero-friction demo
|
|
34
|
+
swt3 doctor Diagnose config health
|
|
35
|
+
swt3 audit Forensic chain timeline (html or json)
|
|
36
|
+
swt3 help Show this message
|
|
37
|
+
|
|
38
|
+
Profiles:
|
|
39
|
+
${PROFILE_NAMES.map((n, i) => ` ${i + 1}. ${n.padEnd(24)} ${PROFILES[n]}`).join("\n")}
|
|
40
|
+
|
|
41
|
+
Docs: https://sovereign.tenova.io/docs/
|
|
42
|
+
`);
|
|
43
|
+
}
|
|
44
|
+
function ask(rl, question) {
|
|
45
|
+
return new Promise((resolve) => rl.question(question, resolve));
|
|
46
|
+
}
|
|
47
|
+
export function generateInitYaml(profile, tenantId, agentId) {
|
|
48
|
+
const lines = [
|
|
49
|
+
`# Generated by: swt3 init --profile ${profile}`,
|
|
50
|
+
`# Docs: https://sovereign.tenova.io/docs/`,
|
|
51
|
+
``,
|
|
52
|
+
`profile: ${profile}`,
|
|
53
|
+
``,
|
|
54
|
+
`# Required:`,
|
|
55
|
+
`tenant_id: ${tenantId || "YOUR_TENANT_ID"}`,
|
|
56
|
+
`api_key_env: SWT3_API_KEY`,
|
|
57
|
+
`agent_id: ${agentId || "your-agent-name"}`,
|
|
58
|
+
``,
|
|
59
|
+
`# Optional overrides (uncomment to customize):`,
|
|
60
|
+
`# endpoint: https://sovereign.tenova.io`,
|
|
61
|
+
`# clearing_level: 2`,
|
|
62
|
+
`# jurisdiction: US`,
|
|
63
|
+
`# signing_key_env: SWT3_SIGNING_KEY`,
|
|
64
|
+
``,
|
|
65
|
+
];
|
|
66
|
+
return lines.join("\n");
|
|
67
|
+
}
|
|
68
|
+
async function handleInit(args) {
|
|
69
|
+
const outputPath = join(process.cwd(), "swt3.yaml");
|
|
70
|
+
// Check overwrite protection
|
|
71
|
+
const forceIdx = args.indexOf("--force");
|
|
72
|
+
const force = forceIdx !== -1;
|
|
73
|
+
if (existsSync(outputPath) && !force) {
|
|
74
|
+
console.error("swt3.yaml already exists. Use --force to overwrite.");
|
|
75
|
+
process.exit(1);
|
|
76
|
+
}
|
|
77
|
+
// Parse flags
|
|
78
|
+
const profileIdx = args.indexOf("--profile");
|
|
79
|
+
const tenantIdx = args.indexOf("--tenant");
|
|
80
|
+
const agentIdx = args.indexOf("--agent");
|
|
81
|
+
let profile = profileIdx !== -1 ? args[profileIdx + 1] : "";
|
|
82
|
+
let tenantId = tenantIdx !== -1 ? args[tenantIdx + 1] : "";
|
|
83
|
+
let agentId = agentIdx !== -1 ? args[agentIdx + 1] : "";
|
|
84
|
+
// Validate profile if provided
|
|
85
|
+
if (profile && !PROFILE_NAMES.includes(profile)) {
|
|
86
|
+
console.error(`Unknown profile: '${profile}'`);
|
|
87
|
+
console.error(`Valid profiles: ${PROFILE_NAMES.join(", ")}`);
|
|
88
|
+
process.exit(1);
|
|
89
|
+
}
|
|
90
|
+
// Interactive mode if no profile specified
|
|
91
|
+
if (!profile) {
|
|
92
|
+
const rl = createInterface({ input: process.stdin, output: process.stdout });
|
|
93
|
+
console.log(`\n SWT3 Governance Setup\n`);
|
|
94
|
+
console.log(` Choose a compliance profile:`);
|
|
95
|
+
PROFILE_NAMES.forEach((name, i) => {
|
|
96
|
+
console.log(` ${i + 1}. ${name.padEnd(24)} ${PROFILES[name]}`);
|
|
97
|
+
});
|
|
98
|
+
const choice = await ask(rl, `\n Profile [1-${PROFILE_NAMES.length}]: `);
|
|
99
|
+
const idx = parseInt(choice, 10) - 1;
|
|
100
|
+
if (isNaN(idx) || idx < 0 || idx >= PROFILE_NAMES.length) {
|
|
101
|
+
console.error(" Invalid selection.");
|
|
102
|
+
rl.close();
|
|
103
|
+
process.exit(1);
|
|
104
|
+
}
|
|
105
|
+
profile = PROFILE_NAMES[idx];
|
|
106
|
+
if (!tenantId) {
|
|
107
|
+
tenantId = await ask(rl, " Tenant ID: ");
|
|
108
|
+
}
|
|
109
|
+
if (!agentId) {
|
|
110
|
+
agentId = await ask(rl, " Agent ID [optional]: ");
|
|
111
|
+
}
|
|
112
|
+
rl.close();
|
|
113
|
+
}
|
|
114
|
+
const content = generateInitYaml(profile, tenantId, agentId);
|
|
115
|
+
writeFileSync(outputPath, content, "utf-8");
|
|
116
|
+
console.log(`\n Created: swt3.yaml\n`);
|
|
117
|
+
console.log(` Next: set SWT3_API_KEY in your environment, then:`);
|
|
118
|
+
console.log(` import { Witness } from "@tenova/swt3-ai";`);
|
|
119
|
+
console.log(` const witness = Witness.fromConfig(); // done.\n`);
|
|
120
|
+
}
|
|
121
|
+
async function main() {
|
|
122
|
+
const [, , cmd, ...rest] = process.argv;
|
|
123
|
+
switch (cmd) {
|
|
124
|
+
case "init":
|
|
125
|
+
await handleInit(rest);
|
|
126
|
+
break;
|
|
127
|
+
case "demo": {
|
|
128
|
+
if (rest.includes("--mesh-test")) {
|
|
129
|
+
const { runMeshTest } = await import("./demo.js");
|
|
130
|
+
await runMeshTest();
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
const demo = await import("./demo.js");
|
|
134
|
+
demo.main();
|
|
135
|
+
}
|
|
136
|
+
break;
|
|
137
|
+
}
|
|
138
|
+
case "doctor": {
|
|
139
|
+
if (rest.includes("--friction-test")) {
|
|
140
|
+
const { runFrictionTest, printFrictionResults } = await import("./doctor.js");
|
|
141
|
+
const steps = await runFrictionTest();
|
|
142
|
+
printFrictionResults(steps);
|
|
143
|
+
if (steps.some((s) => s.status === "fail"))
|
|
144
|
+
process.exit(1);
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
const { runDoctorChecks, printDoctorResults } = await import("./doctor.js");
|
|
148
|
+
const checks = runDoctorChecks();
|
|
149
|
+
const jsonFlag = rest.includes("--json");
|
|
150
|
+
printDoctorResults(checks, jsonFlag);
|
|
151
|
+
const hasFail = checks.some((c) => c.status === "fail");
|
|
152
|
+
if (hasFail)
|
|
153
|
+
process.exit(1);
|
|
154
|
+
}
|
|
155
|
+
break;
|
|
156
|
+
}
|
|
157
|
+
case "audit": {
|
|
158
|
+
const { ChainMonitorExporter } = await import("./exporters/chain-monitor.js");
|
|
159
|
+
const fmtIdx = rest.indexOf("--format");
|
|
160
|
+
const format = fmtIdx !== -1 && rest[fmtIdx + 1] ? rest[fmtIdx + 1] : "html";
|
|
161
|
+
const walIdx = rest.indexOf("--wal-path");
|
|
162
|
+
const walDir = walIdx !== -1 && rest[walIdx + 1] ? rest[walIdx + 1] : undefined;
|
|
163
|
+
let tenantId = "UNKNOWN", agentId = "UNKNOWN", clearingLevel = 1;
|
|
164
|
+
try {
|
|
165
|
+
const { loadFullConfig } = await import("./config.js");
|
|
166
|
+
const cfg = loadFullConfig();
|
|
167
|
+
const opts = cfg.witnessOptions;
|
|
168
|
+
tenantId = opts.tenantId ?? tenantId;
|
|
169
|
+
agentId = opts.agentId ?? agentId;
|
|
170
|
+
clearingLevel = opts.clearingLevel ?? clearingLevel;
|
|
171
|
+
}
|
|
172
|
+
catch { /* no config */ }
|
|
173
|
+
const exporter = new ChainMonitorExporter({ walDir, tenantId, agentId, clearingLevel });
|
|
174
|
+
if (format === "json") {
|
|
175
|
+
console.log(exporter.exportJson());
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
const { writeFileSync } = await import("node:fs");
|
|
179
|
+
const html = exporter.exportHtml();
|
|
180
|
+
const outPath = "swt3-audit-report.html";
|
|
181
|
+
writeFileSync(outPath, html, "utf-8");
|
|
182
|
+
console.log(`Audit report saved: ${outPath}`);
|
|
183
|
+
}
|
|
184
|
+
break;
|
|
185
|
+
}
|
|
186
|
+
case "help":
|
|
187
|
+
case "--help":
|
|
188
|
+
case "-h":
|
|
189
|
+
case undefined:
|
|
190
|
+
printHelp();
|
|
191
|
+
break;
|
|
192
|
+
default:
|
|
193
|
+
console.error(`Unknown command: ${cmd}`);
|
|
194
|
+
printHelp();
|
|
195
|
+
process.exit(1);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
main().catch((err) => {
|
|
199
|
+
console.error(err.message);
|
|
200
|
+
process.exit(1);
|
|
201
|
+
});
|
|
202
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -15,13 +15,26 @@
|
|
|
15
15
|
* Requires: `npm install yaml`
|
|
16
16
|
*/
|
|
17
17
|
import type { WitnessOptions } from "./witness.js";
|
|
18
|
+
import type { LoadedConfig } from "./types.js";
|
|
19
|
+
interface Policy {
|
|
20
|
+
require_signing?: boolean;
|
|
21
|
+
min_clearing_level?: number;
|
|
22
|
+
required_procedures?: string[];
|
|
23
|
+
require_agent_id?: boolean;
|
|
24
|
+
max_flush_interval?: number;
|
|
25
|
+
require_jurisdiction?: boolean;
|
|
26
|
+
}
|
|
27
|
+
export declare function validatePolicy(config: Record<string, unknown>, policy: Policy): void;
|
|
28
|
+
export declare function computeConfigHash(content: string): string;
|
|
18
29
|
/**
|
|
19
30
|
* Load a .swt3.yaml config file and return a WitnessOptions object.
|
|
20
|
-
*
|
|
21
|
-
* @param path - Explicit path to YAML file. If omitted, searches for
|
|
22
|
-
* swt3.yaml or .swt3.yaml in the current directory.
|
|
23
|
-
* @returns WitnessOptions compatible with `new Witness(options)`.
|
|
24
|
-
* @throws If file not found, env var missing, yaml package not installed, or policy violation.
|
|
31
|
+
* Backward-compatible: returns WitnessOptions only (no trust_mesh, hardware, etc.).
|
|
25
32
|
*/
|
|
26
33
|
export declare function loadConfig(path?: string): WitnessOptions;
|
|
34
|
+
/**
|
|
35
|
+
* Load a .swt3.yaml config file and return the full parsed config
|
|
36
|
+
* including trust_mesh, hardware, density_policy, and config hash.
|
|
37
|
+
*/
|
|
38
|
+
export declare function loadFullConfig(path?: string): LoadedConfig;
|
|
39
|
+
export {};
|
|
27
40
|
//# sourceMappingURL=config.d.ts.map
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAOH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EACyF,YAAY,EAChH,MAAM,YAAY,CAAC;AAuMpB,UAAU,MAAM;IACd,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AA6MD,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAiDpF;AAID,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEzD;AAID;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,cAAc,CAExD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,YAAY,CAiG1D"}
|