@kya-os/mcp-i-cloudflare 1.15.0 → 1.16.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 +37 -0
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +81 -51
- package/dist/agent.js.map +1 -1
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +9 -12
- package/dist/app.js.map +1 -1
- package/dist/audit/deployment-binding.d.ts +12 -12
- package/dist/config.d.ts +28 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +16 -1
- package/dist/config.js.map +1 -1
- package/dist/constants/storage-keys.d.ts +9 -0
- package/dist/constants/storage-keys.d.ts.map +1 -1
- package/dist/constants/storage-keys.js +9 -0
- package/dist/constants/storage-keys.js.map +1 -1
- package/dist/constants.d.ts +6 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +6 -0
- package/dist/constants.js.map +1 -1
- package/dist/delegation-http/bearer-retry.d.ts +20 -4
- package/dist/delegation-http/bearer-retry.d.ts.map +1 -1
- package/dist/delegation-http/bearer-retry.js +56 -10
- package/dist/delegation-http/bearer-retry.js.map +1 -1
- package/dist/delegation-http/consent-anchor-bridge.d.ts.map +1 -1
- package/dist/delegation-http/consent-anchor-bridge.js +72 -13
- package/dist/delegation-http/consent-anchor-bridge.js.map +1 -1
- package/dist/delegation-http/native-oauth-state.d.ts +16 -0
- package/dist/delegation-http/native-oauth-state.d.ts.map +1 -1
- package/dist/delegation-http/native-oauth-state.js +24 -9
- package/dist/delegation-http/native-oauth-state.js.map +1 -1
- package/dist/delegation-http/native-oauth.d.ts.map +1 -1
- package/dist/delegation-http/native-oauth.js +26 -7
- package/dist/delegation-http/native-oauth.js.map +1 -1
- package/dist/delegation-http/oauth-recovery.d.ts +3 -0
- package/dist/delegation-http/oauth-recovery.d.ts.map +1 -0
- package/dist/delegation-http/oauth-recovery.js +39 -0
- package/dist/delegation-http/oauth-recovery.js.map +1 -0
- package/dist/delegation-http/remote-issuer.d.ts +15 -0
- package/dist/delegation-http/remote-issuer.d.ts.map +1 -1
- package/dist/delegation-http/remote-issuer.js +27 -8
- package/dist/delegation-http/remote-issuer.js.map +1 -1
- package/dist/helpers/env-mapper.d.ts.map +1 -1
- package/dist/helpers/env-mapper.js +28 -6
- package/dist/helpers/env-mapper.js.map +1 -1
- package/dist/index.d.ts +6 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -1
- package/dist/index.js.map +1 -1
- package/dist/proof-generator.d.ts +8 -7
- package/dist/proof-generator.d.ts.map +1 -1
- package/dist/proof-generator.js +32 -34
- package/dist/proof-generator.js.map +1 -1
- package/dist/runtime/oauth-handler.d.ts.map +1 -1
- package/dist/runtime/oauth-handler.js +43 -31
- package/dist/runtime/oauth-handler.js.map +1 -1
- package/dist/runtime/tool-activity.d.ts +31 -4
- package/dist/runtime/tool-activity.d.ts.map +1 -1
- package/dist/runtime/tool-activity.js +48 -0
- package/dist/runtime/tool-activity.js.map +1 -1
- package/dist/runtime.d.ts +31 -0
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +65 -0
- package/dist/runtime.js.map +1 -1
- package/dist/security/admission-refusal.d.ts +32 -0
- package/dist/security/admission-refusal.d.ts.map +1 -0
- package/dist/security/admission-refusal.js +97 -0
- package/dist/security/admission-refusal.js.map +1 -0
- package/dist/security/card-proof-support.d.ts +66 -0
- package/dist/security/card-proof-support.d.ts.map +1 -0
- package/dist/security/card-proof-support.js +121 -0
- package/dist/security/card-proof-support.js.map +1 -0
- package/dist/security/mcp-admission.d.ts +28 -2
- package/dist/security/mcp-admission.d.ts.map +1 -1
- package/dist/security/mcp-admission.js +129 -29
- package/dist/security/mcp-admission.js.map +1 -1
- package/dist/security/mcp-holder-admission.d.ts +12 -1
- package/dist/security/mcp-holder-admission.d.ts.map +1 -1
- package/dist/security/mcp-holder-admission.js +46 -8
- package/dist/security/mcp-holder-admission.js.map +1 -1
- package/dist/security/presented-delegation.d.ts +10 -0
- package/dist/security/presented-delegation.d.ts.map +1 -1
- package/dist/security/presented-delegation.js +23 -3
- package/dist/security/presented-delegation.js.map +1 -1
- package/dist/services/admin.service.d.ts.map +1 -1
- package/dist/services/admin.service.js +24 -9
- package/dist/services/admin.service.js.map +1 -1
- package/dist/services/approval-route.d.ts +48 -0
- package/dist/services/approval-route.d.ts.map +1 -0
- package/dist/services/approval-route.js +87 -0
- package/dist/services/approval-route.js.map +1 -0
- package/dist/services/consent-config.service.d.ts.map +1 -1
- package/dist/services/consent-config.service.js +20 -5
- package/dist/services/consent-config.service.js.map +1 -1
- package/dist/services/consent.service.d.ts +113 -5
- package/dist/services/consent.service.d.ts.map +1 -1
- package/dist/services/consent.service.js +746 -904
- package/dist/services/consent.service.js.map +1 -1
- package/dist/services/credential-auth.handler.d.ts +2 -0
- package/dist/services/credential-auth.handler.d.ts.map +1 -1
- package/dist/services/credential-auth.handler.js +19 -3
- package/dist/services/credential-auth.handler.js.map +1 -1
- package/dist/services/delegation-trust.d.ts +97 -0
- package/dist/services/delegation-trust.d.ts.map +1 -0
- package/dist/services/delegation-trust.js +378 -0
- package/dist/services/delegation-trust.js.map +1 -0
- package/dist/services/delegation.service.d.ts +56 -14
- package/dist/services/delegation.service.d.ts.map +1 -1
- package/dist/services/delegation.service.js +160 -68
- package/dist/services/delegation.service.js.map +1 -1
- package/dist/services/multipart-parser.d.ts +73 -0
- package/dist/services/multipart-parser.d.ts.map +1 -0
- package/dist/services/multipart-parser.js +116 -0
- package/dist/services/multipart-parser.js.map +1 -0
- package/dist/services/proof.service.d.ts +38 -0
- package/dist/services/proof.service.d.ts.map +1 -1
- package/dist/services/proof.service.js +41 -2
- package/dist/services/proof.service.js.map +1 -1
- package/dist/types.d.ts +17 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/checkpoint-project-id.d.ts +31 -0
- package/dist/utils/checkpoint-project-id.d.ts.map +1 -0
- package/dist/utils/checkpoint-project-id.js +35 -0
- package/dist/utils/checkpoint-project-id.js.map +1 -0
- package/dist/utils/oauth-profile.d.ts +7 -0
- package/dist/utils/oauth-profile.d.ts.map +1 -0
- package/dist/utils/oauth-profile.js +24 -0
- package/dist/utils/oauth-profile.js.map +1 -0
- package/package.json +7 -6
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"approval-route.d.ts","sourceRoot":"","sources":["../../src/services/approval-route.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,WAAW,GAAG,OAAO,CAAC;AAmBjE;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,GAAG,IAAI,CAIvE;AAED,oEAAoE;AACpE,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAGvD;AAED,8EAA8E;AAC9E,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAE5D;AAED;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,EAAE,SAAS,MAAM,EAevD,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,YAAY,EAAE,OAAO,GACpB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAazB"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Routing and input hygiene for `/consent/approve`.
|
|
3
|
+
*
|
|
4
|
+
* SECURITY: `provider_type` decides which identity check an approval goes
|
|
5
|
+
* through, so it is matched against an allowlist. A value outside it used to
|
|
6
|
+
* fall through to an unchecked path that minted under a DID looked up from the
|
|
7
|
+
* caller's own `oauth_identity`, and that labelled the grant with the caller's
|
|
8
|
+
* `customFields`. Everything that names who signed in, or how, is now set by
|
|
9
|
+
* the server; the caller only chooses the route.
|
|
10
|
+
*
|
|
11
|
+
* Pure functions, no I/O.
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* Every `provider_type` a consent page sends today. `credential` is the
|
|
15
|
+
* legacy spelling of `password`; `oauth` and `oauth2` are the two spellings of
|
|
16
|
+
* the post-OAuth clickwrap.
|
|
17
|
+
*/
|
|
18
|
+
const APPROVAL_ROUTES = new Map([
|
|
19
|
+
["none", "clickwrap"],
|
|
20
|
+
["credential", "credential"],
|
|
21
|
+
["password", "credential"],
|
|
22
|
+
["oauth", "oauth"],
|
|
23
|
+
["oauth2", "oauth"],
|
|
24
|
+
]);
|
|
25
|
+
function normalizeLabel(raw) {
|
|
26
|
+
return typeof raw === "string" ? raw.trim().toLowerCase() : undefined;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Map a caller's `provider_type` to its route, or `null` when it is missing,
|
|
30
|
+
* not a string, or not one of the allowed values.
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* resolveApprovalRoute(" OAuth2 "); // "oauth"
|
|
34
|
+
* resolveApprovalRoute("magic_link"); // null
|
|
35
|
+
*/
|
|
36
|
+
export function resolveApprovalRoute(raw) {
|
|
37
|
+
const label = normalizeLabel(raw);
|
|
38
|
+
if (label === undefined)
|
|
39
|
+
return null;
|
|
40
|
+
return APPROVAL_ROUTES.get(label) ?? null;
|
|
41
|
+
}
|
|
42
|
+
/** True when `oauth_provider_type` marks a post-OAuth clickwrap. */
|
|
43
|
+
export function isPostOAuthMarker(raw) {
|
|
44
|
+
const label = normalizeLabel(raw);
|
|
45
|
+
return label === "oauth" || label === "oauth2";
|
|
46
|
+
}
|
|
47
|
+
/** True when `credential_provider_type` marks a post-credential clickwrap. */
|
|
48
|
+
export function isPostCredentialMarker(raw) {
|
|
49
|
+
return normalizeLabel(raw) === "password";
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* `customFields` keys the server owns. Checkpoint reads the delegation's
|
|
53
|
+
* authorization type and provider from these, and the dashboard shows the
|
|
54
|
+
* user fields, so a caller must never set them.
|
|
55
|
+
*/
|
|
56
|
+
export const SERVER_OWNED_CUSTOM_FIELDS = [
|
|
57
|
+
"provider",
|
|
58
|
+
"oauth_provider",
|
|
59
|
+
"provider_type",
|
|
60
|
+
"authorization",
|
|
61
|
+
"authorization_type",
|
|
62
|
+
"issuer_did",
|
|
63
|
+
"subject_did",
|
|
64
|
+
"user_did",
|
|
65
|
+
"user_identifier",
|
|
66
|
+
"user_email",
|
|
67
|
+
"user_id",
|
|
68
|
+
"credential_user_email",
|
|
69
|
+
"credential_provider_user_id",
|
|
70
|
+
"format_version",
|
|
71
|
+
];
|
|
72
|
+
/**
|
|
73
|
+
* Copy a caller's `customFields` without the server-owned keys. Anything that
|
|
74
|
+
* is not a plain object becomes `{}`.
|
|
75
|
+
*
|
|
76
|
+
* @example
|
|
77
|
+
* stripServerOwnedFields({ note: "hi", provider_type: "oauth" }); // { note: "hi" }
|
|
78
|
+
*/
|
|
79
|
+
export function stripServerOwnedFields(customFields) {
|
|
80
|
+
if (!customFields ||
|
|
81
|
+
typeof customFields !== "object" ||
|
|
82
|
+
Array.isArray(customFields)) {
|
|
83
|
+
return {};
|
|
84
|
+
}
|
|
85
|
+
return Object.fromEntries(Object.entries(customFields).filter(([key]) => !SERVER_OWNED_CUSTOM_FIELDS.includes(key)));
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=approval-route.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"approval-route.js","sourceRoot":"","sources":["../../src/services/approval-route.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAWH;;;;GAIG;AACH,MAAM,eAAe,GAAuC,IAAI,GAAG,CAAC;IAClE,CAAC,MAAM,EAAE,WAAW,CAAC;IACrB,CAAC,YAAY,EAAE,YAAY,CAAC;IAC5B,CAAC,UAAU,EAAE,YAAY,CAAC;IAC1B,CAAC,OAAO,EAAE,OAAO,CAAC;IAClB,CAAC,QAAQ,EAAE,OAAO,CAAC;CACpB,CAAC,CAAC;AAEH,SAAS,cAAc,CAAC,GAAY;IAClC,OAAO,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AACxE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAY;IAC/C,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACrC,OAAO,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AAC5C,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,iBAAiB,CAAC,GAAY;IAC5C,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IAClC,OAAO,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,QAAQ,CAAC;AACjD,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,sBAAsB,CAAC,GAAY;IACjD,OAAO,cAAc,CAAC,GAAG,CAAC,KAAK,UAAU,CAAC;AAC5C,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAsB;IAC3D,UAAU;IACV,gBAAgB;IAChB,eAAe;IACf,eAAe;IACf,oBAAoB;IACpB,YAAY;IACZ,aAAa;IACb,UAAU;IACV,iBAAiB;IACjB,YAAY;IACZ,SAAS;IACT,uBAAuB;IACvB,6BAA6B;IAC7B,gBAAgB;CACjB,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CACpC,YAAqB;IAErB,IACE,CAAC,YAAY;QACb,OAAO,YAAY,KAAK,QAAQ;QAChC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAC3B,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,YAAuC,CAAC,CAAC,MAAM,CAC5D,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,0BAA0B,CAAC,QAAQ,CAAC,GAAG,CAAC,CACrD,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consent-config.service.d.ts","sourceRoot":"","sources":["../../src/services/consent-config.service.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"consent-config.service.d.ts","sourceRoot":"","sources":["../../src/services/consent-config.service.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAG9C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAG7D;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,qBAAqB,CAAC;AAqBtD;;;;GAIG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,GAAG,CAAgB;gBAEf,GAAG,EAAE,aAAa;IAI9B;;;;;;;;;;OAUG;IACG,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAqMrE;;;;;;;OAOG;IACH,OAAO,CAAC,gBAAgB;IAUxB;;;;OAIG;IACG,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAiBxD"}
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
* Related Spec: MCP-I Phase 0 Implementation Plan, Task B.3
|
|
8
8
|
*/
|
|
9
9
|
import { DEFAULT_CHECKPOINT_URL } from "../constants";
|
|
10
|
+
import { isValidCheckpointProjectId } from "../utils/checkpoint-project-id";
|
|
10
11
|
import { getDefaultConsentConfig, DEFAULT_TERMS } from "@kya-os/consent";
|
|
11
12
|
/**
|
|
12
13
|
* Default consent configuration cache TTL (5 minutes)
|
|
@@ -34,12 +35,24 @@ export class ConsentConfigService {
|
|
|
34
35
|
* @returns Consent configuration (always returns valid config, never throws)
|
|
35
36
|
*/
|
|
36
37
|
async getConsentConfig(projectId) {
|
|
38
|
+
// No project id at all (CHECKPOINT_PROJECT_ID unset, or none in the URL)
|
|
39
|
+
// is not a misconfiguration: answer with the defaults, quietly
|
|
40
|
+
if (!projectId) {
|
|
41
|
+
return this.getDefaultConfig();
|
|
42
|
+
}
|
|
43
|
+
// The id comes from the consent URL's query string and goes into a
|
|
44
|
+
// Checkpoint path sent with the server's key: an id that cannot be a
|
|
45
|
+
// Checkpoint project gets the same defaults a failed fetch does
|
|
46
|
+
if (!isValidCheckpointProjectId(projectId)) {
|
|
47
|
+
console.warn("[ConsentConfig] Project id is not a valid Checkpoint project id, using defaults");
|
|
48
|
+
return this.getDefaultConfig();
|
|
49
|
+
}
|
|
37
50
|
const cache = this.env.TOOL_PROTECTION_KV;
|
|
38
51
|
// Check cache first
|
|
39
52
|
if (cache) {
|
|
40
53
|
const cacheKey = `consent:config:${projectId}`;
|
|
41
54
|
try {
|
|
42
|
-
const cached = await cache.get(cacheKey, "json");
|
|
55
|
+
const cached = (await cache.get(cacheKey, "json"));
|
|
43
56
|
if (cached) {
|
|
44
57
|
// ✅ Accept full config from cache (don't validate against limited contracts schema)
|
|
45
58
|
const mergedConfig = {
|
|
@@ -75,7 +88,7 @@ export class ConsentConfigService {
|
|
|
75
88
|
console.warn("[ConsentConfig] No API key configured, using defaults");
|
|
76
89
|
return this.getDefaultConfig();
|
|
77
90
|
}
|
|
78
|
-
const response = await fetch(`${checkpointUrl}/api/v1/bouncer/projects/${projectId}/consent-config`, {
|
|
91
|
+
const response = await fetch(`${checkpointUrl}/api/v1/bouncer/projects/${encodeURIComponent(projectId)}/consent-config`, {
|
|
79
92
|
headers: {
|
|
80
93
|
Authorization: `Bearer ${apiKey}`,
|
|
81
94
|
"Content-Type": "application/json",
|
|
@@ -89,15 +102,17 @@ export class ConsentConfigService {
|
|
|
89
102
|
let configData;
|
|
90
103
|
// Log the raw response structure for debugging
|
|
91
104
|
console.error("[ConsentConfig] Raw API response structure:", {
|
|
92
|
-
hasSuccess:
|
|
93
|
-
hasData:
|
|
105
|
+
hasSuccess: "success" in responseData,
|
|
106
|
+
hasData: "data" in responseData,
|
|
94
107
|
dataKeys: responseData.data ? Object.keys(responseData.data) : null,
|
|
95
108
|
});
|
|
96
109
|
if (responseData.success && responseData.data) {
|
|
97
110
|
// Check if data has a nested 'config' property (older format)
|
|
98
111
|
const data = responseData.data;
|
|
99
112
|
// Note: typeof null === 'object', so we must also check !== null
|
|
100
|
-
if (
|
|
113
|
+
if ("config" in data &&
|
|
114
|
+
typeof data.config === "object" &&
|
|
115
|
+
data.config !== null) {
|
|
101
116
|
configData = data.config;
|
|
102
117
|
}
|
|
103
118
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consent-config.service.js","sourceRoot":"","sources":["../../src/services/consent-config.service.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"consent-config.service.js","sourceRoot":"","sources":["../../src/services/consent-config.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,6 +17,19 @@ export interface ConsentServiceOptions {
|
|
|
17
17
|
/** Server-bound grant limits; see CloudflareRuntimeConfig.delegationMandate. */
|
|
18
18
|
delegationMandate?: DelegationMandateProvider;
|
|
19
19
|
}
|
|
20
|
+
/**
|
|
21
|
+
* Thrown by `isOAuthRequired` when Checkpoint is in use (CHECKPOINT_API_KEY is
|
|
22
|
+
* set) but its answer about the project's sign-in provider cannot be read. The
|
|
23
|
+
* consent page refuses rather than render an approvable consent-only screen.
|
|
24
|
+
*
|
|
25
|
+
* `reason` is fixed text written here, plus at most an error's `name` or an
|
|
26
|
+
* HTTP status (never an upstream error message), so it is safe to log.
|
|
27
|
+
*/
|
|
28
|
+
export declare class OAuthRequirementUnavailableError extends Error {
|
|
29
|
+
readonly projectId: string;
|
|
30
|
+
readonly reason: string;
|
|
31
|
+
constructor(projectId: string, reason: string);
|
|
32
|
+
}
|
|
20
33
|
export declare class ConsentService {
|
|
21
34
|
private configService;
|
|
22
35
|
private renderer;
|
|
@@ -197,6 +210,22 @@ export declare class ConsentService {
|
|
|
197
210
|
* Following spec: https://w3c-ccg.github.io/did-method-key/
|
|
198
211
|
*/
|
|
199
212
|
private generateDidKeyFromPublicKey;
|
|
213
|
+
/**
|
|
214
|
+
* The session's own throwaway DID, or undefined.
|
|
215
|
+
*
|
|
216
|
+
* A session record also holds a signed-in user's DID once the OAuth callback
|
|
217
|
+
* or the credential handler has run (`updateSessionWithIdentity`), and that
|
|
218
|
+
* write keeps the earlier throwaway `keyPair`. So the DID counts as
|
|
219
|
+
* throwaway only when it is the did:key of the key pair stored with it.
|
|
220
|
+
*/
|
|
221
|
+
private sessionThrowawayDid;
|
|
222
|
+
/**
|
|
223
|
+
* A fresh throwaway did:key and its key pair. Nothing is stored.
|
|
224
|
+
*
|
|
225
|
+
* @returns The key pair (its `did` is the throwaway DID), or null if key
|
|
226
|
+
* generation fails
|
|
227
|
+
*/
|
|
228
|
+
private createThrowawayIdentity;
|
|
200
229
|
/**
|
|
201
230
|
* Generate an ephemeral userDid for consent-only flows
|
|
202
231
|
*
|
|
@@ -209,7 +238,10 @@ export declare class ConsentService {
|
|
|
209
238
|
* and used for delegation storage during the current session.
|
|
210
239
|
*
|
|
211
240
|
* @param sessionId - Session ID to associate the ephemeral userDid with
|
|
212
|
-
* @returns Ephemeral userDid (did:key format) or null if generation fails
|
|
241
|
+
* @returns Ephemeral userDid (did:key format), or null if generation fails,
|
|
242
|
+
* the session record can't be read before the write, or the session
|
|
243
|
+
* already holds a signed-in user's DID (which is never returned or
|
|
244
|
+
* overwritten here)
|
|
213
245
|
*/
|
|
214
246
|
generateEphemeralUserDidForSession(sessionId: string): Promise<string | null>;
|
|
215
247
|
/**
|
|
@@ -251,17 +283,51 @@ export declare class ConsentService {
|
|
|
251
283
|
/**
|
|
252
284
|
* Check if OAuth is required for delegation creation
|
|
253
285
|
*
|
|
254
|
-
* Determines if
|
|
255
|
-
*
|
|
256
|
-
* - Project has
|
|
286
|
+
* Determines if a sign-in step must come before consent.
|
|
287
|
+
* Sign-in is required if:
|
|
288
|
+
* - Project has a default sign-in provider configured in Checkpoint
|
|
257
289
|
* - No OAuth identity is present in the request
|
|
258
290
|
*
|
|
291
|
+
* A "credential" default provider (a merchant's own sign-in form) counts as
|
|
292
|
+
* required too. `true` never forces an OAuth redirect by itself: the consent
|
|
293
|
+
* page renders the credential form instead whenever the provider has a
|
|
294
|
+
* credential config.
|
|
295
|
+
*
|
|
259
296
|
* @param projectId - Project ID to check
|
|
260
297
|
* @param oauthIdentity - Optional OAuth identity from cookie
|
|
261
298
|
* @param toolOAuthProvider - Optional tool-specific OAuth provider (takes precedence)
|
|
262
|
-
* @returns True if
|
|
299
|
+
* @returns True if a sign-in step is required
|
|
300
|
+
* @throws OAuthRequirementUnavailableError when CHECKPOINT_API_KEY is set
|
|
301
|
+
* and Checkpoint's config cannot be read (request failed or timed out,
|
|
302
|
+
* non-OK status, unparseable body, or no `oauth` field), whatever
|
|
303
|
+
* `toolProtection` says
|
|
304
|
+
*
|
|
305
|
+
* @example
|
|
306
|
+
* // Checkpoint answers { success: true, data: { config: { oauth: { provider: "github", type: "oauth2" } } } }
|
|
307
|
+
* await consentService.isOAuthRequired("proj123", undefined, undefined, {
|
|
308
|
+
* requiresDelegation: true,
|
|
309
|
+
* requiredScopes: ["cart:write"],
|
|
310
|
+
* }); // true
|
|
263
311
|
*/
|
|
264
312
|
isOAuthRequired(projectId: string, oauthIdentity?: OAuthIdentity, toolOAuthProvider?: string, toolProtection?: import("@kya-os/contracts/tool-protection").ToolProtection): Promise<boolean>;
|
|
313
|
+
/**
|
|
314
|
+
* `isOAuthRequired`, plus the project's default provider when Checkpoint's
|
|
315
|
+
* config is what made sign-in required. The consent page names that
|
|
316
|
+
* provider so the OAuth callback signs it into the identity assertion,
|
|
317
|
+
* without asking Checkpoint a second time.
|
|
318
|
+
*
|
|
319
|
+
* @throws OAuthRequirementUnavailableError as `isOAuthRequired` does
|
|
320
|
+
*/
|
|
321
|
+
private resolveSignInRequirement;
|
|
322
|
+
/**
|
|
323
|
+
* Fetch the project's default sign-in provider from Checkpoint's config
|
|
324
|
+
* (`GET /api/v1/bouncer/projects/{projectId}/config`, `data.config.oauth`).
|
|
325
|
+
*
|
|
326
|
+
* @returns The provider, or null when Checkpoint says the project has none
|
|
327
|
+
* @throws OAuthRequirementUnavailableError when the answer cannot be read
|
|
328
|
+
*/
|
|
329
|
+
private fetchProjectDefaultProvider;
|
|
330
|
+
private oauthRequirementErrorResponse;
|
|
265
331
|
/**
|
|
266
332
|
* Build OAuth authorization URL
|
|
267
333
|
*
|
|
@@ -420,6 +486,41 @@ export declare class ConsentService {
|
|
|
420
486
|
* "no identity resolved at all".
|
|
421
487
|
*/
|
|
422
488
|
private identityAssertionRequiredResponse;
|
|
489
|
+
/**
|
|
490
|
+
* 400 returned by `handleApproval` when `provider_type` is missing or not
|
|
491
|
+
* one of the routes in approval-route.ts. Nothing is minted.
|
|
492
|
+
*/
|
|
493
|
+
private unsupportedProviderTypeResponse;
|
|
494
|
+
/**
|
|
495
|
+
* 503 returned by `handleApproval` when a consent-only approval has a
|
|
496
|
+
* session but no throwaway DID could be made or reused (key generation or a
|
|
497
|
+
* session read failed). Nothing is minted; the user can retry.
|
|
498
|
+
*/
|
|
499
|
+
private identityUnavailableResponse;
|
|
500
|
+
/** A non-empty string, or undefined. */
|
|
501
|
+
private optionalString;
|
|
502
|
+
/**
|
|
503
|
+
* The provider signed into an identity assertion. Call ONLY after
|
|
504
|
+
* `verifyIdentityAssertion` accepted the same token: this decodes the
|
|
505
|
+
* payload and does not check the signature again.
|
|
506
|
+
*/
|
|
507
|
+
private readAssertionProvider;
|
|
508
|
+
/**
|
|
509
|
+
* Keep a credential sign-in's display fields server-side for the clickwrap
|
|
510
|
+
* that follows. Expires with the identity assertion. Best effort: without
|
|
511
|
+
* it the delegation falls back to showing the user DID.
|
|
512
|
+
*/
|
|
513
|
+
private storeCredentialClickwrapUser;
|
|
514
|
+
/**
|
|
515
|
+
* The display fields `storeCredentialClickwrapUser` kept for this session,
|
|
516
|
+
* only when they belong to `userDid` (the asserted user).
|
|
517
|
+
*/
|
|
518
|
+
private readCredentialClickwrapUser;
|
|
519
|
+
/**
|
|
520
|
+
* The OAuth identity the callback recorded on this session, only when the
|
|
521
|
+
* session's user is `userDid` (the asserted user). Used for display fields.
|
|
522
|
+
*/
|
|
523
|
+
private readSessionOAuthUser;
|
|
423
524
|
/**
|
|
424
525
|
* Handle consent approval
|
|
425
526
|
*
|
|
@@ -434,6 +535,9 @@ export declare class ConsentService {
|
|
|
434
535
|
* Create delegation via Checkpoint API
|
|
435
536
|
*
|
|
436
537
|
* @param request - Approval request
|
|
538
|
+
* @param signingKeyPair - Key that signs the delegation VC when the user DID
|
|
539
|
+
* is a throwaway identity not stored on the session (consent-only in a
|
|
540
|
+
* signed-in session). Otherwise the session's own key is used.
|
|
437
541
|
* @returns Delegation creation result
|
|
438
542
|
*/
|
|
439
543
|
private createDelegation;
|
|
@@ -475,6 +579,10 @@ export declare class ConsentService {
|
|
|
475
579
|
* persisting so the call-time enforcement gate (Task B2/B3) reads a
|
|
476
580
|
* consistent value ("password" | "oauth2" | "none" | …). Undefined → the
|
|
477
581
|
* field is omitted and the gate fails safe (never satisfies a typed tool).
|
|
582
|
+
* @param keepSessionUserDid - Keep the session record's existing userDid
|
|
583
|
+
* instead of overwriting it with this delegation's: set when a
|
|
584
|
+
* consent-only grant in a signed-in session was minted under a fresh
|
|
585
|
+
* throwaway DID, so the session keeps its signed-in identity.
|
|
478
586
|
*/
|
|
479
587
|
private storeDelegationToken;
|
|
480
588
|
/**
|
|
@@ -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":"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"}
|