@kya-os/mcp-i-cloudflare 1.13.4 → 1.13.6
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/dist/adapter.d.ts +12 -0
- package/dist/adapter.d.ts.map +1 -1
- package/dist/adapter.js +57 -15
- package/dist/adapter.js.map +1 -1
- package/dist/app.d.ts +1 -1
- package/dist/config.d.ts +12 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js.map +1 -1
- package/dist/delegation-http/consent-anchor-bridge.d.ts.map +1 -1
- package/dist/delegation-http/consent-anchor-bridge.js +41 -3
- package/dist/delegation-http/consent-anchor-bridge.js.map +1 -1
- package/dist/helpers/env-mapper.d.ts.map +1 -1
- package/dist/helpers/env-mapper.js +16 -0
- package/dist/helpers/env-mapper.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -8
- package/dist/index.js.map +1 -1
- package/dist/proof-generator.d.ts +4 -0
- package/dist/proof-generator.d.ts.map +1 -1
- package/dist/proof-generator.js +7 -0
- package/dist/proof-generator.js.map +1 -1
- package/dist/providers/crypto.d.ts +23 -6
- package/dist/providers/crypto.d.ts.map +1 -1
- package/dist/providers/crypto.js +47 -45
- package/dist/providers/crypto.js.map +1 -1
- package/dist/providers/kv-identity.d.ts +35 -0
- package/dist/providers/kv-identity.d.ts.map +1 -1
- package/dist/providers/kv-identity.js +30 -0
- package/dist/providers/kv-identity.js.map +1 -1
- package/dist/providers/storage.d.ts +84 -26
- package/dist/providers/storage.d.ts.map +1 -1
- package/dist/providers/storage.js +220 -83
- package/dist/providers/storage.js.map +1 -1
- package/dist/services/proof.service.d.ts +4 -3
- package/dist/services/proof.service.d.ts.map +1 -1
- package/dist/services/proof.service.js +14 -18
- package/dist/services/proof.service.js.map +1 -1
- package/dist/types.d.ts +8 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +5 -6
|
@@ -8,11 +8,41 @@
|
|
|
8
8
|
* session-based or shard-based Durable Object routing.
|
|
9
9
|
*/
|
|
10
10
|
import { IdentityProvider } from '@kya-os/mcp';
|
|
11
|
+
import { WorkersIdentityProvider, hasConfiguredIdentityEnv } from './storage';
|
|
12
|
+
/**
|
|
13
|
+
* The identity provider `createCloudflareRuntime` hands to the runtime.
|
|
14
|
+
*
|
|
15
|
+
* Env is global and authoritative. When the `MCP_IDENTITY_*` triple is present
|
|
16
|
+
* the provider is the bare `WorkersIdentityProvider` and is NEVER wrapped in
|
|
17
|
+
* `KVIdentityProvider`: the Workers provider re-validates the triple on every
|
|
18
|
+
* load (`getConfiguredIdentity` fails closed on an inconsistent one), whereas
|
|
19
|
+
* the KV wrapper answers from its in-memory cache or the `identity:primary`
|
|
20
|
+
* record BEFORE it ever consults its fallback. Wrapped, a stale identity left
|
|
21
|
+
* in KV by an earlier deploy, or one generated before the identity was
|
|
22
|
+
* provisioned, would silently shadow the configured identity and skip the
|
|
23
|
+
* consistency check entirely; the worker would then sign as a DID nobody
|
|
24
|
+
* registered. That is exactly the hardware-world live path (its prefixed
|
|
25
|
+
* `*_IDENTITY_STORAGE` binding is mapped to `IDENTITY_STORAGE`).
|
|
26
|
+
*
|
|
27
|
+
* KV exists only to persist a GENERATED identity across isolates and Durable
|
|
28
|
+
* Object instances, so it is wired in exactly when there is no configured
|
|
29
|
+
* identity to persist.
|
|
30
|
+
*/
|
|
31
|
+
export function createCloudflareIdentityProvider(env, cryptoProvider, durableObjectState) {
|
|
32
|
+
const workersIdentityProvider = new WorkersIdentityProvider(env, cryptoProvider, durableObjectState);
|
|
33
|
+
if (hasConfiguredIdentityEnv(env) || !env.IDENTITY_STORAGE) {
|
|
34
|
+
return workersIdentityProvider;
|
|
35
|
+
}
|
|
36
|
+
return new KVIdentityProvider(env.IDENTITY_STORAGE, workersIdentityProvider, cryptoProvider);
|
|
37
|
+
}
|
|
11
38
|
/**
|
|
12
39
|
* KV Identity Provider for Cloudflare Workers
|
|
13
40
|
*
|
|
14
41
|
* Uses KV namespace to store identity, ensuring all DO instances
|
|
15
42
|
* share the same agent identity.
|
|
43
|
+
*
|
|
44
|
+
* Only for GENERATED identities: see `createCloudflareIdentityProvider` for
|
|
45
|
+
* why an env-configured identity must never sit behind this wrapper.
|
|
16
46
|
*/
|
|
17
47
|
export class KVIdentityProvider extends IdentityProvider {
|
|
18
48
|
kv;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kv-identity.js","sourceRoot":"","sources":["../../src/providers/kv-identity.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,gBAAgB,EAAiB,MAAM,aAAa,CAAC;AAG9D
|
|
1
|
+
{"version":3,"file":"kv-identity.js","sourceRoot":"","sources":["../../src/providers/kv-identity.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
* Implements StorageProvider and NonceCacheProvider using Cloudflare KV.
|
|
5
5
|
*/
|
|
6
6
|
import { StorageProvider, NonceCacheProvider, ClockProvider, FetchProvider, IdentityProvider, AgentIdentity } from "@kya-os/mcp";
|
|
7
|
-
|
|
7
|
+
import { WebCryptoProvider } from "./crypto.js";
|
|
8
|
+
export { WebCryptoProvider };
|
|
8
9
|
/**
|
|
9
10
|
* Minimal KV interface for compatibility across @cloudflare/workers-types versions
|
|
10
11
|
* Only includes the methods we actually use
|
|
@@ -76,18 +77,85 @@ interface ConfiguredIdentityEnv {
|
|
|
76
77
|
MCP_IDENTITY_PUBLIC_KEY?: string;
|
|
77
78
|
MCP_IDENTITY_AGENT_DID?: string;
|
|
78
79
|
}
|
|
80
|
+
/**
|
|
81
|
+
* Which part of a configured `MCP_IDENTITY_*` triple failed the consistency
|
|
82
|
+
* check. Surfaced on {@link ConfiguredIdentityError} so callers and logs can
|
|
83
|
+
* name the exact pair an operator has to fix.
|
|
84
|
+
*/
|
|
85
|
+
export type ConfiguredIdentityMismatch = "PRIVATE_KEY" | "PUBLIC_KEY" | "PRIVATE_KEY/PUBLIC_KEY" | "AGENT_DID/PUBLIC_KEY";
|
|
86
|
+
/**
|
|
87
|
+
* Thrown by {@link getConfiguredIdentity} when all three `MCP_IDENTITY_*` vars
|
|
88
|
+
* are present but do not describe ONE Ed25519 key pair. Distinct from the
|
|
89
|
+
* `null` "not configured" result on purpose: see the fail-closed note on
|
|
90
|
+
* `getConfiguredIdentity`.
|
|
91
|
+
*/
|
|
92
|
+
export declare class ConfiguredIdentityError extends Error {
|
|
93
|
+
readonly mismatch: ConfiguredIdentityMismatch;
|
|
94
|
+
constructor(mismatch: ConfiguredIdentityMismatch, detail: string);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* The verification-method id (`kid`) for a DID, by DID method.
|
|
98
|
+
*
|
|
99
|
+
* - `did:key` → `<did>#<multibase>`: the did:key spec fixes the fragment to the
|
|
100
|
+
* multibase public-key value. That is what `@kya-os/mcp`'s
|
|
101
|
+
* `createDidKeyResolver`, the contracts fixtures and this package's
|
|
102
|
+
* `WorkersFetchProvider.resolveDID` publish, so a proof carrying this kid
|
|
103
|
+
* resolves to a verification method on every path that verifies this
|
|
104
|
+
* package's proofs. Not yet universal: `@kya-os/mcp-i-runtime`'s
|
|
105
|
+
* `createDIDDocument` and `@kya-os/mcp-i`'s `NodeFetchProvider.resolveDID`
|
|
106
|
+
* still emit `#key-1` for every DID method (known follow-up, not changed
|
|
107
|
+
* here).
|
|
108
|
+
* - everything else (`did:web` in practice) → `<did>#key-1`, which is the id
|
|
109
|
+
* the runtime's own `createDIDDocument` serves at `/.well-known/did.json`.
|
|
110
|
+
*/
|
|
111
|
+
export declare function kidForDid(did: string): string;
|
|
112
|
+
/**
|
|
113
|
+
* Whether `env` carries a complete `MCP_IDENTITY_*` triple. Presence only,
|
|
114
|
+
* no validation: use it to decide WHICH identity path a deployment is on
|
|
115
|
+
* (env-configured vs generated/persisted), then let `getConfiguredIdentity`
|
|
116
|
+
* decide whether that triple is actually usable.
|
|
117
|
+
*/
|
|
118
|
+
export declare function hasConfiguredIdentityEnv(env: ConfiguredIdentityEnv): env is ConfiguredIdentityEnv & {
|
|
119
|
+
MCP_IDENTITY_PRIVATE_KEY: string;
|
|
120
|
+
MCP_IDENTITY_PUBLIC_KEY: string;
|
|
121
|
+
MCP_IDENTITY_AGENT_DID: string;
|
|
122
|
+
};
|
|
79
123
|
/**
|
|
80
124
|
* The deployment's own provisioned identity, read directly from env vars — or
|
|
81
125
|
* `null` when any of the three are absent (an older/undeployed-identity worker).
|
|
82
126
|
*
|
|
83
|
-
*
|
|
84
|
-
*
|
|
85
|
-
*
|
|
86
|
-
*
|
|
87
|
-
*
|
|
88
|
-
*
|
|
127
|
+
* When all three are present they are CHECKED, not trusted: the three values
|
|
128
|
+
* are provisioned as independent secrets/vars and nothing else ever confirms
|
|
129
|
+
* they belong together. The public key is re-derived from
|
|
130
|
+
* `MCP_IDENTITY_PRIVATE_KEY` and must equal `MCP_IDENTITY_PUBLIC_KEY`; for a
|
|
131
|
+
* did:key, the DID is re-derived from that public key and must equal
|
|
132
|
+
* `MCP_IDENTITY_AGENT_DID`. (A did:web DID cannot be checked offline - its key
|
|
133
|
+
* lives in a remotely hosted did.json - so only the key pair is verified.)
|
|
134
|
+
*
|
|
135
|
+
* FAIL-CLOSED DECISION: an inconsistent triple THROWS `ConfiguredIdentityError`
|
|
136
|
+
* rather than returning `null`. `null` means "this deployment has no configured
|
|
137
|
+
* identity", and every caller reads it that way - `WorkersIdentityProvider`
|
|
138
|
+
* falls through to DO state or generates a fresh did:key, and the consent
|
|
139
|
+
* anchor bridge mints with an ephemeral issuer. A misprovisioned identity must
|
|
140
|
+
* not silently take either path: the worker would then sign as some DID other
|
|
141
|
+
* than the one operators registered and advertised, which is the exact drift
|
|
142
|
+
* that made the hardware-world worker's response proofs unverifiable. Throwing
|
|
143
|
+
* surfaces the misconfiguration at the first signing attempt, with the
|
|
144
|
+
* offending pair named, instead of hiding it behind a working-looking worker.
|
|
145
|
+
*
|
|
146
|
+
* Side-effect-free (no logging, no storage) apart from a per-env memo of the
|
|
147
|
+
* result (see `configuredIdentityMemo`): callers that want the DO-state-
|
|
148
|
+
* caching/fallback-generation behavior on top of this should use
|
|
149
|
+
* `WorkersIdentityProvider`, which is built on this same check. Extracted so a
|
|
150
|
+
* caller that only needs "is there a real configured identity, and if so what
|
|
151
|
+
* is it", with its OWN fallback strategy when there isn't one, doesn't have
|
|
152
|
+
* to instantiate a class designed for a different concern (DO-state
|
|
153
|
+
* persistence across cold starts).
|
|
154
|
+
*
|
|
155
|
+
* Async because the Web Crypto API (the only Ed25519 implementation available
|
|
156
|
+
* in Workers) is async.
|
|
89
157
|
*/
|
|
90
|
-
export declare function getConfiguredIdentity(env: ConfiguredIdentityEnv): AgentIdentity | null
|
|
158
|
+
export declare function getConfiguredIdentity(env: ConfiguredIdentityEnv): Promise<AgentIdentity | null>;
|
|
91
159
|
/**
|
|
92
160
|
* Workers Identity Provider with Durable Object state persistence
|
|
93
161
|
*
|
|
@@ -100,28 +168,18 @@ export declare class WorkersIdentityProvider extends IdentityProvider {
|
|
|
100
168
|
private env;
|
|
101
169
|
private cryptoProvider?;
|
|
102
170
|
private state?;
|
|
171
|
+
/**
|
|
172
|
+
* The env-configured identity this instance last wrote to DO state.
|
|
173
|
+
* `getConfiguredIdentity` memoizes per env object, so while the triple is
|
|
174
|
+
* unchanged it resolves to the SAME object: compare by reference to persist
|
|
175
|
+
* once per (instance, triple) instead of on every `getIdentity()` call (the
|
|
176
|
+
* McpAgent path calls it several times per tool call).
|
|
177
|
+
*/
|
|
178
|
+
private persistedConfiguredIdentity?;
|
|
103
179
|
constructor(env: any, cryptoProvider?: any | undefined, state?: DurableObjectState | undefined);
|
|
104
180
|
getIdentity(): Promise<AgentIdentity>;
|
|
105
181
|
saveIdentity(identity: AgentIdentity): Promise<void>;
|
|
106
182
|
rotateKeys(): Promise<AgentIdentity>;
|
|
107
183
|
deleteIdentity(): Promise<void>;
|
|
108
|
-
/**
|
|
109
|
-
* Generate did:key from Ed25519 public key
|
|
110
|
-
* Following spec: https://w3c-ccg.github.io/did-method-key/
|
|
111
|
-
*
|
|
112
|
-
* Format: did:key:z<multibase-base58btc(<multicodec-ed25519-pub><publicKey>)>
|
|
113
|
-
* Ed25519 multicodec prefix: 0xed 0x01
|
|
114
|
-
* Result starts with: did:key:z6Mk (for Ed25519 keys)
|
|
115
|
-
*/
|
|
116
|
-
private generateDIDFromPublicKey;
|
|
117
|
-
/**
|
|
118
|
-
* Base58 encode (Bitcoin alphabet) using base-x library
|
|
119
|
-
*/
|
|
120
|
-
private base58Encode;
|
|
121
|
-
/**
|
|
122
|
-
* Convert base64 or base64url to bytes
|
|
123
|
-
* Handles both standard base64 (+/) and base64url (-_) formats
|
|
124
|
-
*/
|
|
125
|
-
private base64ToBytes;
|
|
126
184
|
}
|
|
127
185
|
//# sourceMappingURL=storage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/providers/storage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,aAAa,
|
|
1
|
+
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/providers/storage.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,12 +3,16 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Implements StorageProvider and NonceCacheProvider using Cloudflare KV.
|
|
5
5
|
*/
|
|
6
|
-
import { StorageProvider, NonceCacheProvider, ClockProvider, FetchProvider, IdentityProvider, } from "@kya-os/mcp";
|
|
6
|
+
import { StorageProvider, NonceCacheProvider, ClockProvider, FetchProvider, IdentityProvider, getDidMethod, didKeyFragment, generateDidKeyFromBytes, base64ToBytes, createDidKeyResolver, } from "@kya-os/mcp";
|
|
7
|
+
import { WebCryptoProvider } from "./crypto.js";
|
|
7
8
|
// Re-export WebCryptoProvider for convenience
|
|
8
|
-
export { WebCryptoProvider }
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
export { WebCryptoProvider };
|
|
10
|
+
/**
|
|
11
|
+
* The ONE did:key document builder this package uses. `@kya-os/mcp` owns the
|
|
12
|
+
* did:key encoding (multicodec prefix, base58btc, spec `#<multibase>` fragment,
|
|
13
|
+
* JWK + multibase keys); nothing here re-implements it.
|
|
14
|
+
*/
|
|
15
|
+
const didKeyResolver = createDidKeyResolver();
|
|
12
16
|
/**
|
|
13
17
|
* KV storage provider for Cloudflare Workers
|
|
14
18
|
*/
|
|
@@ -93,21 +97,22 @@ export class WorkersClockProvider extends ClockProvider {
|
|
|
93
97
|
export class WorkersFetchProvider extends FetchProvider {
|
|
94
98
|
async resolveDID(did) {
|
|
95
99
|
if (did.startsWith("did:key:")) {
|
|
96
|
-
// Offline resolution for did:key
|
|
97
|
-
|
|
100
|
+
// Offline resolution for did:key, delegated to the package resolver so
|
|
101
|
+
// there is exactly one did:key document shape in this codebase. Its
|
|
102
|
+
// verification-method id is `<did>#<multibase>` (the did:key spec fixes
|
|
103
|
+
// the fragment to the key itself), which is also what `kidForDid` stamps
|
|
104
|
+
// on every did:key proof this package signs: a verifier looks the
|
|
105
|
+
// proof's kid up in THIS document, so the two have to agree. It publishes
|
|
106
|
+
// both `publicKeyJwk` (the runtime's ProofVerifier reads only that) and
|
|
107
|
+
// `publicKeyMultibase`.
|
|
108
|
+
const doc = await didKeyResolver.resolve(did);
|
|
109
|
+
if (!doc) {
|
|
110
|
+
throw new Error(`Failed to resolve ${did}: not an Ed25519 did:key ` +
|
|
111
|
+
"(expected base58btc multibase of 0xed01 || 32-byte public key)");
|
|
112
|
+
}
|
|
98
113
|
return {
|
|
99
114
|
"@context": ["https://www.w3.org/ns/did/v1"],
|
|
100
|
-
|
|
101
|
-
verificationMethod: [
|
|
102
|
-
{
|
|
103
|
-
id: `${did}#key-1`,
|
|
104
|
-
type: "Ed25519VerificationKey2020",
|
|
105
|
-
controller: did,
|
|
106
|
-
publicKeyMultibase,
|
|
107
|
-
},
|
|
108
|
-
],
|
|
109
|
-
authentication: [`${did}#key-1`],
|
|
110
|
-
assertionMethod: [`${did}#key-1`],
|
|
115
|
+
...doc,
|
|
111
116
|
};
|
|
112
117
|
}
|
|
113
118
|
if (did.startsWith("did:web:")) {
|
|
@@ -136,28 +141,174 @@ export class WorkersFetchProvider extends FetchProvider {
|
|
|
136
141
|
return await fetch(url, options);
|
|
137
142
|
}
|
|
138
143
|
}
|
|
144
|
+
/**
|
|
145
|
+
* Thrown by {@link getConfiguredIdentity} when all three `MCP_IDENTITY_*` vars
|
|
146
|
+
* are present but do not describe ONE Ed25519 key pair. Distinct from the
|
|
147
|
+
* `null` "not configured" result on purpose: see the fail-closed note on
|
|
148
|
+
* `getConfiguredIdentity`.
|
|
149
|
+
*/
|
|
150
|
+
export class ConfiguredIdentityError extends Error {
|
|
151
|
+
mismatch;
|
|
152
|
+
constructor(mismatch, detail) {
|
|
153
|
+
super(`Configured MCP identity is inconsistent (${mismatch}): ${detail} ` +
|
|
154
|
+
"Refusing to load it - a proof signed with this identity would not verify " +
|
|
155
|
+
"against the key its DID advertises. Re-provision MCP_IDENTITY_AGENT_DID, " +
|
|
156
|
+
"MCP_IDENTITY_PRIVATE_KEY and MCP_IDENTITY_PUBLIC_KEY from one key pair.");
|
|
157
|
+
this.name = "ConfiguredIdentityError";
|
|
158
|
+
this.mismatch = mismatch;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* The verification-method id (`kid`) for a DID, by DID method.
|
|
163
|
+
*
|
|
164
|
+
* - `did:key` → `<did>#<multibase>`: the did:key spec fixes the fragment to the
|
|
165
|
+
* multibase public-key value. That is what `@kya-os/mcp`'s
|
|
166
|
+
* `createDidKeyResolver`, the contracts fixtures and this package's
|
|
167
|
+
* `WorkersFetchProvider.resolveDID` publish, so a proof carrying this kid
|
|
168
|
+
* resolves to a verification method on every path that verifies this
|
|
169
|
+
* package's proofs. Not yet universal: `@kya-os/mcp-i-runtime`'s
|
|
170
|
+
* `createDIDDocument` and `@kya-os/mcp-i`'s `NodeFetchProvider.resolveDID`
|
|
171
|
+
* still emit `#key-1` for every DID method (known follow-up, not changed
|
|
172
|
+
* here).
|
|
173
|
+
* - everything else (`did:web` in practice) → `<did>#key-1`, which is the id
|
|
174
|
+
* the runtime's own `createDIDDocument` serves at `/.well-known/did.json`.
|
|
175
|
+
*/
|
|
176
|
+
export function kidForDid(did) {
|
|
177
|
+
return getDidMethod(did) === "key"
|
|
178
|
+
? `${did}#${didKeyFragment(did)}`
|
|
179
|
+
: `${did}#key-1`;
|
|
180
|
+
}
|
|
181
|
+
function bytesEqual(left, right) {
|
|
182
|
+
if (left.length !== right.length)
|
|
183
|
+
return false;
|
|
184
|
+
let diff = 0;
|
|
185
|
+
for (let i = 0; i < left.length; i++)
|
|
186
|
+
diff |= left[i] ^ right[i];
|
|
187
|
+
return diff === 0;
|
|
188
|
+
}
|
|
189
|
+
const ED25519_PUBLIC_KEY_BYTES = 32;
|
|
190
|
+
/**
|
|
191
|
+
* Whether `env` carries a complete `MCP_IDENTITY_*` triple. Presence only,
|
|
192
|
+
* no validation: use it to decide WHICH identity path a deployment is on
|
|
193
|
+
* (env-configured vs generated/persisted), then let `getConfiguredIdentity`
|
|
194
|
+
* decide whether that triple is actually usable.
|
|
195
|
+
*/
|
|
196
|
+
export function hasConfiguredIdentityEnv(env) {
|
|
197
|
+
return Boolean(env.MCP_IDENTITY_PRIVATE_KEY &&
|
|
198
|
+
env.MCP_IDENTITY_PUBLIC_KEY &&
|
|
199
|
+
env.MCP_IDENTITY_AGENT_DID);
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Per-env memo for `getConfiguredIdentity`. Keyed on the env OBJECT (Workers
|
|
203
|
+
* hand every request the same `env` for the life of the isolate) and
|
|
204
|
+
* invalidated when any of the three strings changes, so a corrected triple is
|
|
205
|
+
* re-checked while an unchanged one is not re-derived on every proof. A
|
|
206
|
+
* rejected promise is cached too, under the triple that produced it: that is
|
|
207
|
+
* correct, because the same three strings can never start validating, and a
|
|
208
|
+
* different triple (the operator's fix) lands in a fresh entry.
|
|
209
|
+
*/
|
|
210
|
+
const configuredIdentityMemo = new WeakMap();
|
|
139
211
|
/**
|
|
140
212
|
* The deployment's own provisioned identity, read directly from env vars — or
|
|
141
213
|
* `null` when any of the three are absent (an older/undeployed-identity worker).
|
|
142
214
|
*
|
|
143
|
-
*
|
|
144
|
-
*
|
|
145
|
-
*
|
|
146
|
-
*
|
|
147
|
-
*
|
|
148
|
-
*
|
|
215
|
+
* When all three are present they are CHECKED, not trusted: the three values
|
|
216
|
+
* are provisioned as independent secrets/vars and nothing else ever confirms
|
|
217
|
+
* they belong together. The public key is re-derived from
|
|
218
|
+
* `MCP_IDENTITY_PRIVATE_KEY` and must equal `MCP_IDENTITY_PUBLIC_KEY`; for a
|
|
219
|
+
* did:key, the DID is re-derived from that public key and must equal
|
|
220
|
+
* `MCP_IDENTITY_AGENT_DID`. (A did:web DID cannot be checked offline - its key
|
|
221
|
+
* lives in a remotely hosted did.json - so only the key pair is verified.)
|
|
222
|
+
*
|
|
223
|
+
* FAIL-CLOSED DECISION: an inconsistent triple THROWS `ConfiguredIdentityError`
|
|
224
|
+
* rather than returning `null`. `null` means "this deployment has no configured
|
|
225
|
+
* identity", and every caller reads it that way - `WorkersIdentityProvider`
|
|
226
|
+
* falls through to DO state or generates a fresh did:key, and the consent
|
|
227
|
+
* anchor bridge mints with an ephemeral issuer. A misprovisioned identity must
|
|
228
|
+
* not silently take either path: the worker would then sign as some DID other
|
|
229
|
+
* than the one operators registered and advertised, which is the exact drift
|
|
230
|
+
* that made the hardware-world worker's response proofs unverifiable. Throwing
|
|
231
|
+
* surfaces the misconfiguration at the first signing attempt, with the
|
|
232
|
+
* offending pair named, instead of hiding it behind a working-looking worker.
|
|
233
|
+
*
|
|
234
|
+
* Side-effect-free (no logging, no storage) apart from a per-env memo of the
|
|
235
|
+
* result (see `configuredIdentityMemo`): callers that want the DO-state-
|
|
236
|
+
* caching/fallback-generation behavior on top of this should use
|
|
237
|
+
* `WorkersIdentityProvider`, which is built on this same check. Extracted so a
|
|
238
|
+
* caller that only needs "is there a real configured identity, and if so what
|
|
239
|
+
* is it", with its OWN fallback strategy when there isn't one, doesn't have
|
|
240
|
+
* to instantiate a class designed for a different concern (DO-state
|
|
241
|
+
* persistence across cold starts).
|
|
242
|
+
*
|
|
243
|
+
* Async because the Web Crypto API (the only Ed25519 implementation available
|
|
244
|
+
* in Workers) is async.
|
|
149
245
|
*/
|
|
150
|
-
export function getConfiguredIdentity(env) {
|
|
151
|
-
if (!env
|
|
152
|
-
!env.MCP_IDENTITY_PUBLIC_KEY ||
|
|
153
|
-
!env.MCP_IDENTITY_AGENT_DID) {
|
|
246
|
+
export async function getConfiguredIdentity(env) {
|
|
247
|
+
if (!hasConfiguredIdentityEnv(env)) {
|
|
154
248
|
return null;
|
|
155
249
|
}
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
250
|
+
const triple = JSON.stringify([
|
|
251
|
+
env.MCP_IDENTITY_PRIVATE_KEY,
|
|
252
|
+
env.MCP_IDENTITY_PUBLIC_KEY,
|
|
253
|
+
env.MCP_IDENTITY_AGENT_DID,
|
|
254
|
+
]);
|
|
255
|
+
const memoized = configuredIdentityMemo.get(env);
|
|
256
|
+
if (memoized && memoized.triple === triple) {
|
|
257
|
+
return memoized.result;
|
|
258
|
+
}
|
|
259
|
+
const result = verifyConfiguredIdentity({
|
|
159
260
|
privateKey: env.MCP_IDENTITY_PRIVATE_KEY,
|
|
160
261
|
publicKey: env.MCP_IDENTITY_PUBLIC_KEY,
|
|
262
|
+
did: env.MCP_IDENTITY_AGENT_DID,
|
|
263
|
+
});
|
|
264
|
+
configuredIdentityMemo.set(env, { triple, result });
|
|
265
|
+
return result;
|
|
266
|
+
}
|
|
267
|
+
/** The uncached check behind `getConfiguredIdentity`; see its doc comment. */
|
|
268
|
+
async function verifyConfiguredIdentity(configured) {
|
|
269
|
+
const { did } = configured;
|
|
270
|
+
// Decode the configured public key first: it is the reference both later
|
|
271
|
+
// comparisons are made against, so a value that is not even a raw key has
|
|
272
|
+
// to be named as such rather than surfacing as a confusing pair mismatch.
|
|
273
|
+
let configuredPublicKeyBytes;
|
|
274
|
+
try {
|
|
275
|
+
configuredPublicKeyBytes = base64ToBytes(configured.publicKey);
|
|
276
|
+
}
|
|
277
|
+
catch (cause) {
|
|
278
|
+
throw new ConfiguredIdentityError("PUBLIC_KEY", "MCP_IDENTITY_PUBLIC_KEY is not valid base64/base64url: " +
|
|
279
|
+
`${cause instanceof Error ? cause.message : String(cause)}.`);
|
|
280
|
+
}
|
|
281
|
+
if (configuredPublicKeyBytes.length !== ED25519_PUBLIC_KEY_BYTES) {
|
|
282
|
+
throw new ConfiguredIdentityError("PUBLIC_KEY", "MCP_IDENTITY_PUBLIC_KEY must be the raw 32-byte Ed25519 public key " +
|
|
283
|
+
`(got ${configuredPublicKeyBytes.length} bytes; SPKI/PEM is not accepted).`);
|
|
284
|
+
}
|
|
285
|
+
let derivedPublicKey;
|
|
286
|
+
try {
|
|
287
|
+
derivedPublicKey = await new WebCryptoProvider().derivePublicKey(configured.privateKey);
|
|
288
|
+
}
|
|
289
|
+
catch (cause) {
|
|
290
|
+
throw new ConfiguredIdentityError("PRIVATE_KEY", "MCP_IDENTITY_PRIVATE_KEY is not a usable Ed25519 private key " +
|
|
291
|
+
"(expected base64 of a 32-byte seed, a 64-byte seed||public-key pair, " +
|
|
292
|
+
`or PKCS#8): ${cause instanceof Error ? cause.message : String(cause)}.`);
|
|
293
|
+
}
|
|
294
|
+
// Compare key BYTES: the env value may be base64 or base64url (KTA emits
|
|
295
|
+
// base64url), and both must be accepted as the same key.
|
|
296
|
+
if (!bytesEqual(base64ToBytes(derivedPublicKey), configuredPublicKeyBytes)) {
|
|
297
|
+
throw new ConfiguredIdentityError("PRIVATE_KEY/PUBLIC_KEY", "the public key derived from MCP_IDENTITY_PRIVATE_KEY is not " +
|
|
298
|
+
"MCP_IDENTITY_PUBLIC_KEY (the two secrets come from different key pairs).");
|
|
299
|
+
}
|
|
300
|
+
if (getDidMethod(did) === "key") {
|
|
301
|
+
const didForPublicKey = generateDidKeyFromBytes(configuredPublicKeyBytes);
|
|
302
|
+
if (didForPublicKey !== did) {
|
|
303
|
+
throw new ConfiguredIdentityError("AGENT_DID/PUBLIC_KEY", `MCP_IDENTITY_AGENT_DID is ${did} but MCP_IDENTITY_PUBLIC_KEY ` +
|
|
304
|
+
`encodes to ${didForPublicKey}.`);
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
return {
|
|
308
|
+
did,
|
|
309
|
+
kid: kidForDid(did),
|
|
310
|
+
privateKey: configured.privateKey,
|
|
311
|
+
publicKey: configured.publicKey,
|
|
161
312
|
createdAt: new Date().toISOString(),
|
|
162
313
|
type: "production",
|
|
163
314
|
};
|
|
@@ -174,6 +325,14 @@ export class WorkersIdentityProvider extends IdentityProvider {
|
|
|
174
325
|
env;
|
|
175
326
|
cryptoProvider;
|
|
176
327
|
state;
|
|
328
|
+
/**
|
|
329
|
+
* The env-configured identity this instance last wrote to DO state.
|
|
330
|
+
* `getConfiguredIdentity` memoizes per env object, so while the triple is
|
|
331
|
+
* unchanged it resolves to the SAME object: compare by reference to persist
|
|
332
|
+
* once per (instance, triple) instead of on every `getIdentity()` call (the
|
|
333
|
+
* McpAgent path calls it several times per tool call).
|
|
334
|
+
*/
|
|
335
|
+
persistedConfiguredIdentity;
|
|
177
336
|
constructor(env, cryptoProvider, state) {
|
|
178
337
|
super();
|
|
179
338
|
this.env = env;
|
|
@@ -183,11 +342,33 @@ export class WorkersIdentityProvider extends IdentityProvider {
|
|
|
183
342
|
async getIdentity() {
|
|
184
343
|
// 1. ALWAYS check environment variables FIRST (highest priority)
|
|
185
344
|
// This allows operators to update identity by changing env vars without clearing DO storage
|
|
186
|
-
|
|
345
|
+
let configured;
|
|
346
|
+
try {
|
|
347
|
+
configured = await getConfiguredIdentity(this.env);
|
|
348
|
+
}
|
|
349
|
+
catch (error) {
|
|
350
|
+
// Fail closed and LOUD: a present-but-inconsistent MCP_IDENTITY_* triple
|
|
351
|
+
// must not fall through to DO state or a freshly generated did:key (that
|
|
352
|
+
// would make the worker sign as an identity nobody registered). Log the
|
|
353
|
+
// specific mismatch for the operator, then let the failure propagate.
|
|
354
|
+
console.error("[Identity] Refusing to load configured identity from env vars:", error instanceof Error ? error.message : String(error));
|
|
355
|
+
throw error;
|
|
356
|
+
}
|
|
187
357
|
if (configured) {
|
|
188
|
-
// Update DO state to match current env vars (overwrite any stale cached
|
|
189
|
-
|
|
190
|
-
|
|
358
|
+
// Update DO state to match current env vars (overwrite any stale cached
|
|
359
|
+
// identity) - once per (instance, triple), see `persistedConfiguredIdentity`.
|
|
360
|
+
if (this.state && this.persistedConfiguredIdentity !== configured) {
|
|
361
|
+
// Mark before awaiting so a burst of concurrent first calls on a
|
|
362
|
+
// fresh instance issues one put, not one per caller; roll back on
|
|
363
|
+
// failure so the next call retries (and the failure still propagates).
|
|
364
|
+
this.persistedConfiguredIdentity = configured;
|
|
365
|
+
try {
|
|
366
|
+
await this.state.storage.put("agent-identity", configured);
|
|
367
|
+
}
|
|
368
|
+
catch (error) {
|
|
369
|
+
this.persistedConfiguredIdentity = undefined;
|
|
370
|
+
throw error;
|
|
371
|
+
}
|
|
191
372
|
console.error("[Identity] Loaded from env vars, updated DO state:", configured.did.slice(0, 30) + "...");
|
|
192
373
|
}
|
|
193
374
|
return configured;
|
|
@@ -205,10 +386,10 @@ export class WorkersIdentityProvider extends IdentityProvider {
|
|
|
205
386
|
throw new Error("No identity found and crypto provider not available for generation");
|
|
206
387
|
}
|
|
207
388
|
const keyPair = await this.cryptoProvider.generateKeyPair();
|
|
208
|
-
const did =
|
|
389
|
+
const did = generateDidKeyFromBytes(base64ToBytes(keyPair.publicKey));
|
|
209
390
|
const identity = {
|
|
210
391
|
did,
|
|
211
|
-
kid:
|
|
392
|
+
kid: kidForDid(did),
|
|
212
393
|
privateKey: keyPair.privateKey,
|
|
213
394
|
publicKey: keyPair.publicKey,
|
|
214
395
|
createdAt: new Date().toISOString(),
|
|
@@ -239,10 +420,10 @@ export class WorkersIdentityProvider extends IdentityProvider {
|
|
|
239
420
|
throw new Error("Crypto provider required for key rotation");
|
|
240
421
|
}
|
|
241
422
|
const keyPair = await this.cryptoProvider.generateKeyPair();
|
|
242
|
-
const did =
|
|
423
|
+
const did = generateDidKeyFromBytes(base64ToBytes(keyPair.publicKey));
|
|
243
424
|
return {
|
|
244
425
|
did,
|
|
245
|
-
kid:
|
|
426
|
+
kid: kidForDid(did),
|
|
246
427
|
privateKey: keyPair.privateKey,
|
|
247
428
|
publicKey: keyPair.publicKey,
|
|
248
429
|
createdAt: new Date().toISOString(),
|
|
@@ -252,49 +433,5 @@ export class WorkersIdentityProvider extends IdentityProvider {
|
|
|
252
433
|
async deleteIdentity() {
|
|
253
434
|
console.warn("Identity deletion not supported in Workers runtime");
|
|
254
435
|
}
|
|
255
|
-
/**
|
|
256
|
-
* Generate did:key from Ed25519 public key
|
|
257
|
-
* Following spec: https://w3c-ccg.github.io/did-method-key/
|
|
258
|
-
*
|
|
259
|
-
* Format: did:key:z<multibase-base58btc(<multicodec-ed25519-pub><publicKey>)>
|
|
260
|
-
* Ed25519 multicodec prefix: 0xed 0x01
|
|
261
|
-
* Result starts with: did:key:z6Mk (for Ed25519 keys)
|
|
262
|
-
*/
|
|
263
|
-
generateDIDFromPublicKey(publicKey) {
|
|
264
|
-
const publicKeyBytes = this.base64ToBytes(publicKey);
|
|
265
|
-
// Ed25519 multicodec prefix (0xed01)
|
|
266
|
-
const multicodecPrefix = new Uint8Array([0xed, 0x01]);
|
|
267
|
-
// Combine prefix + public key
|
|
268
|
-
const multicodecKey = new Uint8Array(multicodecPrefix.length + publicKeyBytes.length);
|
|
269
|
-
multicodecKey.set(multicodecPrefix);
|
|
270
|
-
multicodecKey.set(publicKeyBytes, multicodecPrefix.length);
|
|
271
|
-
// Encode with base58-btc (starts with 'z')
|
|
272
|
-
const multibaseEncoded = "z" + this.base58Encode(multicodecKey);
|
|
273
|
-
return `did:key:${multibaseEncoded}`;
|
|
274
|
-
}
|
|
275
|
-
/**
|
|
276
|
-
* Base58 encode (Bitcoin alphabet) using base-x library
|
|
277
|
-
*/
|
|
278
|
-
base58Encode(bytes) {
|
|
279
|
-
return base58.encode(bytes);
|
|
280
|
-
}
|
|
281
|
-
/**
|
|
282
|
-
* Convert base64 or base64url to bytes
|
|
283
|
-
* Handles both standard base64 (+/) and base64url (-_) formats
|
|
284
|
-
*/
|
|
285
|
-
base64ToBytes(base64) {
|
|
286
|
-
// Convert base64url to standard base64 if needed
|
|
287
|
-
// Base64url uses - instead of + and _ instead of /
|
|
288
|
-
let standardBase64 = base64.replace(/-/g, "+").replace(/_/g, "/");
|
|
289
|
-
// Add padding if needed (base64url often omits padding)
|
|
290
|
-
const paddingNeeded = (4 - (standardBase64.length % 4)) % 4;
|
|
291
|
-
standardBase64 += "=".repeat(paddingNeeded);
|
|
292
|
-
const binaryString = atob(standardBase64);
|
|
293
|
-
const bytes = new Uint8Array(binaryString.length);
|
|
294
|
-
for (let i = 0; i < binaryString.length; i++) {
|
|
295
|
-
bytes[i] = binaryString.charCodeAt(i);
|
|
296
|
-
}
|
|
297
|
-
return bytes;
|
|
298
|
-
}
|
|
299
436
|
}
|
|
300
437
|
//# sourceMappingURL=storage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/providers/storage.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/providers/storage.ts"],"names":[],"mappings":"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"}
|
|
@@ -51,9 +51,10 @@ export declare class ProofService {
|
|
|
51
51
|
* Notify Reputation Engine of an interaction
|
|
52
52
|
*
|
|
53
53
|
* Fire-and-forget: Errors are swallowed to prevent blocking proof submission.
|
|
54
|
-
*
|
|
55
|
-
*
|
|
56
|
-
*
|
|
54
|
+
* Two opt-in gates must both hold before anything is sent:
|
|
55
|
+
* 1. the agent is registered with KTA (`KTA_REGISTRATION.registered`), and
|
|
56
|
+
* 2. the deployment carries its own `REPUTATION_API_KEY` binding
|
|
57
|
+
* (a Workers secret). The package never bundles a credential.
|
|
57
58
|
*
|
|
58
59
|
* @param agentDid - The agent's DID
|
|
59
60
|
* @param context - The proof submission context containing success status
|