witnora 0.8.1 → 0.9.0
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 +275 -12
- package/dist/artifact-manifest.js +37 -0
- package/dist/artifact-validation.js +102 -0
- package/dist/badge.js +31 -0
- package/dist/browser-adapter.js +156 -0
- package/dist/bundle.js +100 -0
- package/dist/cli.js +971 -0
- package/dist/command-help.js +71 -0
- package/dist/companion-artifacts.js +170 -0
- package/dist/conformance.js +115 -0
- package/dist/control-plane.js +409 -0
- package/dist/corpus-governance.js +126 -0
- package/dist/corpus-store.js +239 -0
- package/dist/corpus.js +438 -0
- package/dist/credentials.js +127 -0
- package/dist/evidence-signing.js +85 -0
- package/dist/failure-review.js +188 -0
- package/dist/guided-setup.js +101 -0
- package/dist/index.js +16 -0
- package/dist/lab.js +323 -0
- package/dist/local-server.js +491 -0
- package/dist/monitor.js +100 -0
- package/dist/normalizers.js +265 -0
- package/dist/onboarding-templates.js +158 -0
- package/dist/release-gate.js +457 -0
- package/dist/report.js +165 -0
- package/dist/runner.js +349 -0
- package/dist/sandbox.js +424 -0
- package/dist/schema-validator.js +503 -0
- package/dist/try.js +135 -0
- package/dist/types.js +3 -0
- package/dist/vendor/onegent-runtime/browser-adapter-kit.d.ts +107 -0
- package/dist/vendor/onegent-runtime/browser-adapter-kit.d.ts.map +1 -0
- package/dist/vendor/onegent-runtime/browser-adapter-kit.js +187 -0
- package/dist/vendor/onegent-runtime/browser-enforcement-runtime.d.ts +183 -0
- package/dist/vendor/onegent-runtime/browser-enforcement-runtime.d.ts.map +1 -0
- package/dist/vendor/onegent-runtime/browser-enforcement-runtime.js +344 -0
- package/dist/vendor/onegent-runtime/controlled-adapter.d.ts +6 -0
- package/dist/vendor/onegent-runtime/controlled-adapter.d.ts.map +1 -0
- package/dist/vendor/onegent-runtime/controlled-adapter.js +40 -0
- package/dist/vendor/onegent-runtime/mock-procurement.d.ts +6 -0
- package/dist/vendor/onegent-runtime/mock-procurement.d.ts.map +1 -0
- package/dist/vendor/onegent-runtime/mock-procurement.js +33 -0
- package/dist/vendor/onegent-runtime/policies.d.ts +6 -0
- package/dist/vendor/onegent-runtime/policies.d.ts.map +1 -0
- package/dist/vendor/onegent-runtime/policies.js +109 -0
- package/dist/vendor/onegent-runtime/risk.d.ts +3 -0
- package/dist/vendor/onegent-runtime/risk.d.ts.map +1 -0
- package/dist/vendor/onegent-runtime/risk.js +54 -0
- package/dist/vendor/onegent-runtime/sandbox-adapter-kit.d.ts +45 -0
- package/dist/vendor/onegent-runtime/sandbox-adapter-kit.d.ts.map +1 -0
- package/dist/vendor/onegent-runtime/sandbox-adapter-kit.js +148 -0
- package/dist/vendor/onegent-runtime/sandbox-harness.d.ts +167 -0
- package/dist/vendor/onegent-runtime/sandbox-harness.d.ts.map +1 -0
- package/dist/vendor/onegent-runtime/sandbox-harness.js +729 -0
- package/dist/vendor/onegent-runtime/sandbox-hosted.d.ts +77 -0
- package/dist/vendor/onegent-runtime/sandbox-hosted.d.ts.map +1 -0
- package/dist/vendor/onegent-runtime/sandbox-hosted.js +152 -0
- package/dist/vendor/onegent-runtime/sdk.d.ts +29 -0
- package/dist/vendor/onegent-runtime/sdk.d.ts.map +1 -0
- package/dist/vendor/onegent-runtime/sdk.js +140 -0
- package/dist/vendor/onegent-runtime/service.d.ts +27 -0
- package/dist/vendor/onegent-runtime/service.d.ts.map +1 -0
- package/dist/vendor/onegent-runtime/service.js +423 -0
- package/dist/vendor/onegent-runtime/store.d.ts +16 -0
- package/dist/vendor/onegent-runtime/store.d.ts.map +1 -0
- package/dist/vendor/onegent-runtime/store.js +29 -0
- package/dist/vendor/onegent-runtime/stripe-test-readonly.d.ts +79 -0
- package/dist/vendor/onegent-runtime/stripe-test-readonly.d.ts.map +1 -0
- package/dist/vendor/onegent-runtime/stripe-test-readonly.js +163 -0
- package/dist/vendor/onegent-runtime/trust-crypto.d.ts +11 -0
- package/dist/vendor/onegent-runtime/trust-crypto.d.ts.map +1 -0
- package/dist/vendor/onegent-runtime/trust-crypto.js +70 -0
- package/dist/vendor/onegent-runtime/trust-types.d.ts +163 -0
- package/dist/vendor/onegent-runtime/trust-types.d.ts.map +1 -0
- package/dist/vendor/onegent-runtime/trust-types.js +7 -0
- package/dist/vendor/onegent-runtime/trusted-recorder.d.ts +49 -0
- package/dist/vendor/onegent-runtime/trusted-recorder.d.ts.map +1 -0
- package/dist/vendor/onegent-runtime/trusted-recorder.js +347 -0
- package/dist/vendor/onegent-runtime/types.d.ts +287 -0
- package/dist/vendor/onegent-runtime/types.d.ts.map +1 -0
- package/dist/vendor/onegent-runtime/types.js +1 -0
- package/dist/vendor/onegent-runtime/vendor-sandbox-egress.d.ts +49 -0
- package/dist/vendor/onegent-runtime/vendor-sandbox-egress.d.ts.map +1 -0
- package/dist/vendor/onegent-runtime/vendor-sandbox-egress.js +152 -0
- package/package.json +33 -13
- package/bin/witnora.js +0 -3
package/dist/bundle.js
ADDED
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { AGENTCERT_EVIDENCE_SCHEMA_SEMVER, AGENTCERT_EVIDENCE_SCHEMA_VERSION } from "./types.js";
|
|
2
|
+
export function buildEvidenceBundle(results, subjectName, subjectType = "agent") {
|
|
3
|
+
const evidence = results.flatMap((result) => result.evidence);
|
|
4
|
+
const score = results.length === 0 ? 0 : Math.round(results.reduce((sum, result) => sum + result.score, 0) / results.length);
|
|
5
|
+
const passed = results.length > 0 && results.every((result) => result.passed);
|
|
6
|
+
const artifacts = {};
|
|
7
|
+
for (const result of results) {
|
|
8
|
+
for (const [name, path] of Object.entries(result.artifacts)) {
|
|
9
|
+
if (path) {
|
|
10
|
+
artifacts[`${result.product}.${name}`] = path;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
return {
|
|
15
|
+
schemaName: "agentcert.evidence_bundle",
|
|
16
|
+
schemaVersion: AGENTCERT_EVIDENCE_SCHEMA_VERSION,
|
|
17
|
+
schemaSemver: AGENTCERT_EVIDENCE_SCHEMA_SEMVER,
|
|
18
|
+
kind: "agentcert.evidence_bundle",
|
|
19
|
+
runId: `agentcert_${Date.now()}`,
|
|
20
|
+
generatedAt: new Date().toISOString(),
|
|
21
|
+
subject: {
|
|
22
|
+
name: subjectName,
|
|
23
|
+
type: parseSubjectType(subjectType),
|
|
24
|
+
},
|
|
25
|
+
verdict: {
|
|
26
|
+
passed,
|
|
27
|
+
score,
|
|
28
|
+
level: levelForScore(score, passed),
|
|
29
|
+
},
|
|
30
|
+
summary: {
|
|
31
|
+
products: [...new Set(results.map((result) => result.product))],
|
|
32
|
+
criticalEvidence: evidence.filter((item) => item.severity === "critical").length,
|
|
33
|
+
highEvidence: evidence.filter((item) => item.severity === "high").length,
|
|
34
|
+
totalEvidence: evidence.length,
|
|
35
|
+
},
|
|
36
|
+
results,
|
|
37
|
+
evidence,
|
|
38
|
+
artifacts,
|
|
39
|
+
evidenceStrength: evidenceStrengthFor(results),
|
|
40
|
+
standards: [
|
|
41
|
+
{
|
|
42
|
+
id: "aiuc-1",
|
|
43
|
+
name: "AIUC-1 agent security, safety, and reliability",
|
|
44
|
+
status: "mapped",
|
|
45
|
+
note: "Witnora evidence can support preparation for independent AIUC-1-style reviews; it is not an official certification.",
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
id: "nist-ai-agent-standards",
|
|
49
|
+
name: "NIST AI Agent Standards Initiative",
|
|
50
|
+
status: "mapped",
|
|
51
|
+
note: "Witnora evidence aligns with secure, interoperable, auditable agent deployment goals.",
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
id: "owasp-agentic-ai",
|
|
55
|
+
name: "OWASP Agentic AI threats and mitigations",
|
|
56
|
+
status: "mapped",
|
|
57
|
+
note: "Witnora scenarios cover prompt injection, tool misuse, excessive agency, and runtime action governance.",
|
|
58
|
+
},
|
|
59
|
+
],
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
const STRENGTH_ORDER = ["reported", "recorded", "enforced", "outcome_verified", "independently_reviewed"];
|
|
63
|
+
function evidenceStrengthFor(results) {
|
|
64
|
+
const values = results.map((result) => result.evidenceStrength ?? {
|
|
65
|
+
schemaVersion: "agentcert.evidence_strength.v0.1",
|
|
66
|
+
level: "reported",
|
|
67
|
+
claims: ["A producer supplied a result for this run."],
|
|
68
|
+
limitations: ["The result does not contain a source-signed action record."],
|
|
69
|
+
});
|
|
70
|
+
const weakest = values.length
|
|
71
|
+
? values.reduce((left, right) => STRENGTH_ORDER.indexOf(left.level) <= STRENGTH_ORDER.indexOf(right.level) ? left : right)
|
|
72
|
+
: { schemaVersion: "agentcert.evidence_strength.v0.1", level: "reported", claims: [], limitations: ["The bundle contains no results."] };
|
|
73
|
+
return {
|
|
74
|
+
schemaVersion: "agentcert.evidence_strength.v0.1",
|
|
75
|
+
level: weakest.level,
|
|
76
|
+
claims: [...new Set(values.flatMap((value) => value.claims))],
|
|
77
|
+
limitations: [...new Set(values.flatMap((value) => value.limitations))],
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
function levelForScore(score, passed) {
|
|
81
|
+
if (!passed) {
|
|
82
|
+
return "No assurance decision";
|
|
83
|
+
}
|
|
84
|
+
if (score >= 95) {
|
|
85
|
+
return "Strong evidence";
|
|
86
|
+
}
|
|
87
|
+
if (score >= 85) {
|
|
88
|
+
return "Substantial evidence";
|
|
89
|
+
}
|
|
90
|
+
if (score >= 70) {
|
|
91
|
+
return "Limited evidence";
|
|
92
|
+
}
|
|
93
|
+
return "Needs review";
|
|
94
|
+
}
|
|
95
|
+
function parseSubjectType(value) {
|
|
96
|
+
if (value === "agent" || value === "mcp-server" || value === "tool" || value === "application") {
|
|
97
|
+
return value;
|
|
98
|
+
}
|
|
99
|
+
return "unknown";
|
|
100
|
+
}
|