@tenova/swt3-mcp 0.1.0 → 0.5.1

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.
Files changed (68) hide show
  1. package/README.md +1 -1
  2. package/dist/chain-verifier.d.ts +46 -0
  3. package/dist/chain-verifier.d.ts.map +1 -0
  4. package/dist/chain-verifier.js +210 -0
  5. package/dist/chain-verifier.js.map +1 -0
  6. package/dist/client.d.ts +4 -0
  7. package/dist/client.d.ts.map +1 -1
  8. package/dist/client.js.map +1 -1
  9. package/dist/config.d.ts +8 -0
  10. package/dist/config.d.ts.map +1 -1
  11. package/dist/config.js +8 -0
  12. package/dist/config.js.map +1 -1
  13. package/dist/density-policy.d.ts +55 -0
  14. package/dist/density-policy.d.ts.map +1 -0
  15. package/dist/density-policy.js +124 -0
  16. package/dist/density-policy.js.map +1 -0
  17. package/dist/redis-reader.d.ts +57 -0
  18. package/dist/redis-reader.d.ts.map +1 -0
  19. package/dist/redis-reader.js +254 -0
  20. package/dist/redis-reader.js.map +1 -0
  21. package/dist/server.d.ts.map +1 -1
  22. package/dist/server.js +442 -0
  23. package/dist/server.js.map +1 -1
  24. package/dist/state.d.ts +27 -0
  25. package/dist/state.d.ts.map +1 -0
  26. package/dist/state.js +18 -0
  27. package/dist/state.js.map +1 -0
  28. package/dist/tools/audit.d.ts +20 -0
  29. package/dist/tools/audit.d.ts.map +1 -0
  30. package/dist/tools/audit.js +102 -0
  31. package/dist/tools/audit.js.map +1 -0
  32. package/dist/tools/authorize.d.ts +19 -0
  33. package/dist/tools/authorize.d.ts.map +1 -0
  34. package/dist/tools/authorize.js +96 -0
  35. package/dist/tools/authorize.js.map +1 -0
  36. package/dist/tools/chain.d.ts +24 -0
  37. package/dist/tools/chain.d.ts.map +1 -0
  38. package/dist/tools/chain.js +114 -0
  39. package/dist/tools/chain.js.map +1 -0
  40. package/dist/tools/model.d.ts +33 -0
  41. package/dist/tools/model.d.ts.map +1 -0
  42. package/dist/tools/model.js +162 -0
  43. package/dist/tools/model.js.map +1 -0
  44. package/dist/tools/signup.d.ts +2 -2
  45. package/dist/tools/signup.d.ts.map +1 -1
  46. package/dist/tools/signup.js +10 -3
  47. package/dist/tools/signup.js.map +1 -1
  48. package/dist/tools/skill.d.ts +33 -0
  49. package/dist/tools/skill.d.ts.map +1 -0
  50. package/dist/tools/skill.js +168 -0
  51. package/dist/tools/skill.js.map +1 -0
  52. package/dist/tools/suggest.d.ts +15 -0
  53. package/dist/tools/suggest.d.ts.map +1 -0
  54. package/dist/tools/suggest.js +174 -0
  55. package/dist/tools/suggest.js.map +1 -0
  56. package/dist/tools/trust.d.ts +33 -0
  57. package/dist/tools/trust.d.ts.map +1 -0
  58. package/dist/tools/trust.js +209 -0
  59. package/dist/tools/trust.js.map +1 -0
  60. package/dist/tools/violation.d.ts +20 -0
  61. package/dist/tools/violation.d.ts.map +1 -0
  62. package/dist/tools/violation.js +97 -0
  63. package/dist/tools/violation.js.map +1 -0
  64. package/dist/tools/witness.d.ts +6 -1
  65. package/dist/tools/witness.d.ts.map +1 -1
  66. package/dist/tools/witness.js +19 -5
  67. package/dist/tools/witness.js.map +1 -1
  68. package/package.json +25 -2
