@kya-os/consent 0.1.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.
Files changed (161) hide show
  1. package/dist/constants/auth-modes.d.ts +54 -0
  2. package/dist/constants/auth-modes.d.ts.map +1 -0
  3. package/dist/constants/auth-modes.js +128 -0
  4. package/dist/constants/auth-modes.js.map +1 -0
  5. package/dist/constants/colors.d.ts +38 -0
  6. package/dist/constants/colors.d.ts.map +1 -0
  7. package/dist/constants/colors.js +40 -0
  8. package/dist/constants/colors.js.map +1 -0
  9. package/dist/constants/defaults.d.ts +112 -0
  10. package/dist/constants/defaults.d.ts.map +1 -0
  11. package/dist/constants/defaults.js +146 -0
  12. package/dist/constants/defaults.js.map +1 -0
  13. package/dist/constants/index.d.ts +11 -0
  14. package/dist/constants/index.d.ts.map +1 -0
  15. package/dist/constants/index.js +37 -0
  16. package/dist/constants/index.js.map +1 -0
  17. package/dist/index.d.ts +16 -0
  18. package/dist/index.d.ts.map +1 -0
  19. package/dist/index.js +39 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/resolution/index.d.ts +12 -0
  22. package/dist/resolution/index.d.ts.map +1 -0
  23. package/dist/resolution/index.js +28 -0
  24. package/dist/resolution/index.js.map +1 -0
  25. package/dist/resolution/resolve-branding.d.ts +70 -0
  26. package/dist/resolution/resolve-branding.d.ts.map +1 -0
  27. package/dist/resolution/resolve-branding.js +159 -0
  28. package/dist/resolution/resolve-branding.js.map +1 -0
  29. package/dist/resolution/resolve-config.d.ts +81 -0
  30. package/dist/resolution/resolve-config.d.ts.map +1 -0
  31. package/dist/resolution/resolve-config.js +254 -0
  32. package/dist/resolution/resolve-config.js.map +1 -0
  33. package/dist/resolution/resolve-copy.d.ts +53 -0
  34. package/dist/resolution/resolve-copy.d.ts.map +1 -0
  35. package/dist/resolution/resolve-copy.js +136 -0
  36. package/dist/resolution/resolve-copy.js.map +1 -0
  37. package/dist/schemas/api.schemas.d.ts +984 -0
  38. package/dist/schemas/api.schemas.d.ts.map +1 -0
  39. package/dist/schemas/api.schemas.js +153 -0
  40. package/dist/schemas/api.schemas.js.map +1 -0
  41. package/dist/schemas/branding.schemas.d.ts +100 -0
  42. package/dist/schemas/branding.schemas.d.ts.map +1 -0
  43. package/dist/schemas/branding.schemas.js +57 -0
  44. package/dist/schemas/branding.schemas.js.map +1 -0
  45. package/dist/schemas/config.schemas.d.ts +1182 -0
  46. package/dist/schemas/config.schemas.d.ts.map +1 -0
  47. package/dist/schemas/config.schemas.js +147 -0
  48. package/dist/schemas/config.schemas.js.map +1 -0
  49. package/dist/schemas/index.d.ts +13 -0
  50. package/dist/schemas/index.d.ts.map +1 -0
  51. package/dist/schemas/index.js +29 -0
  52. package/dist/schemas/index.js.map +1 -0
  53. package/dist/schemas/modes.schemas.d.ts +406 -0
  54. package/dist/schemas/modes.schemas.d.ts.map +1 -0
  55. package/dist/schemas/modes.schemas.js +107 -0
  56. package/dist/schemas/modes.schemas.js.map +1 -0
  57. package/dist/security/escape.d.ts +114 -0
  58. package/dist/security/escape.d.ts.map +1 -0
  59. package/dist/security/escape.js +202 -0
  60. package/dist/security/escape.js.map +1 -0
  61. package/dist/security/index.d.ts +10 -0
  62. package/dist/security/index.d.ts.map +1 -0
  63. package/dist/security/index.js +26 -0
  64. package/dist/security/index.js.map +1 -0
  65. package/dist/security/validators.d.ts +98 -0
  66. package/dist/security/validators.d.ts.map +1 -0
  67. package/dist/security/validators.js +210 -0
  68. package/dist/security/validators.js.map +1 -0
  69. package/dist/styles/css-variables.d.ts +78 -0
  70. package/dist/styles/css-variables.d.ts.map +1 -0
  71. package/dist/styles/css-variables.js +129 -0
  72. package/dist/styles/css-variables.js.map +1 -0
  73. package/dist/styles/index.d.ts +12 -0
  74. package/dist/styles/index.d.ts.map +1 -0
  75. package/dist/styles/index.js +28 -0
  76. package/dist/styles/index.js.map +1 -0
  77. package/dist/styles/stylesheet.d.ts +57 -0
  78. package/dist/styles/stylesheet.d.ts.map +1 -0
  79. package/dist/styles/stylesheet.js +204 -0
  80. package/dist/styles/stylesheet.js.map +1 -0
  81. package/dist/styles/tokens.d.ts +141 -0
  82. package/dist/styles/tokens.d.ts.map +1 -0
  83. package/dist/styles/tokens.js +183 -0
  84. package/dist/styles/tokens.js.map +1 -0
  85. package/dist/templates/base/base-template.d.ts +81 -0
  86. package/dist/templates/base/base-template.d.ts.map +1 -0
  87. package/dist/templates/base/base-template.js +282 -0
  88. package/dist/templates/base/base-template.js.map +1 -0
  89. package/dist/templates/base/components.d.ts +120 -0
  90. package/dist/templates/base/components.d.ts.map +1 -0
  91. package/dist/templates/base/components.js +295 -0
  92. package/dist/templates/base/components.js.map +1 -0
  93. package/dist/templates/base/index.d.ts +8 -0
  94. package/dist/templates/base/index.d.ts.map +1 -0
  95. package/dist/templates/base/index.js +26 -0
  96. package/dist/templates/base/index.js.map +1 -0
  97. package/dist/templates/index.d.ts +18 -0
  98. package/dist/templates/index.d.ts.map +1 -0
  99. package/dist/templates/index.js +34 -0
  100. package/dist/templates/index.js.map +1 -0
  101. package/dist/templates/modes/consent-only.template.d.ts +36 -0
  102. package/dist/templates/modes/consent-only.template.d.ts.map +1 -0
  103. package/dist/templates/modes/consent-only.template.js +74 -0
  104. package/dist/templates/modes/consent-only.template.js.map +1 -0
  105. package/dist/templates/modes/credentials.template.d.ts +65 -0
  106. package/dist/templates/modes/credentials.template.d.ts.map +1 -0
  107. package/dist/templates/modes/credentials.template.js +414 -0
  108. package/dist/templates/modes/credentials.template.js.map +1 -0
  109. package/dist/templates/modes/index.d.ts +14 -0
  110. package/dist/templates/modes/index.d.ts.map +1 -0
  111. package/dist/templates/modes/index.js +24 -0
  112. package/dist/templates/modes/index.js.map +1 -0
  113. package/dist/templates/modes/magic-link.template.d.ts +33 -0
  114. package/dist/templates/modes/magic-link.template.d.ts.map +1 -0
  115. package/dist/templates/modes/magic-link.template.js +196 -0
  116. package/dist/templates/modes/magic-link.template.js.map +1 -0
  117. package/dist/templates/modes/oauth.template.d.ts +40 -0
  118. package/dist/templates/modes/oauth.template.d.ts.map +1 -0
  119. package/dist/templates/modes/oauth.template.js +153 -0
  120. package/dist/templates/modes/oauth.template.js.map +1 -0
  121. package/dist/templates/modes/otp.template.d.ts +35 -0
  122. package/dist/templates/modes/otp.template.d.ts.map +1 -0
  123. package/dist/templates/modes/otp.template.js +316 -0
  124. package/dist/templates/modes/otp.template.js.map +1 -0
  125. package/dist/templates/modes/success.template.d.ts +41 -0
  126. package/dist/templates/modes/success.template.d.ts.map +1 -0
  127. package/dist/templates/modes/success.template.js +140 -0
  128. package/dist/templates/modes/success.template.js.map +1 -0
  129. package/dist/templates/registry.d.ts +62 -0
  130. package/dist/templates/registry.d.ts.map +1 -0
  131. package/dist/templates/registry.js +135 -0
  132. package/dist/templates/registry.js.map +1 -0
  133. package/dist/types/api.types.d.ts +134 -0
  134. package/dist/types/api.types.d.ts.map +1 -0
  135. package/dist/types/api.types.js +10 -0
  136. package/dist/types/api.types.js.map +1 -0
  137. package/dist/types/branding.types.d.ts +53 -0
  138. package/dist/types/branding.types.d.ts.map +1 -0
  139. package/dist/types/branding.types.js +10 -0
  140. package/dist/types/branding.types.js.map +1 -0
  141. package/dist/types/config.types.d.ts +201 -0
  142. package/dist/types/config.types.d.ts.map +1 -0
  143. package/dist/types/config.types.js +10 -0
  144. package/dist/types/config.types.js.map +1 -0
  145. package/dist/types/copy.types.d.ts +109 -0
  146. package/dist/types/copy.types.d.ts.map +1 -0
  147. package/dist/types/copy.types.js +10 -0
  148. package/dist/types/copy.types.js.map +1 -0
  149. package/dist/types/index.d.ts +15 -0
  150. package/dist/types/index.d.ts.map +1 -0
  151. package/dist/types/index.js +31 -0
  152. package/dist/types/index.js.map +1 -0
  153. package/dist/types/modes.types.d.ts +197 -0
  154. package/dist/types/modes.types.d.ts.map +1 -0
  155. package/dist/types/modes.types.js +35 -0
  156. package/dist/types/modes.types.js.map +1 -0
  157. package/dist/types/page.types.d.ts +120 -0
  158. package/dist/types/page.types.d.ts.map +1 -0
  159. package/dist/types/page.types.js +10 -0
  160. package/dist/types/page.types.js.map +1 -0
  161. package/package.json +83 -0
