@kya-os/mcp-i-cloudflare 1.5.1-canary.6 → 1.5.1-canary.7
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 +8 -0
- package/dist/adapter.d.ts.map +1 -1
- package/dist/adapter.js +102 -87
- package/dist/adapter.js.map +1 -1
- package/dist/constants/storage-keys.d.ts +89 -0
- package/dist/constants/storage-keys.d.ts.map +1 -0
- package/dist/constants/storage-keys.js +142 -0
- package/dist/constants/storage-keys.js.map +1 -0
- package/dist/index.d.ts +7 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -3
- package/dist/index.js.map +1 -1
- package/dist/runtime/oauth-handler.d.ts +6 -0
- package/dist/runtime/oauth-handler.d.ts.map +1 -1
- package/dist/runtime/oauth-handler.js +96 -21
- package/dist/runtime/oauth-handler.js.map +1 -1
- package/dist/services/admin.service.d.ts +4 -0
- package/dist/services/admin.service.d.ts.map +1 -1
- package/dist/services/admin.service.js +151 -71
- package/dist/services/admin.service.js.map +1 -1
- package/dist/services/consent-page-renderer.d.ts +5 -2
- package/dist/services/consent-page-renderer.d.ts.map +1 -1
- package/dist/services/consent-page-renderer.js +29 -8
- package/dist/services/consent-page-renderer.js.map +1 -1
- package/dist/services/consent.service.d.ts +52 -0
- package/dist/services/consent.service.d.ts.map +1 -1
- package/dist/services/consent.service.js +451 -99
- package/dist/services/consent.service.js.map +1 -1
- package/dist/services/delegation.service.d.ts.map +1 -1
- package/dist/services/delegation.service.js +54 -19
- package/dist/services/delegation.service.js.map +1 -1
- package/dist/services/oauth-security.service.d.ts +92 -0
- package/dist/services/oauth-security.service.d.ts.map +1 -0
- package/dist/services/oauth-security.service.js +260 -0
- package/dist/services/oauth-security.service.js.map +1 -0
- package/dist/services/rate-limit.service.d.ts +59 -0
- package/dist/services/rate-limit.service.d.ts.map +1 -0
- package/dist/services/rate-limit.service.js +146 -0
- package/dist/services/rate-limit.service.js.map +1 -0
- package/dist/utils/day0-config.d.ts +51 -0
- package/dist/utils/day0-config.d.ts.map +1 -0
- package/dist/utils/day0-config.js +72 -0
- package/dist/utils/day0-config.js.map +1 -0
- package/package.json +3 -3
|
@@ -5,11 +5,38 @@
|
|
|
5
5
|
* Only enabled when config.admin.enabled === true
|
|
6
6
|
*/
|
|
7
7
|
import { DEFAULT_AGENTSHIELD_URL } from "../constants";
|
|
8
|
+
import { MCP_CORS_HEADERS, PREFLIGHT_CORS_HEADERS } from "@kya-os/mcp-i-core";
|
|
9
|
+
import { clearCacheRequestSchema } from "@kya-os/contracts/agentshield-api";
|
|
8
10
|
export class AdminService {
|
|
9
11
|
env;
|
|
10
12
|
constructor(env) {
|
|
11
13
|
this.env = env;
|
|
12
14
|
}
|
|
15
|
+
/**
|
|
16
|
+
* Create a consistent error response in AgentShield API format
|
|
17
|
+
*/
|
|
18
|
+
createErrorResponse(code, message, status, details) {
|
|
19
|
+
const errorData = {
|
|
20
|
+
code,
|
|
21
|
+
message,
|
|
22
|
+
...(details && { details }),
|
|
23
|
+
};
|
|
24
|
+
const apiResponse = {
|
|
25
|
+
success: false,
|
|
26
|
+
data: errorData,
|
|
27
|
+
metadata: {
|
|
28
|
+
requestId: crypto.randomUUID(),
|
|
29
|
+
timestamp: new Date().toISOString(),
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
return new Response(JSON.stringify(apiResponse), {
|
|
33
|
+
status,
|
|
34
|
+
headers: {
|
|
35
|
+
"Content-Type": "application/json",
|
|
36
|
+
...MCP_CORS_HEADERS,
|
|
37
|
+
},
|
|
38
|
+
});
|
|
39
|
+
}
|
|
13
40
|
/**
|
|
14
41
|
* Handle admin requests
|
|
15
42
|
* @param request - Incoming request
|
|
@@ -19,31 +46,30 @@ export class AdminService {
|
|
|
19
46
|
const url = new URL(request.url);
|
|
20
47
|
// Only POST /admin/clear-cache is supported
|
|
21
48
|
if (url.pathname === "/admin/clear-cache") {
|
|
49
|
+
// Handle OPTIONS preflight requests
|
|
50
|
+
if (request.method === "OPTIONS") {
|
|
51
|
+
return new Response(null, {
|
|
52
|
+
status: 200,
|
|
53
|
+
headers: {
|
|
54
|
+
...PREFLIGHT_CORS_HEADERS,
|
|
55
|
+
},
|
|
56
|
+
});
|
|
57
|
+
}
|
|
22
58
|
if (request.method !== "POST") {
|
|
23
|
-
return
|
|
24
|
-
success: false,
|
|
25
|
-
error: "Method not allowed. Use POST.",
|
|
59
|
+
return this.createErrorResponse("method_not_allowed", "Method not allowed. Use POST.", 405, {
|
|
26
60
|
endpoint: url.pathname,
|
|
27
61
|
method: request.method,
|
|
28
62
|
allowed_methods: ["POST"],
|
|
29
|
-
}), {
|
|
30
|
-
status: 405,
|
|
31
|
-
headers: { "Content-Type": "application/json" },
|
|
32
63
|
});
|
|
33
64
|
}
|
|
34
65
|
return this.handleClearCache(request);
|
|
35
66
|
}
|
|
36
67
|
// Provide helpful error message for unknown admin routes
|
|
37
|
-
return
|
|
38
|
-
success: false,
|
|
39
|
-
error: "Admin endpoint not found",
|
|
68
|
+
return this.createErrorResponse("endpoint_not_found", "Admin endpoint not found", 404, {
|
|
40
69
|
endpoint: url.pathname,
|
|
41
70
|
available_endpoints: ["/admin/clear-cache"],
|
|
42
71
|
method: request.method,
|
|
43
72
|
hint: "Only POST /admin/clear-cache is supported. Ensure admin endpoints are enabled in runtime config.",
|
|
44
|
-
}), {
|
|
45
|
-
status: 404,
|
|
46
|
-
headers: { "Content-Type": "application/json" },
|
|
47
73
|
});
|
|
48
74
|
}
|
|
49
75
|
/**
|
|
@@ -51,28 +77,17 @@ export class AdminService {
|
|
|
51
77
|
*/
|
|
52
78
|
async handleClearCache(request) {
|
|
53
79
|
try {
|
|
54
|
-
// Parse request body
|
|
55
|
-
const body =
|
|
56
|
-
const
|
|
57
|
-
if (!
|
|
58
|
-
return
|
|
59
|
-
success: false,
|
|
60
|
-
error: "Bad Request - agent_did required in body",
|
|
61
|
-
}), {
|
|
62
|
-
status: 400,
|
|
63
|
-
headers: { "Content-Type": "application/json" },
|
|
64
|
-
});
|
|
80
|
+
// Parse and validate request body
|
|
81
|
+
const body = await request.json().catch(() => ({}));
|
|
82
|
+
const validationResult = clearCacheRequestSchema.safeParse(body);
|
|
83
|
+
if (!validationResult.success) {
|
|
84
|
+
return this.createErrorResponse("validation_error", "Bad Request - agent_did required in body", 400, { validation_errors: validationResult.error.errors });
|
|
65
85
|
}
|
|
86
|
+
const { agent_did: agentDid } = validationResult.data;
|
|
66
87
|
// Extract API key from Authorization header
|
|
67
88
|
const authHeader = request.headers.get("Authorization");
|
|
68
89
|
if (!authHeader || !authHeader.startsWith("Bearer ")) {
|
|
69
|
-
return
|
|
70
|
-
success: false,
|
|
71
|
-
error: "Unauthorized - Missing or invalid Authorization header",
|
|
72
|
-
}), {
|
|
73
|
-
status: 401,
|
|
74
|
-
headers: { "Content-Type": "application/json" },
|
|
75
|
-
});
|
|
90
|
+
return this.createErrorResponse("unauthorized", "Unauthorized - Missing or invalid Authorization header", 401);
|
|
76
91
|
}
|
|
77
92
|
const apiKey = authHeader.slice(7); // Remove "Bearer " prefix
|
|
78
93
|
// Validate API key by making a test call to AgentShield
|
|
@@ -88,25 +103,15 @@ export class AdminService {
|
|
|
88
103
|
});
|
|
89
104
|
if (!validationResponse.ok) {
|
|
90
105
|
console.warn("[Admin] API key validation failed:", validationResponse.status);
|
|
91
|
-
return
|
|
92
|
-
success: false,
|
|
93
|
-
error: "Unauthorized - Invalid API key",
|
|
94
|
-
}), {
|
|
95
|
-
status: 401,
|
|
96
|
-
headers: { "Content-Type": "application/json" },
|
|
97
|
-
});
|
|
106
|
+
return this.createErrorResponse("invalid_api_key", "Unauthorized - Invalid API key", 401);
|
|
98
107
|
}
|
|
99
108
|
// API key is valid, proceed to clear cache
|
|
100
109
|
console.log("[Admin] API key validated successfully");
|
|
101
110
|
}
|
|
102
111
|
catch (error) {
|
|
103
112
|
console.error("[Admin] API key validation error:", error);
|
|
104
|
-
return
|
|
105
|
-
|
|
106
|
-
error: "Failed to validate API key with AgentShield",
|
|
107
|
-
}), {
|
|
108
|
-
status: 500,
|
|
109
|
-
headers: { "Content-Type": "application/json" },
|
|
113
|
+
return this.createErrorResponse("validation_failed", "Failed to validate API key with AgentShield", 500, {
|
|
114
|
+
error_message: error instanceof Error ? error.message : String(error),
|
|
110
115
|
});
|
|
111
116
|
}
|
|
112
117
|
// Clear cache from KV
|
|
@@ -115,13 +120,8 @@ export class AdminService {
|
|
|
115
120
|
const projectId = this.env.AGENTSHIELD_PROJECT_ID;
|
|
116
121
|
const kvNamespace = this.env.TOOL_PROTECTION_KV;
|
|
117
122
|
if (!kvNamespace) {
|
|
118
|
-
return
|
|
119
|
-
success: false,
|
|
120
|
-
error: "Tool protection KV namespace not configured",
|
|
123
|
+
return this.createErrorResponse("configuration_error", "Tool protection KV namespace not configured", 500, {
|
|
121
124
|
hint: "Ensure TOOL_PROTECTION_KV is bound in wrangler.toml",
|
|
122
|
-
}), {
|
|
123
|
-
status: 500,
|
|
124
|
-
headers: { "Content-Type": "application/json" },
|
|
125
125
|
});
|
|
126
126
|
}
|
|
127
127
|
// Determine cache key format (matches ToolProtectionService logic)
|
|
@@ -133,28 +133,100 @@ export class AdminService {
|
|
|
133
133
|
const cacheKey = `tool-protection:${cacheKeyBase}`;
|
|
134
134
|
// Also clear the old agent-scoped key if using project-scoped (for migration)
|
|
135
135
|
const oldCacheKey = projectId
|
|
136
|
-
? `tool-protection:${agentDid}`
|
|
136
|
+
? `tool-protection:agent:${agentDid}`
|
|
137
137
|
: null;
|
|
138
138
|
// Log before and after for debugging
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
139
|
+
let before = null;
|
|
140
|
+
let beforeOld = null;
|
|
141
|
+
let deleteErrors = [];
|
|
142
|
+
try {
|
|
143
|
+
before = await kvNamespace.get(cacheKey);
|
|
144
|
+
}
|
|
145
|
+
catch (error) {
|
|
146
|
+
console.warn("[Admin] Failed to check cache key before deletion:", error);
|
|
147
|
+
}
|
|
143
148
|
if (oldCacheKey) {
|
|
144
|
-
|
|
149
|
+
try {
|
|
150
|
+
beforeOld = await kvNamespace.get(oldCacheKey);
|
|
151
|
+
}
|
|
152
|
+
catch (error) {
|
|
153
|
+
console.warn("[Admin] Failed to check old cache key before deletion:", error);
|
|
154
|
+
}
|
|
145
155
|
}
|
|
146
|
-
|
|
147
|
-
|
|
156
|
+
// Delete both keys with error handling
|
|
157
|
+
try {
|
|
158
|
+
await kvNamespace.delete(cacheKey);
|
|
159
|
+
console.log("[Admin] Successfully deleted cache key:", cacheKey);
|
|
160
|
+
}
|
|
161
|
+
catch (error) {
|
|
162
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
163
|
+
deleteErrors.push(`Failed to delete ${cacheKey}: ${errorMsg}`);
|
|
164
|
+
console.error("[Admin] Failed to delete cache key:", cacheKey, error);
|
|
165
|
+
}
|
|
166
|
+
if (oldCacheKey) {
|
|
167
|
+
try {
|
|
168
|
+
await kvNamespace.delete(oldCacheKey);
|
|
169
|
+
console.log("[Admin] Successfully deleted old cache key:", oldCacheKey);
|
|
170
|
+
}
|
|
171
|
+
catch (error) {
|
|
172
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
173
|
+
deleteErrors.push(`Failed to delete ${oldCacheKey}: ${errorMsg}`);
|
|
174
|
+
console.error("[Admin] Failed to delete old cache key:", oldCacheKey, error);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
// Verify deletion
|
|
178
|
+
let after = null;
|
|
179
|
+
let verificationSucceeded = false;
|
|
180
|
+
try {
|
|
181
|
+
after = await kvNamespace.get(cacheKey);
|
|
182
|
+
verificationSucceeded = true;
|
|
183
|
+
}
|
|
184
|
+
catch (error) {
|
|
185
|
+
console.warn("[Admin] Failed to verify cache deletion:", error);
|
|
186
|
+
// Verification failed - we cannot determine if cache was cleared
|
|
187
|
+
// Set cleared to false to indicate unknown status
|
|
188
|
+
verificationSucceeded = false;
|
|
189
|
+
}
|
|
190
|
+
// Only consider cache cleared if verification succeeded AND after is null
|
|
191
|
+
// If verification failed, we don't know the status, so set cleared to false
|
|
192
|
+
const cleared = verificationSucceeded && !after;
|
|
193
|
+
const hadValue = !!before;
|
|
194
|
+
const hadOldValue = !!beforeOld;
|
|
195
|
+
console.log("[Admin] Cache clear operation completed", {
|
|
148
196
|
agentDid: agentDid.slice(0, 20) + "...",
|
|
149
197
|
projectId: projectId || "none",
|
|
150
198
|
cacheKey,
|
|
151
199
|
oldCacheKey: oldCacheKey || "none",
|
|
152
|
-
hadValue
|
|
153
|
-
hadOldValue
|
|
154
|
-
cleared
|
|
200
|
+
hadValue,
|
|
201
|
+
hadOldValue,
|
|
202
|
+
cleared,
|
|
203
|
+
verificationSucceeded,
|
|
204
|
+
deleteErrors: deleteErrors.length > 0 ? deleteErrors : undefined,
|
|
155
205
|
});
|
|
156
|
-
|
|
157
|
-
|
|
206
|
+
// If there were errors but we still cleared the main key, consider it a partial success
|
|
207
|
+
if (deleteErrors.length > 0 && !cleared) {
|
|
208
|
+
return this.createErrorResponse("partial_failure", "Partial cache clear failure", 500, {
|
|
209
|
+
delete_errors: deleteErrors,
|
|
210
|
+
cache_key: cacheKey,
|
|
211
|
+
old_cache_key: oldCacheKey || null,
|
|
212
|
+
had_value: hadValue,
|
|
213
|
+
had_old_value: hadOldValue,
|
|
214
|
+
cleared: cleared,
|
|
215
|
+
verification_succeeded: verificationSucceeded,
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
// If verification failed, we cannot confirm deletion status
|
|
219
|
+
if (!verificationSucceeded) {
|
|
220
|
+
return this.createErrorResponse("verification_failed", "Cache deletion attempted but verification failed - status unknown", 500, {
|
|
221
|
+
cache_key: cacheKey,
|
|
222
|
+
old_cache_key: oldCacheKey || null,
|
|
223
|
+
had_value: hadValue,
|
|
224
|
+
had_old_value: hadOldValue,
|
|
225
|
+
delete_errors: deleteErrors.length > 0 ? deleteErrors : undefined,
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
// Build typed response data
|
|
229
|
+
const responseData = {
|
|
158
230
|
message: "Cache cleared successfully. Next tool call will fetch fresh config from AgentShield.",
|
|
159
231
|
agent_did: agentDid,
|
|
160
232
|
project_id: projectId || null,
|
|
@@ -163,20 +235,28 @@ export class AdminService {
|
|
|
163
235
|
had_value: !!before,
|
|
164
236
|
had_old_value: !!beforeOld,
|
|
165
237
|
cleared: !after,
|
|
166
|
-
}
|
|
238
|
+
};
|
|
239
|
+
// Wrap in AgentShield API response format
|
|
240
|
+
const apiResponse = {
|
|
241
|
+
success: true,
|
|
242
|
+
data: responseData,
|
|
243
|
+
metadata: {
|
|
244
|
+
requestId: crypto.randomUUID(),
|
|
245
|
+
timestamp: new Date().toISOString(),
|
|
246
|
+
},
|
|
247
|
+
};
|
|
248
|
+
return new Response(JSON.stringify(apiResponse), {
|
|
167
249
|
status: 200,
|
|
168
|
-
headers: {
|
|
250
|
+
headers: {
|
|
251
|
+
"Content-Type": "application/json",
|
|
252
|
+
...MCP_CORS_HEADERS,
|
|
253
|
+
},
|
|
169
254
|
});
|
|
170
255
|
}
|
|
171
256
|
catch (error) {
|
|
172
257
|
console.error("[Admin] Failed to clear cache:", error);
|
|
173
|
-
return
|
|
174
|
-
|
|
175
|
-
error: "Internal error clearing cache",
|
|
176
|
-
details: error instanceof Error ? error.message : String(error),
|
|
177
|
-
}), {
|
|
178
|
-
status: 500,
|
|
179
|
-
headers: { "Content-Type": "application/json" },
|
|
258
|
+
return this.createErrorResponse("internal_error", "Internal error clearing cache", 500, {
|
|
259
|
+
error_message: error instanceof Error ? error.message : String(error),
|
|
180
260
|
});
|
|
181
261
|
}
|
|
182
262
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin.service.js","sourceRoot":"","sources":["../../src/services/admin.service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"admin.service.js","sourceRoot":"","sources":["../../src/services/admin.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
*
|
|
14
14
|
* Related Spec: MCP-I Phase 0 Implementation Plan, Task B.4
|
|
15
15
|
*/
|
|
16
|
-
import type { ConsentPageConfig } from "@kya-os/contracts/consent";
|
|
16
|
+
import type { ConsentPageConfig, OAuthIdentity } from "@kya-os/contracts/consent";
|
|
17
17
|
/**
|
|
18
18
|
* Consent Page Renderer
|
|
19
19
|
*
|
|
@@ -24,9 +24,10 @@ export declare class ConsentPageRenderer {
|
|
|
24
24
|
* Render consent page HTML
|
|
25
25
|
*
|
|
26
26
|
* @param config - Consent page configuration (will be sanitized)
|
|
27
|
+
* @param oauthIdentity - Optional OAuth identity from cookie (Phase 4 PR #4)
|
|
27
28
|
* @returns HTML string
|
|
28
29
|
*/
|
|
29
|
-
render(config: ConsentPageConfig): string;
|
|
30
|
+
render(config: ConsentPageConfig, oauthIdentity?: OAuthIdentity): string;
|
|
30
31
|
/**
|
|
31
32
|
* Render success page HTML
|
|
32
33
|
*
|
|
@@ -123,6 +124,7 @@ export declare class ConsentPageRenderer {
|
|
|
123
124
|
* Render form
|
|
124
125
|
*
|
|
125
126
|
* @param config - Sanitized configuration
|
|
127
|
+
* @param oauthIdentity - Optional OAuth identity (Phase 4 PR #4)
|
|
126
128
|
* @returns HTML string
|
|
127
129
|
*/
|
|
128
130
|
private renderForm;
|
|
@@ -130,6 +132,7 @@ export declare class ConsentPageRenderer {
|
|
|
130
132
|
* Render JavaScript for form handling
|
|
131
133
|
*
|
|
132
134
|
* @param config - Sanitized configuration
|
|
135
|
+
* @param _oauthIdentity - Optional OAuth identity (Phase 4 PR #4) - not used directly, extracted from form
|
|
133
136
|
* @returns HTML string
|
|
134
137
|
*/
|
|
135
138
|
private renderScript;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consent-page-renderer.d.ts","sourceRoot":"","sources":["../../src/services/consent-page-renderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EACV,iBAAiB,
|
|
1
|
+
{"version":3,"file":"consent-page-renderer.d.ts","sourceRoot":"","sources":["../../src/services/consent-page-renderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EACV,iBAAiB,EAIjB,aAAa,EACd,MAAM,2BAA2B,CAAC;AAEnC;;;;GAIG;AACH,qBAAa,mBAAmB;IAC9B;;;;;;OAMG;IACH,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,aAAa,CAAC,EAAE,aAAa,GAAG,MAAM;IAyBxE;;;;;OAKG;IACH,aAAa,CAAC,MAAM,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,MAAM;IA6B5E;;;;;;;OAOG;IACH,OAAO,CAAC,UAAU;IAYlB;;;;;OAKG;IACH,OAAO,CAAC,WAAW;IAanB;;;;;OAKG;IACH,OAAO,CAAC,aAAa;IASrB;;;;;;;;OAQG;IACH,OAAO,CAAC,cAAc;IA0BtB;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IAkCxB;;;;;OAKG;IACH,OAAO,CAAC,aAAa;IASrB;;;;;OAKG;IACH,OAAO,CAAC,mBAAmB;IAkB3B;;;;;OAKG;IACH,OAAO,CAAC,YAAY;IAuBpB;;;;;OAKG;IACH,OAAO,CAAC,YAAY;IA0BpB;;;;;OAKG;IACH,OAAO,CAAC,WAAW;IAqBnB;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IA6D1B;;;;;;OAMG;IACH,OAAO,CAAC,UAAU;IAqDlB;;;;;;OAMG;IACH,OAAO,CAAC,YAAY;CAuIrB"}
|
|
@@ -23,9 +23,10 @@ export class ConsentPageRenderer {
|
|
|
23
23
|
* Render consent page HTML
|
|
24
24
|
*
|
|
25
25
|
* @param config - Consent page configuration (will be sanitized)
|
|
26
|
+
* @param oauthIdentity - Optional OAuth identity from cookie (Phase 4 PR #4)
|
|
26
27
|
* @returns HTML string
|
|
27
28
|
*/
|
|
28
|
-
render(config) {
|
|
29
|
+
render(config, oauthIdentity) {
|
|
29
30
|
const sanitized = this.sanitizeConfig(config);
|
|
30
31
|
return `<!DOCTYPE html>
|
|
31
32
|
<html lang="en">
|
|
@@ -42,9 +43,9 @@ export class ConsentPageRenderer {
|
|
|
42
43
|
${this.renderScopes(sanitized.scopes)}
|
|
43
44
|
${this.renderTerms(sanitized.terms)}
|
|
44
45
|
${this.renderCustomFields(sanitized.customFields)}
|
|
45
|
-
${this.renderForm(sanitized)}
|
|
46
|
+
${this.renderForm(sanitized, oauthIdentity)}
|
|
46
47
|
</div>
|
|
47
|
-
${this.renderScript(sanitized)}
|
|
48
|
+
${this.renderScript(sanitized, oauthIdentity)}
|
|
48
49
|
</body>
|
|
49
50
|
</html>`;
|
|
50
51
|
}
|
|
@@ -250,7 +251,7 @@ export class ConsentPageRenderer {
|
|
|
250
251
|
// Escape logoUrl for HTML attribute to prevent XSS
|
|
251
252
|
const logoUrlEscaped = branding?.logoUrl
|
|
252
253
|
? this.escapeHtml(branding.logoUrl)
|
|
253
|
-
:
|
|
254
|
+
: "";
|
|
254
255
|
const logoHtml = branding?.logoUrl
|
|
255
256
|
? `<img src="${logoUrlEscaped}" alt="${branding.companyName || "Logo"}" class="h-12 w-auto mb-4" />`
|
|
256
257
|
: "";
|
|
@@ -307,7 +308,7 @@ export class ConsentPageRenderer {
|
|
|
307
308
|
? `<p class="text-sm text-gray-600 mb-4">${terms.text}</p>`
|
|
308
309
|
: "";
|
|
309
310
|
// Escape URL for HTML attribute to prevent XSS
|
|
310
|
-
const termsUrlEscaped = terms.url ? this.escapeHtml(terms.url) :
|
|
311
|
+
const termsUrlEscaped = terms.url ? this.escapeHtml(terms.url) : "";
|
|
311
312
|
const termsLink = terms.url
|
|
312
313
|
? `<a href="${termsUrlEscaped}" target="_blank" rel="noopener noreferrer" class="text-blue-600 hover:underline text-sm">View Terms</a>`
|
|
313
314
|
: "";
|
|
@@ -384,9 +385,10 @@ export class ConsentPageRenderer {
|
|
|
384
385
|
* Render form
|
|
385
386
|
*
|
|
386
387
|
* @param config - Sanitized configuration
|
|
388
|
+
* @param oauthIdentity - Optional OAuth identity (Phase 4 PR #4)
|
|
387
389
|
* @returns HTML string
|
|
388
390
|
*/
|
|
389
|
-
renderForm(config) {
|
|
391
|
+
renderForm(config, oauthIdentity) {
|
|
390
392
|
const scopesJson = JSON.stringify(config.scopes);
|
|
391
393
|
const agentDid = config.agentDid;
|
|
392
394
|
const sessionId = config.sessionId;
|
|
@@ -397,8 +399,13 @@ export class ConsentPageRenderer {
|
|
|
397
399
|
// Use single quotes for scopes value to avoid escaping JSON quotes
|
|
398
400
|
// The JSON string contains double quotes, so we use single quotes for the HTML attribute
|
|
399
401
|
const scopesJsonEscaped = scopesJson.replace(/'/g, "'"); // Only escape single quotes
|
|
402
|
+
// Phase 4 PR #4: Add hidden input for OAuth identity (if available)
|
|
403
|
+
const oauthIdentityField = oauthIdentity
|
|
404
|
+
? `<input type="hidden" name="oauth_identity_json" value="${this.escapeHtml(JSON.stringify(oauthIdentity))}" />`
|
|
405
|
+
: "";
|
|
400
406
|
return `
|
|
401
407
|
<form id="consent-form" method="POST" action="${serverUrlEscaped}/consent/approve" class="space-y-4">
|
|
408
|
+
${oauthIdentityField}
|
|
402
409
|
<input type="hidden" name="tool" value="${tool}" />
|
|
403
410
|
<input type="hidden" name="scopes" value='${scopesJsonEscaped}' />
|
|
404
411
|
<input type="hidden" name="agent_did" value="${agentDid}" />
|
|
@@ -430,9 +437,10 @@ export class ConsentPageRenderer {
|
|
|
430
437
|
* Render JavaScript for form handling
|
|
431
438
|
*
|
|
432
439
|
* @param config - Sanitized configuration
|
|
440
|
+
* @param _oauthIdentity - Optional OAuth identity (Phase 4 PR #4) - not used directly, extracted from form
|
|
433
441
|
* @returns HTML string
|
|
434
442
|
*/
|
|
435
|
-
renderScript(config) {
|
|
443
|
+
renderScript(config, _oauthIdentity) {
|
|
436
444
|
// serverUrl is already validated, but we need to escape it for JavaScript string
|
|
437
445
|
// Use JSON.stringify to safely embed the URL in JavaScript
|
|
438
446
|
const serverUrlJs = JSON.stringify(config.serverUrl);
|
|
@@ -473,6 +481,18 @@ export class ConsentPageRenderer {
|
|
|
473
481
|
}
|
|
474
482
|
}
|
|
475
483
|
|
|
484
|
+
// Phase 4 PR #4: Extract OAuth identity from hidden input field
|
|
485
|
+
let extractedOAuthIdentity = null;
|
|
486
|
+
try {
|
|
487
|
+
const oauthIdentityJson = formData.get('oauth_identity_json');
|
|
488
|
+
if (oauthIdentityJson && typeof oauthIdentityJson === 'string') {
|
|
489
|
+
extractedOAuthIdentity = JSON.parse(oauthIdentityJson);
|
|
490
|
+
}
|
|
491
|
+
} catch (error) {
|
|
492
|
+
console.warn('Failed to parse OAuth identity:', error);
|
|
493
|
+
// Non-fatal - continue without OAuth identity
|
|
494
|
+
}
|
|
495
|
+
|
|
476
496
|
const data = {
|
|
477
497
|
tool: formData.get('tool'),
|
|
478
498
|
scopes: scopes,
|
|
@@ -480,7 +500,8 @@ export class ConsentPageRenderer {
|
|
|
480
500
|
session_id: formData.get('session_id'),
|
|
481
501
|
project_id: formData.get('project_id'),
|
|
482
502
|
termsAccepted: formData.get('termsAccepted') === 'on',
|
|
483
|
-
customFields: {}
|
|
503
|
+
customFields: {},
|
|
504
|
+
oauth_identity: extractedOAuthIdentity
|
|
484
505
|
};
|
|
485
506
|
|
|
486
507
|
// Collect custom fields
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consent-page-renderer.js","sourceRoot":"","sources":["../../src/services/consent-page-renderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;
|
|
1
|
+
{"version":3,"file":"consent-page-renderer.js","sourceRoot":"","sources":["../../src/services/consent-page-renderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,12 +8,38 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import type { CloudflareEnv } from "../types";
|
|
10
10
|
import type { CloudflareRuntime } from "../runtime";
|
|
11
|
+
import type { OAuthIdentity } from "@kya-os/contracts/consent";
|
|
11
12
|
export declare class ConsentService {
|
|
12
13
|
private configService;
|
|
13
14
|
private renderer;
|
|
14
15
|
private env;
|
|
15
16
|
private runtime?;
|
|
17
|
+
private userDidManager?;
|
|
16
18
|
constructor(env: CloudflareEnv, runtime?: CloudflareRuntime);
|
|
19
|
+
/**
|
|
20
|
+
* Get or generate User DID for a session
|
|
21
|
+
*
|
|
22
|
+
* Phase 4 PR #1: Generates ephemeral DIDs for sessions
|
|
23
|
+
* Phase 4 PR #3: Checks OAuth mappings for persistent DIDs
|
|
24
|
+
*
|
|
25
|
+
* @param sessionId - Session ID
|
|
26
|
+
* @param oauthIdentity - Optional OAuth provider identity
|
|
27
|
+
* @returns User DID (did:key format)
|
|
28
|
+
*/
|
|
29
|
+
private getUserDidForSession;
|
|
30
|
+
/**
|
|
31
|
+
* Link OAuth identity to User DID
|
|
32
|
+
*
|
|
33
|
+
* Maps OAuth provider identity (provider + subject) to a persistent User DID.
|
|
34
|
+
* If an ephemeral DID exists for the session, it becomes persistent.
|
|
35
|
+
*
|
|
36
|
+
* Phase 4 PR #3: OAuth Identity Linking
|
|
37
|
+
*
|
|
38
|
+
* @param oauthIdentity - OAuth provider identity
|
|
39
|
+
* @param sessionId - Current session ID (for ephemeral DID lookup)
|
|
40
|
+
* @returns Persistent User DID
|
|
41
|
+
*/
|
|
42
|
+
linkOAuthToUserDid(oauthIdentity: OAuthIdentity, sessionId: string): Promise<string>;
|
|
17
43
|
/**
|
|
18
44
|
* Handle consent requests
|
|
19
45
|
*
|
|
@@ -76,5 +102,31 @@ export declare class ConsentService {
|
|
|
76
102
|
* @returns HTML response
|
|
77
103
|
*/
|
|
78
104
|
private renderSuccessPage;
|
|
105
|
+
/**
|
|
106
|
+
* Build delegation request with error-based format detection
|
|
107
|
+
*
|
|
108
|
+
* Uses Day0 config to determine field name and includes issuerDid when available.
|
|
109
|
+
*/
|
|
110
|
+
private buildDelegationRequest;
|
|
111
|
+
/**
|
|
112
|
+
* Build full DelegationRecord format request (future format)
|
|
113
|
+
*/
|
|
114
|
+
private buildFullFormatRequest;
|
|
115
|
+
/**
|
|
116
|
+
* Build simplified format request with proper field name
|
|
117
|
+
*/
|
|
118
|
+
private buildSimplifiedFormatRequest;
|
|
119
|
+
/**
|
|
120
|
+
* Try API call with error-based format detection
|
|
121
|
+
*/
|
|
122
|
+
private tryAPICall;
|
|
123
|
+
/**
|
|
124
|
+
* Make API call and parse response
|
|
125
|
+
*/
|
|
126
|
+
private makeAPICall;
|
|
127
|
+
/**
|
|
128
|
+
* Cache successful format preference
|
|
129
|
+
*/
|
|
130
|
+
private cacheFormatPreference;
|
|
79
131
|
}
|
|
80
132
|
//# sourceMappingURL=consent.service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consent.service.d.ts","sourceRoot":"","sources":["../../src/services/consent.service.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"consent.service.d.ts","sourceRoot":"","sources":["../../src/services/consent.service.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAWpD,OAAO,KAAK,EAIV,aAAa,EACd,MAAM,2BAA2B,CAAC;AAenC,qBAAa,cAAc;IACzB,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,GAAG,CAAgB;IAC3B,OAAO,CAAC,OAAO,CAAC,CAAoB;IACpC,OAAO,CAAC,cAAc,CAAC,CAAiB;gBAE5B,GAAG,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,iBAAiB;IAO3D;;;;;;;;;OASG;YACW,oBAAoB;IA4GlC;;;;;;;;;;;OAWG;IACG,kBAAkB,CACtB,aAAa,EAAE,aAAa,EAC5B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC;IAuElB;;;;;;;;;;OAUG;IACG,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;IAqBjD;;;;;;;;;;;;;OAaG;YACW,iBAAiB;IA0J/B;;;;;;;;OAQG;YACW,cAAc;IA8F5B;;;;;OAKG;YACW,gBAAgB;IAyL9B;;;;;;;;;OASG;YACW,oBAAoB;IAgFlC;;;;;OAKG;YACW,iBAAiB;IAmC/B;;;;OAIG;YACW,sBAAsB;IA+EpC;;OAEG;YACW,sBAAsB;IAuBpC;;OAEG;IACH,OAAO,CAAC,4BAA4B;IAwCpC;;OAEG;YACW,UAAU;IAqDxB;;OAEG;YACW,WAAW;IAoFzB;;OAEG;YACW,qBAAqB;CAyBpC"}
|