@sanctuary-framework/mcp-server 1.1.7 → 1.2.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 +112 -52
- package/dist/cli.cjs +4800 -187
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.js +4798 -189
- package/dist/cli.js.map +1 -1
- package/dist/index.cjs +4615 -356
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1072 -14
- package/dist/index.d.ts +1072 -14
- package/dist/index.js +4613 -358
- package/dist/index.js.map +1 -1
- package/package.json +6 -1
package/README.md
CHANGED
|
@@ -1,18 +1,50 @@
|
|
|
1
1
|
# @sanctuary-framework/mcp-server
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Operator-sovereign substrate for AI agents. Open source. Operator-held keys. OS-level enforcement at the cross-boundary wall. Composes with any MCP-speaking agent harness.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Your agent. Your machine. Your keys.
|
|
6
6
|
|
|
7
|
-
## What
|
|
7
|
+
## What Sanctuary is
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
Sanctuary is the substrate that makes operator sovereignty structurally real in the agent era. Your agent runtime (Claude Code, OpenClaw, Hermes, Cline, Mastra, Cursor, or any MCP-speaking harness) runs as it normally would. Sanctuary sits underneath, providing four enforcement layers that together preserve the operator's identity, durable record, and decision authority across vendor churn.
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
The framework is open source and free always. Commercial extensions (managed hosting for sovereignty-bound enterprises, premium support, compliance-pack-as-a-service, container-isolation for highest-assurance deployments) ship on top.
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
## Architecture: the Castle
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
Sanctuary's enforcement model is the Castle Architecture. Four layers, each with a distinct enforcement contract.
|
|
16
|
+
|
|
17
|
+
**Layer 1, Castle Wall.** OS-level egress filtering at the operator-external boundary. Linux netfilter / NFQUEUE, macOS Network Extension or pf rules, Windows Filtering Platform. The kernel itself blocks unauthorized cross-boundary calls. Even prompt-injected agents cannot bypass. Phase 1 (macOS plus Linux) ships in v1.x; Windows is Phase 2; container or microVM isolation is Phase 3 for highest-assurance enterprises.
|
|
18
|
+
|
|
19
|
+
**Layer 2, Sentinels.** Internal observation, not enforcement. Behavioral baselining via process introspection and eBPF. Anomalies surface to the operator via menubar and OS notifications. Sentinels watch internal patterns the wall cannot see (file access, internal LLM calls, cross-agent coordination); they observe and surface; they do not block. Sentinels ship in v1.3.
|
|
20
|
+
|
|
21
|
+
**Layer 3, Cooperative MCP.** Additive sovereignty surface for compliant agents. Encrypted state at rest, signed audit, mandate primitives, four canonical policy slots (memory, credentials, plans, outputs), substrate selector, Concordia receipt integration, Verascore reputation hooks. Compliant agents that voluntarily route through Sanctuary's MCP get the full sovereignty surface. Non-compliant agents still hit Layer 1 at the wall and Layer 2 inside the castle.
|
|
22
|
+
|
|
23
|
+
**Layer 4, Cryptographic Receipts and Reputation.** Concordia receipts on cross-castle transactions. Verascore reputation aggregating across operators. Cross-castle accountability post-action. Portable reputation across vendor churn.
|
|
24
|
+
|
|
25
|
+
The castle MUST be both real AND delightful. Hard enforcement at the wall AND approval response under 2 seconds when prompted. Default-deny outbound AND smart always-allow rules with learning. Sentinels observe AND do not surface noise. Cooperative MCP path remains additive and fully usable. Composition with agent runtimes is preserved because the runtime sees a normal operating environment with constrained egress; nothing internal is sandboxed.
|
|
26
|
+
|
|
27
|
+
## Capability surfaces
|
|
28
|
+
|
|
29
|
+
Within the Cooperative MCP layer (Castle Layer 3), Sanctuary exposes four capability surfaces. These are the tool-level primitives compliant agents call.
|
|
30
|
+
|
|
31
|
+
**Cognitive Sovereignty.** All agent state encrypted at rest with AES-256-GCM. Keys are participant-held. Identity is Ed25519-based with DID support. Merkle tree integrity verification prevents tampering and rollback.
|
|
32
|
+
|
|
33
|
+
**Operational Isolation.** Environment attestation, encrypted audit log, and Principal Policy: a human-controlled, agent-immutable approval system that gates high-risk operations. The Sentinels layer (Castle Layer 2, v1.3+) extends this with behavioral baselining and anomaly detection.
|
|
34
|
+
|
|
35
|
+
**Selective Disclosure.** SHA-256 commitments, Pedersen commitments on Ristretto255, zero-knowledge proofs of knowledge (Schnorr/Fiat-Shamir), and ZK range proofs (bit-decomposition with CDS OR-proofs). Disclosure policies define what information flows where.
|
|
36
|
+
|
|
37
|
+
**Verifiable Reputation.** Signed attestations (EAS-compatible) with sovereignty-gated tiers. Weighted scoring based on counterparty sovereignty posture. Export/import for cross-platform portability. Trust bootstrapping via escrow and principal guarantees. Sovereignty handshakes and MCP-to-MCP federation.
|
|
38
|
+
|
|
39
|
+
## Operator experience
|
|
40
|
+
|
|
41
|
+
Sanctuary lives in your menubar. When your agent wants to do something risky, you get an OS notification. Click, see the request in plain English, approve or deny in five seconds. The agent receives a structured response that surfaces the decision back to you naturally if you missed the notification. Three-channel coverage means you never get to the "my agent is mysteriously broken" mental state.
|
|
42
|
+
|
|
43
|
+
The dashboard is for setup and inspection, not daily ops. Substrate selector (pick local model, Venice.ai, or operator-frontier with redaction), policy editor, audit deep-dive, exit bundle drill, fortress configuration. You visit the dashboard for setup; you stay in your menubar for daily ops.
|
|
44
|
+
|
|
45
|
+
Concierge chat is the natural-language interface to your sovereignty primitives. "What's going on?" returns a summary from the audit log. "Why did my Hermes agent stop?" looks up recent gate triggers and explains. "Approve all GitHub-read requests" batch-approves. "What does my Hermes agent have access to?" introspects policy. "Give me a portable bundle of everything" triggers exit bundle generation.
|
|
46
|
+
|
|
47
|
+
You do not sit in Sanctuary. Sanctuary sits with you.
|
|
16
48
|
|
|
17
49
|
## Quick start
|
|
18
50
|
|
|
@@ -50,21 +82,22 @@ On first launch, Sanctuary will:
|
|
|
50
82
|
|
|
51
83
|
1. Derive a master encryption key from your passphrase (Argon2id)
|
|
52
84
|
2. Create the storage directory (`~/.sanctuary/`)
|
|
53
|
-
3. Display a recovery key if no passphrase is set (save it
|
|
85
|
+
3. Display a recovery key if no passphrase is set (save it; shown once)
|
|
86
|
+
4. Walk you through the first-run wizard for the egress filter (which endpoints to pre-allow vs prompt for); macOS plus Linux Phase 1, Windows Phase 2
|
|
54
87
|
|
|
55
88
|
## Key protection modes
|
|
56
89
|
|
|
57
90
|
Sanctuary supports three key protection modes:
|
|
58
91
|
|
|
59
|
-
- **Passphrase
|
|
60
|
-
- **Recovery key
|
|
61
|
-
- **Hardware key
|
|
92
|
+
- **Passphrase.** Master key derived via Argon2id. Set `SANCTUARY_PASSPHRASE` env var.
|
|
93
|
+
- **Recovery key.** Random master key generated on first run. Recovery key displayed once.
|
|
94
|
+
- **Hardware key.** FIDO2/WebAuthn support planned for v0.3.0.
|
|
62
95
|
|
|
63
96
|
## MCP tools
|
|
64
97
|
|
|
65
|
-
Once connected, your agent has access to these tools
|
|
98
|
+
Once connected, your agent has access to these tools, organized by capability surface within Cooperative MCP (Castle Layer 3).
|
|
66
99
|
|
|
67
|
-
###
|
|
100
|
+
### Cognitive Sovereignty
|
|
68
101
|
| Tool | Description |
|
|
69
102
|
|------|-------------|
|
|
70
103
|
| `sanctuary/identity_create` | Create a new Ed25519 identity |
|
|
@@ -75,20 +108,20 @@ Once connected, your agent has access to these tools:
|
|
|
75
108
|
| `sanctuary/state_write` | Write encrypted state (signed, Merkle-verified) |
|
|
76
109
|
| `sanctuary/state_read` | Read and verify encrypted state |
|
|
77
110
|
| `sanctuary/state_list` | List keys in a namespace |
|
|
78
|
-
| `sanctuary/state_delete` | Securely delete state (overwrite
|
|
111
|
+
| `sanctuary/state_delete` | Securely delete state (overwrite plus unlink) |
|
|
79
112
|
| `sanctuary/state_export` | Export state as encrypted portable bundle |
|
|
80
113
|
| `sanctuary/state_import` | Import state bundle with conflict resolution |
|
|
81
114
|
|
|
82
|
-
###
|
|
115
|
+
### Operational Isolation
|
|
83
116
|
| Tool | Description |
|
|
84
117
|
|------|-------------|
|
|
85
118
|
| `sanctuary/exec_attest` | Environment attestation with sovereignty assessment |
|
|
86
|
-
| `sanctuary/monitor_health` | Sanctuary Health Report (all four
|
|
119
|
+
| `sanctuary/monitor_health` | Sanctuary Health Report (all four capability surfaces) |
|
|
87
120
|
| `sanctuary/monitor_audit_log` | Query the sovereignty audit log |
|
|
88
121
|
| `sanctuary/principal_policy_view` | View the current Principal Policy (read-only) |
|
|
89
122
|
| `sanctuary/principal_baseline_view` | View the behavioral baseline profile (read-only) |
|
|
90
123
|
|
|
91
|
-
###
|
|
124
|
+
### Selective Disclosure
|
|
92
125
|
| Tool | Description |
|
|
93
126
|
|------|-------------|
|
|
94
127
|
| `sanctuary/proof_commitment` | Create a SHA-256 cryptographic commitment |
|
|
@@ -101,7 +134,7 @@ Once connected, your agent has access to these tools:
|
|
|
101
134
|
| `sanctuary/zk_range_prove` | Prove a value is in [min, max] without revealing it |
|
|
102
135
|
| `sanctuary/zk_range_verify` | Verify a ZK range proof |
|
|
103
136
|
|
|
104
|
-
###
|
|
137
|
+
### Verifiable Reputation
|
|
105
138
|
| Tool | Description |
|
|
106
139
|
|------|-------------|
|
|
107
140
|
| `sanctuary/reputation_record` | Record signed interaction attestation (sovereignty-weighted) |
|
|
@@ -126,14 +159,14 @@ Once connected, your agent has access to these tools:
|
|
|
126
159
|
### Concordia Bridge
|
|
127
160
|
| Tool | Description |
|
|
128
161
|
|------|-------------|
|
|
129
|
-
| `sanctuary/bridge_commit` | Bind a Concordia negotiation outcome to a Sanctuary
|
|
162
|
+
| `sanctuary/bridge_commit` | Bind a Concordia negotiation outcome to a Sanctuary commitment |
|
|
130
163
|
| `sanctuary/bridge_verify` | Verify a bridge commitment against a revealed outcome |
|
|
131
|
-
| `sanctuary/bridge_attest` | Record a negotiation as
|
|
164
|
+
| `sanctuary/bridge_attest` | Record a negotiation as a reputation attestation |
|
|
132
165
|
|
|
133
166
|
### Meta
|
|
134
167
|
| Tool | Description |
|
|
135
168
|
|------|-------------|
|
|
136
|
-
| `sanctuary/manifest` | Sanctuary Interface Manifest (SIM)
|
|
169
|
+
| `sanctuary/manifest` | Sanctuary Interface Manifest (SIM); machine-readable capabilities |
|
|
137
170
|
| `sanctuary/shr_generate` | Generate signed, machine-readable sovereignty health report |
|
|
138
171
|
| `sanctuary/shr_verify` | Verify a counterparty's SHR |
|
|
139
172
|
|
|
@@ -143,47 +176,63 @@ Environment variables:
|
|
|
143
176
|
|
|
144
177
|
| Variable | Description | Default |
|
|
145
178
|
|----------|-------------|---------|
|
|
146
|
-
| `SANCTUARY_PASSPHRASE` | Passphrase for master key derivation | _(none
|
|
179
|
+
| `SANCTUARY_PASSPHRASE` | Passphrase for master key derivation | _(none; uses recovery key)_ |
|
|
147
180
|
| `SANCTUARY_STORAGE_PATH` | Storage directory path | `~/.sanctuary` |
|
|
148
181
|
| `SANCTUARY_TRANSPORT` | Transport mode (`stdio` or `http`) | `stdio` |
|
|
149
182
|
| `SANCTUARY_DASHBOARD_ENABLED` | Enable web dashboard (`true`/`false`) | `false` |
|
|
150
183
|
| `SANCTUARY_DASHBOARD_PORT` | Dashboard port | `3501` |
|
|
151
|
-
| `SANCTUARY_DASHBOARD_AUTH_TOKEN` | Bearer token (`"auto"` to generate) |
|
|
152
|
-
| `SANCTUARY_DASHBOARD_TLS_CERT` | TLS certificate path |
|
|
153
|
-
| `SANCTUARY_DASHBOARD_TLS_KEY` | TLS private key path |
|
|
184
|
+
| `SANCTUARY_DASHBOARD_AUTH_TOKEN` | Bearer token (`"auto"` to generate) | _(none)_ |
|
|
185
|
+
| `SANCTUARY_DASHBOARD_TLS_CERT` | TLS certificate path | _(none)_ |
|
|
186
|
+
| `SANCTUARY_DASHBOARD_TLS_KEY` | TLS private key path | _(none)_ |
|
|
154
187
|
| `SANCTUARY_WEBHOOK_ENABLED` | Enable webhook approvals | `false` |
|
|
155
|
-
| `SANCTUARY_WEBHOOK_URL` | Webhook target URL |
|
|
156
|
-
| `SANCTUARY_WEBHOOK_SECRET` | HMAC-SHA256 shared secret |
|
|
188
|
+
| `SANCTUARY_WEBHOOK_URL` | Webhook target URL | _(none)_ |
|
|
189
|
+
| `SANCTUARY_WEBHOOK_SECRET` | HMAC-SHA256 shared secret | _(none)_ |
|
|
157
190
|
| `SANCTUARY_WEBHOOK_CALLBACK_PORT` | Callback listener port | `3502` |
|
|
158
191
|
|
|
159
|
-
## Running
|
|
192
|
+
## Running alongside another MCP server
|
|
160
193
|
|
|
161
|
-
Sanctuary is designed to run as a parallel MCP server
|
|
194
|
+
Sanctuary is designed to run as a parallel MCP server. It adds the substrate underneath your agent without replacing any of its existing tools. Both servers appear in the same session as independent tool providers. Castle Wall enforcement (Layer 1) operates at the OS level regardless of which MCP servers the agent uses; the wall sees egress, not MCP routing.
|
|
162
195
|
|
|
163
|
-
For the full setup guide (installation options, passphrase management, systemd units), see [`docs/DEPLOYMENT.md`](docs/DEPLOYMENT.md).
|
|
196
|
+
For the full setup guide (installation options, passphrase management, systemd units, egress filter configuration), see [`docs/DEPLOYMENT.md`](docs/DEPLOYMENT.md).
|
|
164
197
|
|
|
165
198
|
For a reference MCP config, see [`docs/examples/parallel-mcp-config.json`](docs/examples/parallel-mcp-config.json).
|
|
166
199
|
|
|
167
200
|
For always-on agents with latency constraints, use the `persistent-agent` Principal Policy template which auto-allows routine operations and only gates destructive actions. See [`src/principal-policy/templates/persistent-agent.yaml`](src/principal-policy/templates/persistent-agent.yaml).
|
|
168
201
|
|
|
169
|
-
## Principal Policy (
|
|
202
|
+
## Principal Policy (cooperative gate, Castle Layer 3)
|
|
170
203
|
|
|
171
|
-
The Principal Policy is the human-controlled, agent-immutable configuration that gates operations through a three-tier approval system. It sits between the MCP router and every tool handler
|
|
204
|
+
The Principal Policy is the human-controlled, agent-immutable configuration that gates operations through a three-tier approval system within the Cooperative MCP layer. It sits between the MCP router and every tool handler. No tool call routed through Sanctuary can bypass it.
|
|
172
205
|
|
|
173
|
-
**Tier 1
|
|
206
|
+
**Tier 1: Always requires approval.** High-risk operations like `state_export`, `state_import`, `identity_rotate`, and `reputation_import` always require explicit human approval before execution.
|
|
174
207
|
|
|
175
|
-
**Tier 2
|
|
208
|
+
**Tier 2: Behavioral anomaly detection.** The system tracks a behavioral baseline (namespaces accessed, counterparties seen, signing frequency, read patterns). Deviations trigger approval; a compromised agent accessing unfamiliar data or signing at unusual rates is caught automatically.
|
|
176
209
|
|
|
177
|
-
**Tier 3
|
|
210
|
+
**Tier 3: Always allowed (audit only).** Standard read/write/sign operations pass through without interruption, but every operation is audit-logged.
|
|
178
211
|
|
|
179
|
-
The policy file lives at `~/.sanctuary/principal-policy.yaml`. It is loaded once at startup and frozen
|
|
212
|
+
The policy file lives at `~/.sanctuary/principal-policy.yaml`. It is loaded once at startup and frozen; no MCP tool can modify it. The agent cannot see the policy rules in denial responses (preventing attacker learning). Approval requests flow through OS notifications (Castle Layer 1 surface), the menubar dashboard, or external webhooks (Slack, Discord, etc., with HMAC-SHA256 signatures).
|
|
180
213
|
|
|
181
|
-
On first session, non-Tier-3 operations require approval (no baseline exists yet). As the system learns normal patterns, approval fatigue decreases
|
|
214
|
+
On first session, non-Tier-3 operations require approval (no baseline exists yet). As the system learns normal patterns, approval fatigue decreases; you only get asked about genuinely unusual behavior.
|
|
182
215
|
|
|
183
216
|
See [`rfcs/RFC-0002-principal-policy-operational-approval.md`](../rfcs/RFC-0002-principal-policy-operational-approval.md) for the complete specification.
|
|
184
217
|
|
|
185
218
|
## Security model
|
|
186
219
|
|
|
220
|
+
Sanctuary's security claims are structural, not cooperative-only.
|
|
221
|
+
|
|
222
|
+
**Layer 1 enforcement (Castle Wall, OS-level egress filter; ships in v1.x):**
|
|
223
|
+
- Outbound network calls intercepted by the kernel before leaving the operator's machine
|
|
224
|
+
- Linux netfilter / NFQUEUE, macOS Network Extension or pf rules, Windows Filtering Platform
|
|
225
|
+
- Per-process policy with per-agent-template defaults
|
|
226
|
+
- Default-deny outbound with first-run wizard pre-allowing common developer endpoints
|
|
227
|
+
- Performance overhead under 10ms p99 on allowed traffic
|
|
228
|
+
- Even prompt-injected agents cannot bypass the wall
|
|
229
|
+
|
|
230
|
+
**Layer 2 observation (Sentinels; ships in v1.3):**
|
|
231
|
+
- Process introspection via eBPF and syscall observation
|
|
232
|
+
- Behavioral baselining with anomaly detection
|
|
233
|
+
- Anomalies surface via OS notifications, not blocks
|
|
234
|
+
|
|
235
|
+
**Layer 3 cooperative primitives (Cooperative MCP additive surface):**
|
|
187
236
|
- AES-256-GCM authenticated encryption with unique 12-byte IVs (NIST SP 800-38D)
|
|
188
237
|
- Ed25519 keypairs for identity and signing
|
|
189
238
|
- Argon2id key derivation (m=64MB, t=3, p=4) for passphrase protection
|
|
@@ -194,7 +243,13 @@ See [`rfcs/RFC-0002-principal-policy-operational-approval.md`](../rfcs/RFC-0002-
|
|
|
194
243
|
- Monotonic version numbers prevent state rollback
|
|
195
244
|
- Principal Policy gates every tool call (three-tier approval)
|
|
196
245
|
- Behavioral baseline detects anomalous agent behavior
|
|
197
|
-
- Approval channel (stderr) is outside MCP protocol
|
|
246
|
+
- Approval channel (stderr) is outside MCP protocol; agent cannot intercept
|
|
247
|
+
|
|
248
|
+
**Layer 4 cross-castle accountability:**
|
|
249
|
+
- Concordia receipts for cross-castle commitments
|
|
250
|
+
- Verascore reputation aggregating across operators
|
|
251
|
+
- Portable reputation bundles for cross-platform portability
|
|
252
|
+
- Signed audit trails as compliance evidence
|
|
198
253
|
|
|
199
254
|
## Development
|
|
200
255
|
|
|
@@ -206,7 +261,9 @@ npm run build
|
|
|
206
261
|
npm test
|
|
207
262
|
```
|
|
208
263
|
|
|
209
|
-
## Architecture
|
|
264
|
+
## Architecture (source tree)
|
|
265
|
+
|
|
266
|
+
The directory layout below reflects v1.2 shipped reality plus annotated v1.x and v1.3 placeholders for the Castle Wall and Sentinels work packages. Capability-surface directory names are the legacy `l1-l4-` prefixes; a follow-on cleanup pass renames them to plain capability names (`cognitive/`, `operational/`, `disclosure/`, `reputation/`) so the prefixes do not collide with Castle Layer numbering. The cleanup is non-gating; references in tooling and tests carry over either way.
|
|
210
267
|
|
|
211
268
|
```
|
|
212
269
|
src/
|
|
@@ -217,41 +274,44 @@ src/
|
|
|
217
274
|
│ ├── key-derivation.ts # Argon2id, HKDF
|
|
218
275
|
│ ├── encoding.ts # Base64url, constant-time compare
|
|
219
276
|
│ └── random.ts # CSPRNG
|
|
277
|
+
├── castle-wall/ # Castle Layer 1: OS-level egress enforcement (planned, ships with WP-V1.x-CASTLE-WALL)
|
|
278
|
+
├── sentinels/ # Castle Layer 2: internal observation (planned, ships with v1.3 WP-V1.3-1, -2)
|
|
220
279
|
├── storage/ # Pluggable storage backends
|
|
221
280
|
│ ├── interface.ts # Abstract StorageBackend
|
|
222
281
|
│ ├── filesystem.ts # Encrypted filesystem (default)
|
|
223
282
|
│ └── memory.ts # In-memory (testing)
|
|
224
|
-
├── l1-cognitive/ #
|
|
283
|
+
├── l1-cognitive/ # Capability surface 1 (Castle Layer 3): encrypted state plus identity
|
|
225
284
|
│ ├── state-store.ts # StateStore with Merkle verification
|
|
226
285
|
│ └── tools.ts # MCP tool definitions
|
|
227
|
-
├── l2-operational/ #
|
|
286
|
+
├── l2-operational/ # Capability surface 2 (Castle Layer 3): attestation plus monitoring
|
|
228
287
|
│ └── audit-log.ts # Encrypted append-only audit log
|
|
229
|
-
├── l3-disclosure/ #
|
|
288
|
+
├── l3-disclosure/ # Capability surface 3 (Castle Layer 3): commitments plus ZK proofs plus policies
|
|
230
289
|
│ ├── commitments.ts # SHA-256 commitment schemes
|
|
231
290
|
│ ├── zk-proofs.ts # Pedersen/Ristretto255, Schnorr proofs, range proofs
|
|
232
291
|
│ ├── policies.ts # Disclosure policy engine
|
|
233
292
|
│ └── tools.ts # MCP tool definitions
|
|
234
|
-
├── l4-reputation/ #
|
|
293
|
+
├── l4-reputation/ # Capability surface 4 (Castle Layer 3): reputation plus bootstrap plus tiers
|
|
235
294
|
│ ├── reputation-store.ts # Signed attestations, escrow, guarantees
|
|
236
295
|
│ ├── tiers.ts # Sovereignty-gated reputation tiers
|
|
237
296
|
│ └── tools.ts # MCP tool definitions
|
|
238
297
|
├── shr/ # Machine-readable sovereignty health reports
|
|
239
298
|
├── handshake/ # Sovereignty handshake protocol
|
|
240
299
|
├── federation/ # MCP-to-MCP federation registry
|
|
241
|
-
├── bridge/ # Concordia bridge (negotiation
|
|
242
|
-
│ ├── types.ts # Interface contract
|
|
300
|
+
├── bridge/ # Concordia bridge (negotiation to sovereignty)
|
|
301
|
+
│ ├── types.ts # Interface contract
|
|
243
302
|
│ ├── bridge.ts # Core: canonicalize, commit, verify
|
|
244
|
-
│ └── tools.ts # MCP tools
|
|
245
|
-
├── principal-policy/ # Principal Policy (
|
|
303
|
+
│ └── tools.ts # MCP tools plus BridgeStore
|
|
304
|
+
├── principal-policy/ # Principal Policy (Cooperative MCP gate, Castle Layer 3)
|
|
246
305
|
│ ├── types.ts # Policy, gate, baseline type definitions
|
|
247
|
-
│ ├── loader.ts # YAML/JSON policy parser
|
|
306
|
+
│ ├── loader.ts # YAML/JSON policy parser plus defaults
|
|
248
307
|
│ ├── baseline.ts # Behavioral baseline tracker (encrypted)
|
|
249
|
-
│ ├── approval-channel.ts #
|
|
250
|
-
│ ├──
|
|
251
|
-
│ ├── dashboard-html.ts # Embedded HTML/CSS/JS template
|
|
308
|
+
│ ├── approval-channel.ts # OS notification plus stderr plus webhook channels
|
|
309
|
+
│ ├── menubar/ # macOS / Linux / Windows menubar status app (v1.2)
|
|
252
310
|
│ ├── webhook.ts # External webhook approval (HMAC-SHA256)
|
|
253
311
|
│ ├── gate.ts # Three-tier approval gate
|
|
254
312
|
│ └── tools.ts # Read-only policy/baseline MCP tools
|
|
313
|
+
├── chat/ # Concierge chat: operator-to-Sanctuary natural-language surface (v1.2)
|
|
314
|
+
│ # Direct-agent chat surfaces removed in the v1.2 chat-removal pass.
|
|
255
315
|
├── router.ts # MCP SDK tool router (with gate integration)
|
|
256
316
|
├── config.ts # Configuration management
|
|
257
317
|
├── index.ts # Server factory
|
|
@@ -260,7 +320,7 @@ src/
|
|
|
260
320
|
|
|
261
321
|
## Specification
|
|
262
322
|
|
|
263
|
-
See [`rfcs/RFC-0001-sanctuary-mcp-server.md`](../rfcs/RFC-0001-sanctuary-mcp-server.md) for the core specification
|
|
323
|
+
See [`rfcs/RFC-0001-sanctuary-mcp-server.md`](../rfcs/RFC-0001-sanctuary-mcp-server.md) for the core specification, [`rfcs/RFC-0002-principal-policy-operational-approval.md`](../rfcs/RFC-0002-principal-policy-operational-approval.md) for the Principal Policy specification, and [`rfcs/RFC-0003-castle-architecture.md`](../rfcs/RFC-0003-castle-architecture.md) for the Castle Architecture specification.
|
|
264
324
|
|
|
265
325
|
## License
|
|
266
326
|
|