@@ -0,0 +1,33 @@
1
+ /**
2
+ * SWT3 MCP Server: skill attestation tools.
3
+ *
4
+ * attest_skill_manifest (AI-SKILL.1): Attest active skills/tools/plugins.
5
+ * attest_memory_context (AI-SKILL.2): Attest memory sources influencing decisions.
6
+ */
7
+ import type { McpConfig } from "../config.js";
8
+ import type { AxiomClient } from "../client.js";
9
+ interface SkillManifestArgs {
10
+ skills: Array<{
11
+ name: string;
12
+ version?: string;
13
+ hash?: string;
14
+ }>;
15
+ expected_manifest_hash?: string;
16
+ agent_id?: string;
17
+ cycle_id?: string;
18
+ clearing_level?: 0 | 1 | 2 | 3;
19
+ }
20
+ export declare function handleAttestSkillManifest(args: SkillManifestArgs, config: McpConfig, client: AxiomClient): Promise<string>;
21
+ interface MemoryContextArgs {
22
+ memory_sources: Array<{
23
+ type: string;
24
+ id?: string;
25
+ hash?: string;
26
+ }>;
27
+ agent_id?: string;
28
+ cycle_id?: string;
29
+ clearing_level?: 0 | 1 | 2 | 3;
30
+ }
31
+ export declare function handleAttestMemoryContext(args: MemoryContextArgs, config: McpConfig, client: AxiomClient): Promise<string>;
32
+ export {};
33
+ //# sourceMappingURL=skill.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../../src/tools/skill.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,cAAc,CAAC;AAUhE,UAAU,iBAAiB;IACzB,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjE,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CAChC;AAED,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,iBAAiB,EACvB,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,MAAM,CAAC,CAuFjB;AAID,UAAU,iBAAiB;IACzB,cAAc,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CAChC;AAED,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,iBAAiB,EACvB,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,MAAM,CAAC,CAgFjB"}
@@ -0,0 +1,168 @@
1
+ /**
2
+ * SWT3 MCP Server: skill attestation tools.
3
+ *
4
+ * attest_skill_manifest (AI-SKILL.1): Attest active skills/tools/plugins.
5
+ * attest_memory_context (AI-SKILL.2): Attest memory sources influencing decisions.
6
+ */
7
+ import { mintFingerprint, sha256Truncated, timestampMs, signPayload, } from "../fingerprint.js";
8
+ export async function handleAttestSkillManifest(args, config, client) {
9
+ const procedureId = "AI-SKILL.1";
10
+ const clearingLevel = args.clearing_level ?? config.clearingLevel;
11
+ // Compute manifest hash from sorted skill hashes
12
+ const skillHashes = args.skills
13
+ .map((s) => s.hash || sha256Truncated(s.name))
14
+ .sort();
15
+ const computedManifest = sha256Truncated(skillHashes.join(":"));
16
+ const match = args.expected_manifest_hash
17
+ ? computedManifest === args.expected_manifest_hash
18
+ : true;
19
+ const factorA = args.skills.length;
20
+ const factorB = match ? 1 : 0;
21
+ const factorC = 0;
22
+ const verdict = match ? "PASS" : "FAIL";
23
+ const [ts, epoch] = timestampMs();
24
+ const fp = mintFingerprint(config.tenantId, procedureId, factorA, factorB, factorC, ts);
25
+ const payload = {
26
+ procedure_id: procedureId,
27
+ factor_a: factorA,
28
+ factor_b: factorB,
29
+ factor_c: factorC,
30
+ clearing_level: clearingLevel,
31
+ anchor_fingerprint: fp,
32
+ anchor_epoch: epoch,
33
+ fingerprint_timestamp_ms: ts,
34
+ };
35
+ if (clearingLevel <= 1) {
36
+ payload.ai_model_id = "skill-manifest";
37
+ payload.ai_context = {
38
+ provider: "skill-manifest",
39
+ skills: args.skills,
40
+ manifest_hash: computedManifest,
41
+ };
42
+ }
43
+ else if (clearingLevel === 2) {
44
+ payload.ai_model_id = "skill-manifest";
45
+ }
46
+ else {
47
+ payload.ai_model_id = sha256Truncated("skill-manifest");
48
+ }
49
+ payload.witness_source = "mcp";
50
+ const agentId = args.agent_id || config.agentId;
51
+ if (agentId)
52
+ payload.agent_id = agentId;
53
+ if (args.cycle_id)
54
+ payload.cycle_id = args.cycle_id;
55
+ if (config.signingKey) {
56
+ payload.payload_signature = signPayload(config.signingKey, fp, agentId);
57
+ }
58
+ if (config.demo) {
59
+ const demoAnchor = `SWT3-DEMO-LOCAL-AI-${procedureId.replace(/[.-]/g, "")}-${verdict}-${epoch}-${fp}`;
60
+ const skillNames = args.skills.map((s) => s.name).join(", ");
61
+ return [
62
+ `[DEMO MODE: local only, not persisted]`,
63
+ ``,
64
+ `Skill Manifest Attestation`,
65
+ `Verdict: ${verdict}`,
66
+ `Anchor: ${demoAnchor}`,
67
+ `Skills: ${skillNames}`,
68
+ `Count: ${args.skills.length}`,
69
+ `Manifest Hash: ${computedManifest}`,
70
+ `Clearing Level: ${clearingLevel}`,
71
+ `Fingerprint: ${fp}`,
72
+ ].join("\n");
73
+ }
74
+ const receipt = await client.postWitness(payload);
75
+ if (receipt.tenant_id && !process.env.SWT3_TENANT_ID)
76
+ config.tenantId = receipt.tenant_id;
77
+ const skillNames = args.skills.map((s) => s.name).join(", ");
78
+ return [
79
+ `Skill Manifest Attestation`,
80
+ `Verdict: ${receipt.verdict}`,
81
+ `Anchor: ${receipt.swt3_anchor}`,
82
+ `Skills: ${skillNames}`,
83
+ `Count: ${args.skills.length}`,
84
+ `Manifest Hash: ${computedManifest}`,
85
+ `Clearing Level: ${receipt.clearing_level}`,
86
+ `Witnessed: ${receipt.witnessed_at}`,
87
+ `Verify: ${config.endpoint}${receipt.verification_url}`,
88
+ `Fingerprint: ${fp}`,
89
+ ].join("\n");
90
+ }
91
+ export async function handleAttestMemoryContext(args, config, client) {
92
+ const procedureId = "AI-SKILL.2";
93
+ const clearingLevel = args.clearing_level ?? config.clearingLevel;
94
+ const allIdentified = args.memory_sources.length > 0 &&
95
+ args.memory_sources.every((s) => s.id || s.hash);
96
+ const factorA = args.memory_sources.length;
97
+ const factorB = allIdentified ? 1 : 0;
98
+ const factorC = 0;
99
+ const verdict = allIdentified ? "PASS" : "FAIL";
100
+ const [ts, epoch] = timestampMs();
101
+ const fp = mintFingerprint(config.tenantId, procedureId, factorA, factorB, factorC, ts);
102
+ const payload = {
103
+ procedure_id: procedureId,
104
+ factor_a: factorA,
105
+ factor_b: factorB,
106
+ factor_c: factorC,
107
+ clearing_level: clearingLevel,
108
+ anchor_fingerprint: fp,
109
+ anchor_epoch: epoch,
110
+ fingerprint_timestamp_ms: ts,
111
+ };
112
+ if (clearingLevel <= 1) {
113
+ payload.ai_model_id = "memory-context";
114
+ payload.ai_context = {
115
+ provider: "memory",
116
+ sources: args.memory_sources,
117
+ total_sources: args.memory_sources.length,
118
+ };
119
+ }
120
+ else if (clearingLevel === 2) {
121
+ payload.ai_model_id = "memory-context";
122
+ }
123
+ else {
124
+ payload.ai_model_id = sha256Truncated("memory-context");
125
+ }
126
+ payload.witness_source = "mcp";
127
+ const agentId = args.agent_id || config.agentId;
128
+ if (agentId)
129
+ payload.agent_id = agentId;
130
+ if (args.cycle_id)
131
+ payload.cycle_id = args.cycle_id;
132
+ if (config.signingKey) {
133
+ payload.payload_signature = signPayload(config.signingKey, fp, agentId);
134
+ }
135
+ if (config.demo) {
136
+ const demoAnchor = `SWT3-DEMO-LOCAL-AI-${procedureId.replace(/[.-]/g, "")}-${verdict}-${epoch}-${fp}`;
137
+ const sourceTypes = args.memory_sources.map((s) => s.type).join(", ");
138
+ return [
139
+ `[DEMO MODE: local only, not persisted]`,
140
+ ``,
141
+ `Memory Context Binding`,
142
+ `Verdict: ${verdict}`,
143
+ `Anchor: ${demoAnchor}`,
144
+ `Sources: ${sourceTypes}`,
145
+ `Count: ${args.memory_sources.length}`,
146
+ `All Identified: ${allIdentified}`,
147
+ `Clearing Level: ${clearingLevel}`,
148
+ `Fingerprint: ${fp}`,
149
+ ].join("\n");
150
+ }
151
+ const receipt = await client.postWitness(payload);
152
+ if (receipt.tenant_id && !process.env.SWT3_TENANT_ID)
153
+ config.tenantId = receipt.tenant_id;
154
+ const sourceTypes = args.memory_sources.map((s) => s.type).join(", ");
155
+ return [
156
+ `Memory Context Binding`,
157
+ `Verdict: ${receipt.verdict}`,
158
+ `Anchor: ${receipt.swt3_anchor}`,
159
+ `Sources: ${sourceTypes}`,
160
+ `Count: ${args.memory_sources.length}`,
161
+ `All Identified: ${allIdentified}`,
162
+ `Clearing Level: ${receipt.clearing_level}`,
163
+ `Witnessed: ${receipt.witnessed_at}`,
164
+ `Verify: ${config.endpoint}${receipt.verification_url}`,
165
+ `Fingerprint: ${fp}`,
166
+ ].join("\n");
167
+ }
168
+ //# sourceMappingURL=skill.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill.js","sourceRoot":"","sources":["../../src/tools/skill.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * SWT3 MCP Server: suggest_procedures tool.
3
+ *
4
+ * Advisory-only procedure suggestions based on context keywords.
5
+ * No network call. Never enforced. The agent decides what to witness.
6
+ */
7
+ interface SuggestArgs {
8
+ context: string;
9
+ model_id?: string;
10
+ data_classification?: string;
11
+ tools_used?: string[];
12
+ }
13
+ export declare function handleSuggest(args: SuggestArgs): string;
14
+ export {};
15
+ //# sourceMappingURL=suggest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suggest.d.ts","sourceRoot":"","sources":["../../src/tools/suggest.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,UAAU,WAAW;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AA2HD,wBAAgB,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAmEvD"}
@@ -0,0 +1,174 @@
1
+ /**
2
+ * SWT3 MCP Server: suggest_procedures tool.
3
+ *
4
+ * Advisory-only procedure suggestions based on context keywords.
5
+ * No network call. Never enforced. The agent decides what to witness.
6
+ */
7
+ const KEYWORD_MAP = [
8
+ {
9
+ keywords: ["infer", "generat", "complet", "chat", "prompt", "response", "llm", "model", "gpt", "claude", "llama", "mistral"],
10
+ procedure: "AI-INF.1",
11
+ title: "Inference Provenance",
12
+ reason: "AI model inference detected -- witness the model, prompt hash, and response hash",
13
+ priority: 1,
14
+ },
15
+ {
16
+ keywords: ["drift", "version", "chang", "updat", "different model", "switch", "migrat"],
17
+ procedure: "AI-DFT.1",
18
+ title: "Model Drift Detection",
19
+ reason: "Model version or behavior change indicated -- witness for drift tracking",
20
+ priority: 2,
21
+ },
22
+ {
23
+ keywords: ["guard", "safety", "filter", "modera", "content filter", "refusal", "block", "harm"],
24
+ procedure: "AI-GRD.1",
25
+ title: "Guardrail Attestation",
26
+ reason: "Safety or content filtering context detected -- witness guardrail state",
27
+ priority: 2,
28
+ },
29
+ {
30
+ keywords: ["agent", "identity", "who am i", "multi-agent", "orchestrat", "delegat"],
31
+ procedure: "AI-ID.1",
32
+ title: "Agent Identity",
33
+ reason: "Agent identity or multi-agent context detected -- witness agent_id",
34
+ priority: 3,
35
+ },
36
+ {
37
+ keywords: ["access", "database", "api call", "fetch", "read", "write", "permiss", "authoriz", "pii", "credential"],
38
+ procedure: "AI-ACC.1",
39
+ title: "Access Control Witnessing",
40
+ reason: "Data or resource access detected -- witness the authorization decision",
41
+ priority: 2,
42
+ },
43
+ {
44
+ keywords: ["tool", "function call", "plugin", "action", "execut", "run command", "code interpret"],
45
+ procedure: "AI-TOOL.1",
46
+ title: "Tool Use Witnessing",
47
+ reason: "Tool or function call detected -- witness the tool invocation",
48
+ priority: 2,
49
+ },
50
+ {
51
+ keywords: ["revok", "recall", "retract", "correct", "error", "mistake", "withdraw", "undo"],
52
+ procedure: "AI-REV.1",
53
+ title: "Anchor Revocation",
54
+ reason: "Correction or recall context detected -- consider revoking a prior anchor",
55
+ priority: 3,
56
+ },
57
+ {
58
+ keywords: ["handoff", "transfer", "pass to", "chain", "pipeline", "next agent", "downstream"],
59
+ procedure: "AI-CHAIN.1",
60
+ title: "Chain-of-Custody Handoff",
61
+ reason: "Agent handoff or pipeline transfer detected -- witness custody transfer",
62
+ priority: 3,
63
+ },
64
+ {
65
+ keywords: ["rag", "retriev", "context", "document", "chunk", "vector", "embed", "search result", "knowledge base"],
66
+ procedure: "AI-RAG.1",
67
+ title: "RAG Context Provenance",
68
+ reason: "Retrieval-augmented generation detected -- witness source documents and relevance",
69
+ priority: 2,
70
+ },
71
+ {
72
+ keywords: ["train", "fine-tun", "dataset", "epoch", "checkpoint", "weight", "lora", "adapter", "unsloth"],
73
+ procedure: "AI-DATA.3",
74
+ title: "Training Data Statistics",
75
+ reason: "Training or fine-tuning context detected -- witness dataset properties",
76
+ priority: 3,
77
+ },
78
+ {
79
+ keywords: ["bias", "fairness", "disparity", "protected", "demographic", "equit", "discriminat"],
80
+ procedure: "AI-FAIR.3",
81
+ title: "Bias Assessment",
82
+ reason: "Fairness or bias evaluation detected -- witness assessment results",
83
+ priority: 3,
84
+ },
85
+ {
86
+ keywords: ["model card", "registry", "catalog", "model version", "deploy model", "serve model"],
87
+ procedure: "AI-MDL.1",
88
+ title: "Model Hash Integrity",
89
+ reason: "Model management context detected -- witness model identity and hash",
90
+ priority: 2,
91
+ },
92
+ {
93
+ keywords: ["violat", "policy breach", "forbidden", "prohibited", "restrict", "banned", "illegal"],
94
+ procedure: "AI-VIO.1",
95
+ title: "Policy Violation",
96
+ reason: "Policy violation or prohibited action detected -- witness with severity classification",
97
+ priority: 1,
98
+ },
99
+ {
100
+ keywords: ["skill", "capability", "manifest", "plugin list", "tool list", "function list"],
101
+ procedure: "AI-SKILL.1",
102
+ title: "Skill Manifest",
103
+ reason: "Agent capability or skill registration detected -- witness the manifest",
104
+ priority: 3,
105
+ },
106
+ {
107
+ keywords: ["thermal", "temperature", "cool", "overheat", "power draw", "watt", "energy", "node health", "residential", "edge node"],
108
+ procedure: "AI-ENV.1",
109
+ title: "Environmental Integrity",
110
+ reason: "Hardware environment or node health context detected -- witness thermal and power state",
111
+ priority: 3,
112
+ },
113
+ ];
114
+ export function handleSuggest(args) {
115
+ const context = [
116
+ args.context,
117
+ args.model_id || "",
118
+ args.data_classification || "",
119
+ ...(args.tools_used || []),
120
+ ].join(" ").toLowerCase();
121
+ const matches = [];
122
+ const seen = new Set();
123
+ for (const entry of KEYWORD_MAP) {
124
+ if (seen.has(entry.procedure))
125
+ continue;
126
+ const hit = entry.keywords.some((kw) => context.includes(kw));
127
+ if (hit) {
128
+ seen.add(entry.procedure);
129
+ matches.push({
130
+ procedure: entry.procedure,
131
+ title: entry.title,
132
+ reason: entry.reason,
133
+ priority: entry.priority,
134
+ });
135
+ }
136
+ }
137
+ // Always suggest AI-INF.1 if nothing else matched
138
+ if (matches.length === 0) {
139
+ matches.push({
140
+ procedure: "AI-INF.1",
141
+ title: "Inference Provenance",
142
+ reason: "Default recommendation -- witness any AI inference for baseline compliance",
143
+ priority: 1,
144
+ });
145
+ }
146
+ // Data classification boost
147
+ if (args.data_classification) {
148
+ const classification = args.data_classification.toLowerCase();
149
+ if (classification === "sensitive" || classification === "classified") {
150
+ if (!seen.has("AI-ACC.1")) {
151
+ matches.push({
152
+ procedure: "AI-ACC.1",
153
+ title: "Access Control Witnessing",
154
+ reason: `Data classified as ${args.data_classification} -- witness access decisions`,
155
+ priority: 1,
156
+ });
157
+ }
158
+ }
159
+ }
160
+ // Sort by priority
161
+ matches.sort((a, b) => a.priority - b.priority);
162
+ const lines = [
163
+ `Suggested Procedures (${matches.length}):`,
164
+ ``,
165
+ ];
166
+ for (const m of matches) {
167
+ lines.push(` ${m.procedure} -- ${m.title}`);
168
+ lines.push(` ${m.reason}`);
169
+ lines.push(``);
170
+ }
171
+ lines.push(`These are advisory only. Use witness_inference or the relevant tool to attest.`);
172
+ return lines.join("\n");
173
+ }
174
+ //# sourceMappingURL=suggest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suggest.js","sourceRoot":"","sources":["../../src/tools/suggest.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAgBH,MAAM,WAAW,GAMZ;IACH;QACE,QAAQ,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC;QAC5H,SAAS,EAAE,UAAU;QACrB,KAAK,EAAE,sBAAsB;QAC7B,MAAM,EAAE,kFAAkF;QAC1F,QAAQ,EAAE,CAAC;KACZ;IACD;QACE,QAAQ,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,QAAQ,CAAC;QACvF,SAAS,EAAE,UAAU;QACrB,KAAK,EAAE,uBAAuB;QAC9B,MAAM,EAAE,0EAA0E;QAClF,QAAQ,EAAE,CAAC;KACZ;IACD;QACE,QAAQ,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC;QAC/F,SAAS,EAAE,UAAU;QACrB,KAAK,EAAE,uBAAuB;QAC9B,MAAM,EAAE,yEAAyE;QACjF,QAAQ,EAAE,CAAC;KACZ;IACD;QACE,QAAQ,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,CAAC;QACnF,SAAS,EAAE,SAAS;QACpB,KAAK,EAAE,gBAAgB;QACvB,MAAM,EAAE,oEAAoE;QAC5E,QAAQ,EAAE,CAAC;KACZ;IACD;QACE,QAAQ,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,CAAC;QAClH,SAAS,EAAE,UAAU;QACrB,KAAK,EAAE,2BAA2B;QAClC,MAAM,EAAE,wEAAwE;QAChF,QAAQ,EAAE,CAAC;KACZ;IACD;QACE,QAAQ,EAAE,CAAC,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,gBAAgB,CAAC;QAClG,SAAS,EAAE,WAAW;QACtB,KAAK,EAAE,qBAAqB;QAC5B,MAAM,EAAE,+DAA+D;QACvE,QAAQ,EAAE,CAAC;KACZ;IACD;QACE,QAAQ,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC;QAC3F,SAAS,EAAE,UAAU;QACrB,KAAK,EAAE,mBAAmB;QAC1B,MAAM,EAAE,2EAA2E;QACnF,QAAQ,EAAE,CAAC;KACZ;IACD;QACE,QAAQ,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,CAAC;QAC7F,SAAS,EAAE,YAAY;QACvB,KAAK,EAAE,0BAA0B;QACjC,MAAM,EAAE,yEAAyE;QACjF,QAAQ,EAAE,CAAC;KACZ;IACD;QACE,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,gBAAgB,CAAC;QAClH,SAAS,EAAE,UAAU;QACrB,KAAK,EAAE,wBAAwB;QAC/B,MAAM,EAAE,mFAAmF;QAC3F,QAAQ,EAAE,CAAC;KACZ;IACD;QACE,QAAQ,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC;QACzG,SAAS,EAAE,WAAW;QACtB,KAAK,EAAE,0BAA0B;QACjC,MAAM,EAAE,wEAAwE;QAChF,QAAQ,EAAE,CAAC;KACZ;IACD;QACE,QAAQ,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,CAAC;QAC/F,SAAS,EAAE,WAAW;QACtB,KAAK,EAAE,iBAAiB;QACxB,MAAM,EAAE,oEAAoE;QAC5E,QAAQ,EAAE,CAAC;KACZ;IACD;QACE,QAAQ,EAAE,CAAC,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,EAAE,cAAc,EAAE,aAAa,CAAC;QAC/F,SAAS,EAAE,UAAU;QACrB,KAAK,EAAE,sBAAsB;QAC7B,MAAM,EAAE,sEAAsE;QAC9E,QAAQ,EAAE,CAAC;KACZ;IACD;QACE,QAAQ,EAAE,CAAC,QAAQ,EAAE,eAAe,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,CAAC;QACjG,SAAS,EAAE,UAAU;QACrB,KAAK,EAAE,kBAAkB;QACzB,MAAM,EAAE,wFAAwF;QAChG,QAAQ,EAAE,CAAC;KACZ;IACD;QACE,QAAQ,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,eAAe,CAAC;QAC1F,SAAS,EAAE,YAAY;QACvB,KAAK,EAAE,gBAAgB;QACvB,MAAM,EAAE,yEAAyE;QACjF,QAAQ,EAAE,CAAC;KACZ;IACD;QACE,QAAQ,EAAE,CAAC,SAAS,EAAE,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,CAAC;QACnI,SAAS,EAAE,UAAU;QACrB,KAAK,EAAE,yBAAyB;QAChC,MAAM,EAAE,yFAAyF;QACjG,QAAQ,EAAE,CAAC;KACZ;CACF,CAAC;AAEF,MAAM,UAAU,aAAa,CAAC,IAAiB;IAC7C,MAAM,OAAO,GAAG;QACd,IAAI,CAAC,OAAO;QACZ,IAAI,CAAC,QAAQ,IAAI,EAAE;QACnB,IAAI,CAAC,mBAAmB,IAAI,EAAE;QAC9B,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC;KAC3B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;IAE1B,MAAM,OAAO,GAAiB,EAAE,CAAC;IACjC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAE/B,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;QAChC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC;YAAE,SAAS;QACxC,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9D,IAAI,GAAG,EAAE,CAAC;YACR,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAC1B,OAAO,CAAC,IAAI,CAAC;gBACX,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;aACzB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,kDAAkD;IAClD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC;YACX,SAAS,EAAE,UAAU;YACrB,KAAK,EAAE,sBAAsB;YAC7B,MAAM,EAAE,4EAA4E;YACpF,QAAQ,EAAE,CAAC;SACZ,CAAC,CAAC;IACL,CAAC;IAED,4BAA4B;IAC5B,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC7B,MAAM,cAAc,GAAG,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,CAAC;QAC9D,IAAI,cAAc,KAAK,WAAW,IAAI,cAAc,KAAK,YAAY,EAAE,CAAC;YACtE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC1B,OAAO,CAAC,IAAI,CAAC;oBACX,SAAS,EAAE,UAAU;oBACrB,KAAK,EAAE,2BAA2B;oBAClC,MAAM,EAAE,sBAAsB,IAAI,CAAC,mBAAmB,8BAA8B;oBACpF,QAAQ,EAAE,CAAC;iBACZ,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,mBAAmB;IACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;IAEhD,MAAM,KAAK,GAAG;QACZ,yBAAyB,OAAO,CAAC,MAAM,IAAI;QAC3C,EAAE;KACH,CAAC;IAEF,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QAC7C,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,gFAAgF,CAAC,CAAC;IAE7F,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * SWT3 MCP Server: verify_agent_trust + present_trust_credential tools.
3
+ *
4
+ * Enables LLMs to autonomously verify counterpart agents before
5
+ * proceeding with tool calls or data exchange. The compliance anchor
6
+ * IS the authorization credential.
7
+ *
8
+ * AI-TRUST.1: Trust verification result (PASS/FAIL)
9
+ * AI-TRUST.2: Handshake evidence (checks performed/passed)
10
+ */
11
+ import type { McpConfig } from "../config.js";
12
+ import type { AxiomClient } from "../client.js";
13
+ import type { SessionState } from "../state.js";
14
+ interface VerifyArgs {
15
+ counterpart_agent_id: string;
16
+ counterpart_tenant_id: string;
17
+ anchor_fingerprint: string;
18
+ anchor_timestamp_ms?: number;
19
+ is_signed?: boolean;
20
+ procedures?: string[];
21
+ clearing_level?: 0 | 1 | 2 | 3;
22
+ has_hardware_attestation?: boolean;
23
+ has_guardrails?: boolean;
24
+ agent_id?: string;
25
+ cycle_id?: string;
26
+ }
27
+ interface PresentArgs {
28
+ agent_id?: string;
29
+ }
30
+ export declare function handleVerifyAgentTrust(args: VerifyArgs, config: McpConfig, client: AxiomClient, state: SessionState): Promise<string>;
31
+ export declare function handlePresentCredential(args: PresentArgs, config: McpConfig): string;
32
+ export {};
33
+ //# sourceMappingURL=trust.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trust.d.ts","sourceRoot":"","sources":["../../src/tools/trust.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,cAAc,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAsFhD,UAAU,UAAU;IAClB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,cAAc,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC/B,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,WAAW;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAID,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,MAAM,CAAC,CA2HjB;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,WAAW,EACjB,MAAM,EAAE,SAAS,GAChB,MAAM,CA0BR"}