@@ -0,0 +1,109 @@
1
+ /**
2
+ * Consent Copy Types
3
+ *
4
+ * Canonical type definitions for consent page copy/text content.
5
+ *
6
+ * @module @kya-os/consent/types/copy
7
+ */
8
+ /**
9
+ * Consent UI Configuration
10
+ *
11
+ * Text content configuration for consent pages.
12
+ * All fields are optional - defaults are applied during resolution.
13
+ */
14
+ export interface ConsentUI {
15
+ /** Page title */
16
+ title?: string;
17
+ /**
18
+ * Description text (may contain [AI Agent] placeholder)
19
+ * The placeholder is replaced with the actual agent name during resolution.
20
+ */
21
+ description?: string;
22
+ /** Expiration notice text prefix (e.g., "This delegation will expire in") */
23
+ expirationText?: string;
24
+ /** Cancel button label */
25
+ cancelButtonText?: string;
26
+ /** Submit/approve button label */
27
+ submitButtonText?: string;
28
+ /** Permissions section header */
29
+ permissionsHeader?: string;
30
+ /** Whether to auto-close window after success */
31
+ autoClose?: boolean;
32
+ /** Whether popup mode is enabled */
33
+ popupEnabled?: boolean;
34
+ /** Theme preference */
35
+ theme?: "light" | "dark" | "auto";
36
+ }
37
+ /**
38
+ * Consent Terms Configuration
39
+ *
40
+ * Terms of service or privacy policy information.
41
+ */
42
+ export interface ConsentTerms {
43
+ /** Terms checkbox label text */
44
+ text?: string;
45
+ /** URL to terms document */
46
+ url?: string;
47
+ /** Version identifier for terms */
48
+ version?: string;
49
+ /** Whether terms acceptance is required */
50
+ required?: boolean;
51
+ }
52
+ /**
53
+ * Consent Success Screen Configuration
54
+ *
55
+ * Configuration for the success page shown after consent approval.
56
+ */
57
+ export interface ConsentSuccess {
58
+ /** Success page title */
59
+ title?: string;
60
+ /** Success page description */
61
+ description?: string;
62
+ /** Whether to show the delegation credential */
63
+ showCredential?: boolean;
64
+ /** Auto-redirect URL after success */
65
+ redirectUrl?: string;
66
+ /** Delay before auto-redirect (seconds) */
67
+ redirectDelay?: number;
68
+ /** Continue button text */
69
+ continueButtonText?: string;
70
+ }
71
+ /**
72
+ * Resolved Consent Copy
73
+ *
74
+ * Fully resolved copy with all required fields populated.
75
+ * Ready for rendering - no undefined values for required fields.
76
+ */
77
+ export interface ResolvedConsentCopy {
78
+ /** Page title */
79
+ title: string;
80
+ /** Raw description (may contain [AI Agent] placeholder) */
81
+ description: string;
82
+ /** Resolved description with agent name substituted */
83
+ resolvedDescription: string;
84
+ /** Expiration notice text */
85
+ expirationText: string;
86
+ /** Cancel button label */
87
+ cancelButtonText: string;
88
+ /** Submit/approve button label */
89
+ submitButtonText: string;
90
+ /** Permissions section header */
91
+ permissionsHeader: string;
92
+ /** Terms checkbox text */
93
+ termsText: string;
94
+ /** Terms URL (optional) */
95
+ termsUrl?: string;
96
+ /** Whether terms acceptance is required */
97
+ termsRequired: boolean;
98
+ /** Success page title */
99
+ successTitle: string;
100
+ /** Raw success page description (may contain [AI Agent] placeholder) */
101
+ successDescription: string;
102
+ /** Resolved success description with agent name substituted */
103
+ resolvedSuccessDescription: string;
104
+ /** Whether to show the delegation credential on success page */
105
+ showCredential: boolean;
106
+ /** Continue button text on success page */
107
+ continueButtonText: string;
108
+ }
109
+ //# sourceMappingURL=copy.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copy.types.d.ts","sourceRoot":"","sources":["../../src/types/copy.types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;GAKG;AACH,MAAM,WAAW,SAAS;IACxB,iBAAiB;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,6EAA6E;IAC7E,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,0BAA0B;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,kCAAkC;IAClC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,iCAAiC;IACjC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,iDAAiD;IACjD,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,oCAAoC;IACpC,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB,uBAAuB;IACvB,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;CACnC;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,gCAAgC;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,4BAA4B;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,mCAAmC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,yBAAyB;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,+BAA+B;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,gDAAgD;IAChD,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB,sCAAsC;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,2CAA2C;IAC3C,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,2BAA2B;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,iBAAiB;IACjB,KAAK,EAAE,MAAM,CAAC;IAEd,2DAA2D;IAC3D,WAAW,EAAE,MAAM,CAAC;IAEpB,uDAAuD;IACvD,mBAAmB,EAAE,MAAM,CAAC;IAE5B,6BAA6B;IAC7B,cAAc,EAAE,MAAM,CAAC;IAEvB,0BAA0B;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IAEzB,kCAAkC;IAClC,gBAAgB,EAAE,MAAM,CAAC;IAEzB,iCAAiC;IACjC,iBAAiB,EAAE,MAAM,CAAC;IAE1B,0BAA0B;IAC1B,SAAS,EAAE,MAAM,CAAC;IAElB,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,2CAA2C;IAC3C,aAAa,EAAE,OAAO,CAAC;IAIvB,yBAAyB;IACzB,YAAY,EAAE,MAAM,CAAC;IAErB,wEAAwE;IACxE,kBAAkB,EAAE,MAAM,CAAC;IAE3B,+DAA+D;IAC/D,0BAA0B,EAAE,MAAM,CAAC;IAEnC,gEAAgE;IAChE,cAAc,EAAE,OAAO,CAAC;IAExB,2CAA2C;IAC3C,kBAAkB,EAAE,MAAM,CAAC;CAC5B"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ /**
3
+ * Consent Copy Types
4
+ *
5
+ * Canonical type definitions for consent page copy/text content.
6
+ *
7
+ * @module @kya-os/consent/types/copy
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ //# sourceMappingURL=copy.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copy.types.js","sourceRoot":"","sources":["../../src/types/copy.types.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Consent Type Definitions
3
+ *
4
+ * Canonical types for consent configuration, branding, copy, and auth modes.
5
+ * These types are the single source of truth shared between MCP-I and AgentShield.
6
+ *
7
+ * @module @kya-os/consent/types
8
+ */
9
+ export * from "./config.types";
10
+ export * from "./branding.types";
11
+ export * from "./copy.types";
12
+ export * from "./modes.types";
13
+ export * from "./page.types";
14
+ export * from "./api.types";
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ /**
3
+ * Consent Type Definitions
4
+ *
5
+ * Canonical types for consent configuration, branding, copy, and auth modes.
6
+ * These types are the single source of truth shared between MCP-I and AgentShield.
7
+ *
8
+ * @module @kya-os/consent/types
9
+ */
10
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ var desc = Object.getOwnPropertyDescriptor(m, k);
13
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
14
+ desc = { enumerable: true, get: function() { return m[k]; } };
15
+ }
16
+ Object.defineProperty(o, k2, desc);
17
+ }) : (function(o, m, k, k2) {
18
+ if (k2 === undefined) k2 = k;
19
+ o[k2] = m[k];
20
+ }));
21
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
22
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
23
+ };
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ __exportStar(require("./config.types"), exports);
26
+ __exportStar(require("./branding.types"), exports);
27
+ __exportStar(require("./copy.types"), exports);
28
+ __exportStar(require("./modes.types"), exports);
29
+ __exportStar(require("./page.types"), exports);
30
+ __exportStar(require("./api.types"), exports);
31
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;;;;;;;;;;;;;;AAEH,iDAA+B;AAC/B,mDAAiC;AACjC,+CAA6B;AAC7B,gDAA8B;AAC9B,+CAA6B;AAC7B,8CAA4B"}
@@ -0,0 +1,197 @@
1
+ /**
2
+ * Consent Auth Mode Types
3
+ *
4
+ * Canonical type definitions for authentication modes and their configurations.
5
+ *
6
+ * @module @kya-os/consent/types/modes
7
+ */
8
+ /**
9
+ * Supported Authentication Modes
10
+ *
11
+ * Constants for all supported auth modes in consent pages.
12
+ * Matches AgentShield's AUTH_MODES constant.
13
+ */
14
+ export declare const AUTH_MODES: {
15
+ /** Simple consent with no authentication */
16
+ readonly CONSENT_ONLY: "consent-only";
17
+ /** Username/password authentication */
18
+ readonly CREDENTIALS: "credentials";
19
+ /** OAuth provider authentication */
20
+ readonly OAUTH: "oauth";
21
+ /** Email magic link authentication */
22
+ readonly MAGIC_LINK: "magic-link";
23
+ /** One-time password (SMS/TOTP) authentication */
24
+ readonly OTP: "otp";
25
+ /** QR code scanning authentication (future) */
26
+ readonly QR_CODE: "qr-code";
27
+ /** Passkey/WebAuthn authentication (future) */
28
+ readonly PASSKEY: "passkey";
29
+ /** Identity verification (future) */
30
+ readonly IDV: "idv";
31
+ };
32
+ /**
33
+ * Auth Mode Type
34
+ *
35
+ * Union of all supported authentication mode values.
36
+ */
37
+ export type AuthMode = (typeof AUTH_MODES)[keyof typeof AUTH_MODES];
38
+ /**
39
+ * Credentials Mode Configuration
40
+ *
41
+ * Configuration for username/password authentication mode.
42
+ */
43
+ export interface CredentialsConfig {
44
+ /** Username field label */
45
+ usernameLabel?: string;
46
+ /** Username field placeholder */
47
+ usernamePlaceholder?: string;
48
+ /** Password field label */
49
+ passwordLabel?: string;
50
+ /** Password field placeholder */
51
+ passwordPlaceholder?: string;
52
+ /** Whether to show "Remember me" checkbox */
53
+ showRememberMe?: boolean;
54
+ /** Whether to show "Forgot password" link */
55
+ showForgotPassword?: boolean;
56
+ /** URL for forgot password page */
57
+ forgotPasswordUrl?: string;
58
+ }
59
+ /**
60
+ * OAuth Mode Configuration
61
+ *
62
+ * Configuration for OAuth provider authentication mode.
63
+ */
64
+ export interface OAuthConfig {
65
+ /** OAuth provider identifier */
66
+ providerId?: string;
67
+ /** Display name for the OAuth provider */
68
+ providerName?: string;
69
+ /** OAuth button text */
70
+ buttonText?: string;
71
+ }
72
+ /**
73
+ * Magic Link Mode Configuration
74
+ *
75
+ * Configuration for email magic link authentication mode.
76
+ */
77
+ export interface MagicLinkConfig {
78
+ /** Whether magic link is enabled */
79
+ enabled?: boolean;
80
+ /** Email field label */
81
+ emailLabel?: string;
82
+ /** Email field placeholder */
83
+ emailPlaceholder?: string;
84
+ /** Send magic link button text */
85
+ buttonText?: string;
86
+ /** Cooldown period before allowing resend (seconds) */
87
+ resendCooldown?: number;
88
+ }
89
+ /**
90
+ * OTP Mode Configuration
91
+ *
92
+ * Configuration for one-time password authentication mode.
93
+ */
94
+ export interface OTPConfig {
95
+ /** Whether OTP is enabled */
96
+ enabled?: boolean;
97
+ /** Phone/contact field label */
98
+ phoneLabel?: string;
99
+ /** Phone/contact field placeholder */
100
+ phonePlaceholder?: string;
101
+ /** Instructions text */
102
+ instructions?: string;
103
+ /** Number of OTP digits */
104
+ digits?: number;
105
+ /** Cooldown period before allowing resend (seconds) */
106
+ resendCooldown?: number;
107
+ }
108
+ /**
109
+ * QR Code Mode Configuration
110
+ *
111
+ * Configuration for QR code scanning authentication mode.
112
+ */
113
+ export interface QRCodeConfig {
114
+ /** Whether QR code auth is enabled */
115
+ enabled?: boolean;
116
+ /** Instructions text */
117
+ instructions?: string;
118
+ /** QR code size in pixels */
119
+ size?: number;
120
+ /** Whether to show manual entry option */
121
+ showManualEntry?: boolean;
122
+ }
123
+ /**
124
+ * Passkey Mode Configuration
125
+ *
126
+ * Configuration for passkey/WebAuthn authentication mode.
127
+ */
128
+ export interface PasskeyConfig {
129
+ /** Whether passkey auth is enabled */
130
+ enabled?: boolean;
131
+ /** Instructions text */
132
+ instructions?: string;
133
+ /** Button text */
134
+ buttonText?: string;
135
+ /** Whether to show browser compatibility info */
136
+ showCompatibilityInfo?: boolean;
137
+ }
138
+ /**
139
+ * IDV (Identity Verification) Mode Configuration
140
+ *
141
+ * Configuration for identity verification authentication mode.
142
+ */
143
+ export interface IDVConfig {
144
+ /** Whether IDV is enabled */
145
+ enabled?: boolean;
146
+ /** IDV provider name */
147
+ providerName?: string;
148
+ /** Type of verification (e.g., 'document', 'selfie', 'both') */
149
+ verificationType?: "document" | "selfie" | "both";
150
+ /** Instructions text */
151
+ instructions?: string;
152
+ /** Estimated time for verification */
153
+ estimatedTime?: string;
154
+ }
155
+ /**
156
+ * Combined Mode Configurations
157
+ *
158
+ * Container for all mode-specific configurations.
159
+ */
160
+ export interface ModeConfigs {
161
+ /** Credentials mode config */
162
+ credentials?: CredentialsConfig;
163
+ /** OAuth mode config */
164
+ oauth?: OAuthConfig;
165
+ /** Magic link mode config */
166
+ magicLink?: MagicLinkConfig;
167
+ /** OTP mode config */
168
+ otp?: OTPConfig;
169
+ /** QR code mode config */
170
+ qrCode?: QRCodeConfig;
171
+ /** Passkey mode config */
172
+ passkey?: PasskeyConfig;
173
+ /** IDV mode config */
174
+ idv?: IDVConfig;
175
+ }
176
+ /**
177
+ * Auth Mode Registry Entry
178
+ *
179
+ * Metadata for a registered authentication mode.
180
+ */
181
+ export interface AuthModeRegistryEntry {
182
+ /** Mode identifier */
183
+ id: AuthMode;
184
+ /** Display name */
185
+ displayName: string;
186
+ /** Brief description */
187
+ description: string;
188
+ /** Lucide icon name */
189
+ iconName: string;
190
+ /** Whether this mode has a success view */
191
+ hasSuccessView: boolean;
192
+ /** Whether this mode is implemented */
193
+ implemented: boolean;
194
+ /** Tags for filtering/categorization */
195
+ tags: string[];
196
+ }
197
+ //# sourceMappingURL=modes.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modes.types.d.ts","sourceRoot":"","sources":["../../src/types/modes.types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;GAKG;AACH,eAAO,MAAM,UAAU;IACrB,4CAA4C;;IAG5C,uCAAuC;;IAGvC,oCAAoC;;IAGpC,sCAAsC;;IAGtC,kDAAkD;;IAGlD,+CAA+C;;IAG/C,+CAA+C;;IAG/C,qCAAqC;;CAE7B,CAAC;AAEX;;;;GAIG;AACH,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,OAAO,UAAU,CAAC,CAAC;AAEpE;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,2BAA2B;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,iCAAiC;IACjC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B,2BAA2B;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,iCAAiC;IACjC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B,6CAA6C;IAC7C,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB,6CAA6C;IAC7C,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B,mCAAmC;IACnC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,gCAAgC;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,0CAA0C;IAC1C,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,wBAAwB;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,oCAAoC;IACpC,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,wBAAwB;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,8BAA8B;IAC9B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,kCAAkC;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,uDAAuD;IACvD,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;GAIG;AACH,MAAM,WAAW,SAAS;IACxB,6BAA6B;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,gCAAgC;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,sCAAsC;IACtC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,wBAAwB;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,2BAA2B;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,uDAAuD;IACvD,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,sCAAsC;IACtC,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,wBAAwB;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,6BAA6B;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,0CAA0C;IAC1C,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,sCAAsC;IACtC,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,wBAAwB;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,kBAAkB;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,iDAAiD;IACjD,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED;;;;GAIG;AACH,MAAM,WAAW,SAAS;IACxB,6BAA6B;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,wBAAwB;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,gEAAgE;IAChE,gBAAgB,CAAC,EAAE,UAAU,GAAG,QAAQ,GAAG,MAAM,CAAC;IAElD,wBAAwB;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,sCAAsC;IACtC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,8BAA8B;IAC9B,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAEhC,wBAAwB;IACxB,KAAK,CAAC,EAAE,WAAW,CAAC;IAEpB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,eAAe,CAAC;IAE5B,sBAAsB;IACtB,GAAG,CAAC,EAAE,SAAS,CAAC;IAEhB,0BAA0B;IAC1B,MAAM,CAAC,EAAE,YAAY,CAAC;IAEtB,0BAA0B;IAC1B,OAAO,CAAC,EAAE,aAAa,CAAC;IAExB,sBAAsB;IACtB,GAAG,CAAC,EAAE,SAAS,CAAC;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC,sBAAsB;IACtB,EAAE,EAAE,QAAQ,CAAC;IAEb,mBAAmB;IACnB,WAAW,EAAE,MAAM,CAAC;IAEpB,wBAAwB;IACxB,WAAW,EAAE,MAAM,CAAC;IAEpB,uBAAuB;IACvB,QAAQ,EAAE,MAAM,CAAC;IAEjB,2CAA2C;IAC3C,cAAc,EAAE,OAAO,CAAC;IAExB,uCAAuC;IACvC,WAAW,EAAE,OAAO,CAAC;IAErB,wCAAwC;IACxC,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ /**
3
+ * Consent Auth Mode Types
4
+ *
5
+ * Canonical type definitions for authentication modes and their configurations.
6
+ *
7
+ * @module @kya-os/consent/types/modes
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.AUTH_MODES = void 0;
11
+ /**
12
+ * Supported Authentication Modes
13
+ *
14
+ * Constants for all supported auth modes in consent pages.
15
+ * Matches AgentShield's AUTH_MODES constant.
16
+ */
17
+ exports.AUTH_MODES = {
18
+ /** Simple consent with no authentication */
19
+ CONSENT_ONLY: "consent-only",
20
+ /** Username/password authentication */
21
+ CREDENTIALS: "credentials",
22
+ /** OAuth provider authentication */
23
+ OAUTH: "oauth",
24
+ /** Email magic link authentication */
25
+ MAGIC_LINK: "magic-link",
26
+ /** One-time password (SMS/TOTP) authentication */
27
+ OTP: "otp",
28
+ /** QR code scanning authentication (future) */
29
+ QR_CODE: "qr-code",
30
+ /** Passkey/WebAuthn authentication (future) */
31
+ PASSKEY: "passkey",
32
+ /** Identity verification (future) */
33
+ IDV: "idv",
34
+ };
35
+ //# sourceMappingURL=modes.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modes.types.js","sourceRoot":"","sources":["../../src/types/modes.types.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAEH;;;;;GAKG;AACU,QAAA,UAAU,GAAG;IACxB,4CAA4C;IAC5C,YAAY,EAAE,cAAc;IAE5B,uCAAuC;IACvC,WAAW,EAAE,aAAa;IAE1B,oCAAoC;IACpC,KAAK,EAAE,OAAO;IAEd,sCAAsC;IACtC,UAAU,EAAE,YAAY;IAExB,kDAAkD;IAClD,GAAG,EAAE,KAAK;IAEV,+CAA+C;IAC/C,OAAO,EAAE,SAAS;IAElB,+CAA+C;IAC/C,OAAO,EAAE,SAAS;IAElB,qCAAqC;IACrC,GAAG,EAAE,KAAK;CACF,CAAC"}
@@ -0,0 +1,120 @@
1
+ /**
2
+ * Consent Page Types
3
+ *
4
+ * Canonical type definitions for consent page configuration and rendering.
5
+ *
6
+ * @module @kya-os/consent/types/page
7
+ */
8
+ import type { ConsentBranding } from "./branding.types";
9
+ import type { ConsentTerms } from "./copy.types";
10
+ import type { ConsentCustomField } from "./config.types";
11
+ import type { ModeConfigs } from "./modes.types";
12
+ import type { OAuthIdentity } from "./api.types";
13
+ export type { ResolvedConsentConfig } from "./config.types";
14
+ /**
15
+ * Consent Page Configuration
16
+ *
17
+ * Complete configuration for rendering a consent page.
18
+ * Used for the initial page render request.
19
+ */
20
+ export interface ConsentPageConfig {
21
+ /** Tool name requiring authorization */
22
+ tool: string;
23
+ /** Description of what the tool does */
24
+ toolDescription: string;
25
+ /** Scopes being requested */
26
+ scopes: string[];
27
+ /** Agent DID requesting authorization */
28
+ agentDid: string;
29
+ /** Session ID for tracking */
30
+ sessionId: string;
31
+ /** Project ID from AgentShield */
32
+ projectId: string;
33
+ /** Server URL for form submission */
34
+ serverUrl: string;
35
+ /** OAuth/auth provider identifier */
36
+ provider?: string;
37
+ /** Branding configuration */
38
+ branding?: ConsentBranding;
39
+ /** Terms configuration */
40
+ terms?: ConsentTerms;
41
+ /** Custom fields to collect */
42
+ customFields?: ConsentCustomField[];
43
+ /** Whether to auto-close window after success */
44
+ autoClose?: boolean;
45
+ /** Whether OAuth authorization is required immediately */
46
+ oauthRequired?: boolean;
47
+ /** The OAuth authorization URL to redirect to */
48
+ oauthUrl?: string;
49
+ }
50
+ /**
51
+ * Extended Consent Page Configuration
52
+ *
53
+ * Extended configuration with mode-specific settings and OAuth state.
54
+ * Used internally by templates for rendering.
55
+ */
56
+ export interface ExtendedConsentPageConfig extends ConsentPageConfig {
57
+ /** Expiration days for delegation */
58
+ expirationDays?: number;
59
+ /** Mode-specific configurations */
60
+ modeConfig?: ModeConfigs;
61
+ /** OAuth identity from previous authentication (included in form for approval) */
62
+ oauthIdentity?: OAuthIdentity;
63
+ }
64
+ /**
65
+ * Credential Page Configuration
66
+ *
67
+ * Configuration for rendering a credentials login page.
68
+ */
69
+ export interface CredentialPageConfig {
70
+ /** Tool name */
71
+ tool: string;
72
+ /** Agent DID */
73
+ agentDid: string;
74
+ /** Session ID */
75
+ sessionId: string;
76
+ /** Project ID */
77
+ projectId: string;
78
+ /** Server URL */
79
+ serverUrl: string;
80
+ /** CSRF token for form submission */
81
+ csrfToken: string;
82
+ /** Provider identifier */
83
+ provider: string;
84
+ /** Username field label */
85
+ usernameLabel?: string;
86
+ /** Username field placeholder */
87
+ usernamePlaceholder?: string;
88
+ /** Password field label */
89
+ passwordLabel?: string;
90
+ /** Password field placeholder */
91
+ passwordPlaceholder?: string;
92
+ /** Whether to show "Remember me" checkbox */
93
+ showRememberMe?: boolean;
94
+ /** Whether to show "Forgot password" link */
95
+ showForgotPassword?: boolean;
96
+ /** URL for forgot password page */
97
+ forgotPasswordUrl?: string;
98
+ }
99
+ /**
100
+ * Success Page Configuration
101
+ *
102
+ * Configuration for rendering a success page after consent approval.
103
+ */
104
+ export interface SuccessPageConfig {
105
+ /** Delegation ID */
106
+ delegationId: string;
107
+ /** Project ID */
108
+ projectId: string;
109
+ /** Server URL */
110
+ serverUrl: string;
111
+ /** Whether to auto-close the window */
112
+ autoClose?: boolean;
113
+ /** Success page title */
114
+ title?: string;
115
+ /** Success page description */
116
+ description?: string;
117
+ /** Continue button text */
118
+ continueButtonText?: string;
119
+ }
120
+ //# sourceMappingURL=page.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page.types.d.ts","sourceRoot":"","sources":["../../src/types/page.types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ /**
3
+ * Consent Page Types
4
+ *
5
+ * Canonical type definitions for consent page configuration and rendering.
6
+ *
7
+ * @module @kya-os/consent/types/page
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ //# sourceMappingURL=page.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page.types.js","sourceRoot":"","sources":["../../src/types/page.types.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG"}
package/package.json ADDED
@@ -0,0 +1,83 @@
1
+ {
2
+ "name": "@kya-os/consent",
3
+ "version": "0.1.0",
4
+ "description": "Canonical consent page types, styles, and utilities for MCP-I and AgentShield",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "default": "./dist/index.js"
11
+ },
12
+ "./types": {
13
+ "types": "./dist/types/index.d.ts",
14
+ "default": "./dist/types/index.js"
15
+ },
16
+ "./schemas": {
17
+ "types": "./dist/schemas/index.d.ts",
18
+ "default": "./dist/schemas/index.js"
19
+ },
20
+ "./constants": {
21
+ "types": "./dist/constants/index.d.ts",
22
+ "default": "./dist/constants/index.js"
23
+ },
24
+ "./styles": {
25
+ "types": "./dist/styles/index.d.ts",
26
+ "default": "./dist/styles/index.js"
27
+ },
28
+ "./resolution": {
29
+ "types": "./dist/resolution/index.d.ts",
30
+ "default": "./dist/resolution/index.js"
31
+ },
32
+ "./security": {
33
+ "types": "./dist/security/index.d.ts",
34
+ "default": "./dist/security/index.js"
35
+ },
36
+ "./templates": {
37
+ "types": "./dist/templates/index.d.ts",
38
+ "default": "./dist/templates/index.js"
39
+ }
40
+ },
41
+ "scripts": {
42
+ "build": "tsc -p tsconfig.build.json",
43
+ "test": "vitest run",
44
+ "test:coverage": "vitest run --coverage",
45
+ "test:watch": "vitest",
46
+ "lint": "eslint .",
47
+ "format": "prettier --write \"src/**/*.{ts,tsx}\"",
48
+ "clean": "rm -rf dist .turbo node_modules",
49
+ "prepublishOnly": "npm run build && node ../create-mcpi-app/scripts/validate-no-workspace.js"
50
+ },
51
+ "sideEffects": false,
52
+ "dependencies": {
53
+ "zod": "^3.25.76"
54
+ },
55
+ "devDependencies": {
56
+ "@types/node": "^20.14.9",
57
+ "@vitest/coverage-v8": "^4.0.5",
58
+ "eslint": "^8.57.0",
59
+ "typescript": "^5.5.3",
60
+ "vitest": "^4.0.5"
61
+ },
62
+ "files": [
63
+ "dist",
64
+ "package.json",
65
+ "README.md"
66
+ ],
67
+ "publishConfig": {
68
+ "access": "public"
69
+ },
70
+ "repository": {
71
+ "type": "git",
72
+ "url": "https://github.com/modelcontextprotocol-identity/xmcp-i.git",
73
+ "directory": "packages/consent"
74
+ },
75
+ "keywords": [
76
+ "mcp",
77
+ "consent",
78
+ "agentshield",
79
+ "identity"
80
+ ],
81
+ "author": "KYA-OS Team",
82
+ "license": "MIT"
83
+ }