@kya-os/consent 0.1.38 → 0.1.41

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 (186) hide show
  1. package/dist/bundle/index.d.ts +14 -0
  2. package/dist/bundle/index.d.ts.map +1 -1
  3. package/dist/bundle/index.js +14 -0
  4. package/dist/bundle/index.js.map +1 -1
  5. package/dist/bundle/inline.d.ts.map +1 -1
  6. package/dist/bundle/inline.js +2 -2
  7. package/dist/bundle/inline.js.map +1 -1
  8. package/dist/bundle/shell.d.ts +23 -0
  9. package/dist/bundle/shell.d.ts.map +1 -1
  10. package/dist/bundle/shell.js +25 -1
  11. package/dist/bundle/shell.js.map +1 -1
  12. package/dist/capabilities/index.d.ts +7 -0
  13. package/dist/capabilities/index.d.ts.map +1 -0
  14. package/dist/capabilities/index.js +7 -0
  15. package/dist/capabilities/index.js.map +1 -0
  16. package/dist/capabilities/registry.d.ts +29 -0
  17. package/dist/capabilities/registry.d.ts.map +1 -0
  18. package/dist/capabilities/registry.js +178 -0
  19. package/dist/capabilities/registry.js.map +1 -0
  20. package/dist/cedar/compile.d.ts +30 -0
  21. package/dist/cedar/compile.d.ts.map +1 -0
  22. package/dist/cedar/compile.js +55 -0
  23. package/dist/cedar/compile.js.map +1 -0
  24. package/dist/cedar/explain.d.ts +22 -0
  25. package/dist/cedar/explain.d.ts.map +1 -0
  26. package/dist/cedar/explain.js +72 -0
  27. package/dist/cedar/explain.js.map +1 -0
  28. package/dist/cedar/index.d.ts +8 -0
  29. package/dist/cedar/index.d.ts.map +1 -0
  30. package/dist/cedar/index.js +8 -0
  31. package/dist/cedar/index.js.map +1 -0
  32. package/dist/cjs/bundle/index.js +22 -1
  33. package/dist/cjs/bundle/index.js.map +1 -1
  34. package/dist/cjs/bundle/inline.js +2 -2
  35. package/dist/cjs/bundle/inline.js.map +1 -1
  36. package/dist/cjs/bundle/shell.js +25 -1
  37. package/dist/cjs/bundle/shell.js.map +1 -1
  38. package/dist/cjs/capabilities/index.js +12 -0
  39. package/dist/cjs/capabilities/index.js.map +1 -0
  40. package/dist/cjs/capabilities/registry.js +182 -0
  41. package/dist/cjs/capabilities/registry.js.map +1 -0
  42. package/dist/cjs/cedar/compile.js +59 -0
  43. package/dist/cjs/cedar/compile.js.map +1 -0
  44. package/dist/cjs/cedar/explain.js +75 -0
  45. package/dist/cjs/cedar/explain.js.map +1 -0
  46. package/dist/cjs/cedar/index.js +14 -0
  47. package/dist/cjs/cedar/index.js.map +1 -0
  48. package/dist/cjs/components/consent-action-bar.js +138 -0
  49. package/dist/cjs/components/consent-action-bar.js.map +1 -0
  50. package/dist/cjs/components/consent-agent-header.js +205 -0
  51. package/dist/cjs/components/consent-agent-header.js.map +1 -0
  52. package/dist/cjs/components/consent-capabilities-screen.js +346 -0
  53. package/dist/cjs/components/consent-capabilities-screen.js.map +1 -0
  54. package/dist/cjs/components/consent-capability-card.js +399 -0
  55. package/dist/cjs/components/consent-capability-card.js.map +1 -0
  56. package/dist/cjs/components/consent-connector-header.js +247 -0
  57. package/dist/cjs/components/consent-connector-header.js.map +1 -0
  58. package/dist/cjs/components/consent-footer.js +99 -0
  59. package/dist/cjs/components/consent-footer.js.map +1 -0
  60. package/dist/cjs/components/consent-revocation-notice.js +101 -0
  61. package/dist/cjs/components/consent-revocation-notice.js.map +1 -0
  62. package/dist/cjs/components/index.js +16 -1
  63. package/dist/cjs/components/index.js.map +1 -1
  64. package/dist/cjs/components/mcp-consent.js +193 -7
  65. package/dist/cjs/components/mcp-consent.js.map +1 -1
  66. package/dist/cjs/copy/index.js +12 -0
  67. package/dist/cjs/copy/index.js.map +1 -0
  68. package/dist/cjs/copy/tokens.js +101 -0
  69. package/dist/cjs/copy/tokens.js.map +1 -0
  70. package/dist/cjs/index.js +8 -0
  71. package/dist/cjs/index.js.map +1 -1
  72. package/dist/cjs/mcp-app/inline.js +2 -2
  73. package/dist/cjs/mcp-app/inline.js.map +1 -1
  74. package/dist/cjs/popup/index.js +15 -0
  75. package/dist/cjs/popup/index.js.map +1 -0
  76. package/dist/cjs/popup/launcher.js +77 -0
  77. package/dist/cjs/popup/launcher.js.map +1 -0
  78. package/dist/cjs/schemas/capabilities.schemas.js +129 -0
  79. package/dist/cjs/schemas/capabilities.schemas.js.map +1 -0
  80. package/dist/cjs/schemas/config.schemas.js +18 -0
  81. package/dist/cjs/schemas/config.schemas.js.map +1 -1
  82. package/dist/cjs/schemas/index.js +1 -0
  83. package/dist/cjs/schemas/index.js.map +1 -1
  84. package/dist/cjs/styles/index.js +1 -0
  85. package/dist/cjs/styles/index.js.map +1 -1
  86. package/dist/cjs/styles/theme.js +86 -0
  87. package/dist/cjs/styles/theme.js.map +1 -0
  88. package/dist/cjs/types/capabilities.types.js +12 -0
  89. package/dist/cjs/types/capabilities.types.js.map +1 -0
  90. package/dist/cjs/types/index.js +1 -0
  91. package/dist/cjs/types/index.js.map +1 -1
  92. package/dist/components/consent-action-bar.d.ts +30 -0
  93. package/dist/components/consent-action-bar.d.ts.map +1 -0
  94. package/dist/components/consent-action-bar.js +135 -0
  95. package/dist/components/consent-action-bar.js.map +1 -0
  96. package/dist/components/consent-agent-header.d.ts +31 -0
  97. package/dist/components/consent-agent-header.d.ts.map +1 -0
  98. package/dist/components/consent-agent-header.js +202 -0
  99. package/dist/components/consent-agent-header.js.map +1 -0
  100. package/dist/components/consent-capabilities-screen.d.ts +75 -0
  101. package/dist/components/consent-capabilities-screen.d.ts.map +1 -0
  102. package/dist/components/consent-capabilities-screen.js +343 -0
  103. package/dist/components/consent-capabilities-screen.js.map +1 -0
  104. package/dist/components/consent-capability-card.d.ts +52 -0
  105. package/dist/components/consent-capability-card.d.ts.map +1 -0
  106. package/dist/components/consent-capability-card.js +396 -0
  107. package/dist/components/consent-capability-card.js.map +1 -0
  108. package/dist/components/consent-connector-header.d.ts +64 -0
  109. package/dist/components/consent-connector-header.d.ts.map +1 -0
  110. package/dist/components/consent-connector-header.js +244 -0
  111. package/dist/components/consent-connector-header.js.map +1 -0
  112. package/dist/components/consent-footer.d.ts +22 -0
  113. package/dist/components/consent-footer.d.ts.map +1 -0
  114. package/dist/components/consent-footer.js +96 -0
  115. package/dist/components/consent-footer.js.map +1 -0
  116. package/dist/components/consent-revocation-notice.d.ts +22 -0
  117. package/dist/components/consent-revocation-notice.d.ts.map +1 -0
  118. package/dist/components/consent-revocation-notice.js +98 -0
  119. package/dist/components/consent-revocation-notice.js.map +1 -0
  120. package/dist/components/index.d.ts +7 -0
  121. package/dist/components/index.d.ts.map +1 -1
  122. package/dist/components/index.js +8 -0
  123. package/dist/components/index.js.map +1 -1
  124. package/dist/components/mcp-consent.d.ts +41 -0
  125. package/dist/components/mcp-consent.d.ts.map +1 -1
  126. package/dist/components/mcp-consent.js +193 -7
  127. package/dist/components/mcp-consent.js.map +1 -1
  128. package/dist/consent.js +1642 -7
  129. package/dist/consent.min.js +888 -119
  130. package/dist/copy/index.d.ts +8 -0
  131. package/dist/copy/index.d.ts.map +1 -0
  132. package/dist/copy/index.js +7 -0
  133. package/dist/copy/index.js.map +1 -0
  134. package/dist/copy/tokens.d.ts +93 -0
  135. package/dist/copy/tokens.d.ts.map +1 -0
  136. package/dist/copy/tokens.js +97 -0
  137. package/dist/copy/tokens.js.map +1 -0
  138. package/dist/index.d.ts +4 -0
  139. package/dist/index.d.ts.map +1 -1
  140. package/dist/index.js +8 -0
  141. package/dist/index.js.map +1 -1
  142. package/dist/mcp-app/inline.d.ts.map +1 -1
  143. package/dist/mcp-app/inline.js +2 -2
  144. package/dist/mcp-app/inline.js.map +1 -1
  145. package/dist/popup/index.d.ts +8 -0
  146. package/dist/popup/index.d.ts.map +1 -0
  147. package/dist/popup/index.js +7 -0
  148. package/dist/popup/index.js.map +1 -0
  149. package/dist/popup/launcher.d.ts +81 -0
  150. package/dist/popup/launcher.d.ts.map +1 -0
  151. package/dist/popup/launcher.js +71 -0
  152. package/dist/popup/launcher.js.map +1 -0
  153. package/dist/schemas/api.schemas.d.ts +366 -162
  154. package/dist/schemas/api.schemas.d.ts.map +1 -1
  155. package/dist/schemas/capabilities.schemas.d.ts +186 -0
  156. package/dist/schemas/capabilities.schemas.d.ts.map +1 -0
  157. package/dist/schemas/capabilities.schemas.js +123 -0
  158. package/dist/schemas/capabilities.schemas.js.map +1 -0
  159. package/dist/schemas/config.schemas.d.ts +480 -184
  160. package/dist/schemas/config.schemas.d.ts.map +1 -1
  161. package/dist/schemas/config.schemas.js +18 -0
  162. package/dist/schemas/config.schemas.js.map +1 -1
  163. package/dist/schemas/index.d.ts +1 -0
  164. package/dist/schemas/index.d.ts.map +1 -1
  165. package/dist/schemas/index.js +1 -0
  166. package/dist/schemas/index.js.map +1 -1
  167. package/dist/schemas/modes.schemas.d.ts +6 -6
  168. package/dist/styles/index.d.ts +1 -0
  169. package/dist/styles/index.d.ts.map +1 -1
  170. package/dist/styles/index.js +1 -0
  171. package/dist/styles/index.js.map +1 -1
  172. package/dist/styles/theme.d.ts +72 -0
  173. package/dist/styles/theme.d.ts.map +1 -0
  174. package/dist/styles/theme.js +81 -0
  175. package/dist/styles/theme.js.map +1 -0
  176. package/dist/types/capabilities.types.d.ts +126 -0
  177. package/dist/types/capabilities.types.d.ts.map +1 -0
  178. package/dist/types/capabilities.types.js +11 -0
  179. package/dist/types/capabilities.types.js.map +1 -0
  180. package/dist/types/config.types.d.ts +33 -0
  181. package/dist/types/config.types.d.ts.map +1 -1
  182. package/dist/types/index.d.ts +1 -0
  183. package/dist/types/index.d.ts.map +1 -1
  184. package/dist/types/index.js +1 -0
  185. package/dist/types/index.js.map +1 -1
  186. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consent-agent-header.d.ts","sourceRoot":"","sources":["../../src/components/consent-agent-header.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,UAAU,EAAsB,MAAM,KAAK,CAAC;AAKrD,qBACa,kBAAmB,SAAQ,UAAU;IACpB,SAAS,SAAM;IACf,MAAM,SAAM;IACZ,YAAY,SAAM;IACjB,QAAQ,UAAS;IAClB,OAAO,SAAM;IACb,WAAW,SAAM;IAE7C,OAAgB,MAAM,0BA+FpB;IAEF,OAAO,CAAC,uBAAuB;IAiB/B,OAAO,CAAC,UAAU;IAWT,MAAM;CA0BhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,sBAAsB,EAAE,kBAAkB,CAAC;KAC5C;CACF"}
@@ -0,0 +1,202 @@
1
+ /**
2
+ * Consent Agent Header
3
+ *
4
+ * Renders the agent identity tile shared between the new consent screen and
5
+ * the OAuth Gateway consent modal. Shows logo + name + Verified/UNVERIFIED
6
+ * pill + meta line (`Made by {Vendor} · Asking from your {Surface} · Connected
7
+ * just now`).
8
+ *
9
+ * Fed by `AgentMetadata` from `@kya-os/consent/types/capabilities`.
10
+ *
11
+ * @module components/consent-agent-header
12
+ */
13
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
14
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
15
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
16
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
17
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
18
+ };
19
+ import { LitElement, html, css, nothing } from "lit";
20
+ import { customElement, property } from "lit/decorators.js";
21
+ import { CONSENT_COPY_TOKENS, formatToken } from "../copy/tokens.js";
22
+ let ConsentAgentHeader = class ConsentAgentHeader extends LitElement {
23
+ constructor() {
24
+ super(...arguments);
25
+ this.agentName = "";
26
+ this.vendor = "";
27
+ this.surfaceLabel = "";
28
+ this.verified = false;
29
+ this.logoUrl = "";
30
+ this.connectedAt = "";
31
+ }
32
+ renderConnectedFragment() {
33
+ if (!this.connectedAt) {
34
+ return CONSENT_COPY_TOKENS.agentTile.connectedJustNow;
35
+ }
36
+ const ts = Date.parse(this.connectedAt);
37
+ if (Number.isNaN(ts)) {
38
+ return CONSENT_COPY_TOKENS.agentTile.connectedJustNow;
39
+ }
40
+ const minutes = Math.max(0, Math.floor((Date.now() - ts) / 60000));
41
+ if (minutes < 1) {
42
+ return CONSENT_COPY_TOKENS.agentTile.connectedJustNow;
43
+ }
44
+ return formatToken(CONSENT_COPY_TOKENS.agentTile.connectedMinutesAgo, {
45
+ Minutes: minutes,
46
+ });
47
+ }
48
+ renderMeta() {
49
+ if (!this.vendor && !this.surfaceLabel) {
50
+ return this.renderConnectedFragment();
51
+ }
52
+ return formatToken(CONSENT_COPY_TOKENS.agentTile.metaTemplate, {
53
+ Vendor: this.vendor || "—",
54
+ Surface: this.surfaceLabel || "this device",
55
+ Connected: this.renderConnectedFragment(),
56
+ });
57
+ }
58
+ render() {
59
+ const initial = (this.agentName || "?").trim().charAt(0).toUpperCase();
60
+ const verifiedLabel = this.verified
61
+ ? CONSENT_COPY_TOKENS.agentTile.verifiedPill
62
+ : CONSENT_COPY_TOKENS.agentTile.unverifiedPill;
63
+ const verifiedClass = this.verified ? "verified" : "unverified";
64
+ return html `
65
+ <div class="tile" part="tile">
66
+ <div class="logo" aria-hidden="true">
67
+ ${this.logoUrl
68
+ ? html `<img src="${this.logoUrl}" alt="" />`
69
+ : html `<div class="placeholder">${initial}</div>`}
70
+ </div>
71
+ <div class="body">
72
+ <div class="row-name">
73
+ <span class="name">${this.agentName || nothing}</span>
74
+ <span class="pill ${verifiedClass}" part="pill">
75
+ ${verifiedLabel}
76
+ </span>
77
+ </div>
78
+ <div class="meta">${this.renderMeta()}</div>
79
+ </div>
80
+ </div>
81
+ `;
82
+ }
83
+ };
84
+ ConsentAgentHeader.styles = css `
85
+ :host {
86
+ display: block;
87
+ width: 100%;
88
+ }
89
+
90
+ .tile {
91
+ display: flex;
92
+ align-items: center;
93
+ gap: 16px;
94
+ padding: 16px 18px;
95
+ border-radius: 14px;
96
+ background: var(--cs-surface-inset, transparent);
97
+ border: 1px solid var(--cs-surface-border, transparent);
98
+ }
99
+
100
+ .logo {
101
+ width: 44px;
102
+ height: 44px;
103
+ border-radius: 12px;
104
+ flex-shrink: 0;
105
+ background: var(--cs-surface-card, #fff);
106
+ display: flex;
107
+ align-items: center;
108
+ justify-content: center;
109
+ overflow: hidden;
110
+ border: 1px solid var(--cs-surface-border, transparent);
111
+ }
112
+
113
+ .logo img {
114
+ width: 100%;
115
+ height: 100%;
116
+ object-fit: cover;
117
+ }
118
+
119
+ .logo .placeholder {
120
+ width: 100%;
121
+ height: 100%;
122
+ background: var(--cs-surface-accent, #0F172A);
123
+ color: var(--cs-surface-accent-text, #fff);
124
+ display: flex;
125
+ align-items: center;
126
+ justify-content: center;
127
+ font-weight: 600;
128
+ font-size: 18px;
129
+ }
130
+
131
+ .body {
132
+ display: flex;
133
+ flex-direction: column;
134
+ gap: 4px;
135
+ min-width: 0;
136
+ }
137
+
138
+ .row-name {
139
+ display: flex;
140
+ align-items: center;
141
+ gap: 10px;
142
+ flex-wrap: wrap;
143
+ }
144
+
145
+ .name {
146
+ font-size: 16px;
147
+ font-weight: 600;
148
+ color: var(--cs-text-primary, #0F172A);
149
+ letter-spacing: -0.01em;
150
+ }
151
+
152
+ .pill {
153
+ display: inline-flex;
154
+ align-items: center;
155
+ gap: 4px;
156
+ padding: 2px 8px;
157
+ border-radius: 999px;
158
+ font-size: 11px;
159
+ font-weight: 600;
160
+ letter-spacing: 0.04em;
161
+ }
162
+
163
+ .pill.verified {
164
+ background: var(--cs-pill-verified-bg, #DCFCE7);
165
+ color: var(--cs-pill-verified-text, #166534);
166
+ }
167
+
168
+ .pill.unverified {
169
+ background: var(--cs-pill-unverified-bg, #F1F5F9);
170
+ color: var(--cs-pill-unverified-text, #475569);
171
+ letter-spacing: 0.08em;
172
+ }
173
+
174
+ .meta {
175
+ font-size: 12px;
176
+ color: var(--cs-text-tertiary, #64748B);
177
+ line-height: 1.5;
178
+ }
179
+ `;
180
+ __decorate([
181
+ property({ type: String })
182
+ ], ConsentAgentHeader.prototype, "agentName", void 0);
183
+ __decorate([
184
+ property({ type: String })
185
+ ], ConsentAgentHeader.prototype, "vendor", void 0);
186
+ __decorate([
187
+ property({ type: String })
188
+ ], ConsentAgentHeader.prototype, "surfaceLabel", void 0);
189
+ __decorate([
190
+ property({ type: Boolean })
191
+ ], ConsentAgentHeader.prototype, "verified", void 0);
192
+ __decorate([
193
+ property({ type: String })
194
+ ], ConsentAgentHeader.prototype, "logoUrl", void 0);
195
+ __decorate([
196
+ property({ type: String })
197
+ ], ConsentAgentHeader.prototype, "connectedAt", void 0);
198
+ ConsentAgentHeader = __decorate([
199
+ customElement("consent-agent-header")
200
+ ], ConsentAgentHeader);
201
+ export { ConsentAgentHeader };
202
+ //# sourceMappingURL=consent-agent-header.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consent-agent-header.js","sourceRoot":"","sources":["../../src/components/consent-agent-header.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Consent Capabilities Screen
3
+ *
4
+ * The composite layout from Peter's mockup: eyebrow + serif headline +
5
+ * subhead + agent identity tile + capability rows + revocation notice +
6
+ * action bar + footer. Used when the resolved consent config includes
7
+ * `capabilities` (the new humanized layout). Falls back to the legacy
8
+ * permissions list otherwise.
9
+ *
10
+ * This component is purely presentational. It accepts the resolved data
11
+ * (capabilities, agent metadata, copy values) and emits `consent-allow` /
12
+ * `consent-deny` events so the parent can submit the form / close the
13
+ * window. Selection state for the checkboxes is owned here to keep the
14
+ * parent simple.
15
+ *
16
+ * @module components/consent-capabilities-screen
17
+ */
18
+ import { LitElement } from "lit";
19
+ import type { Capability, AgentMetadata, ConsentTheme, CedarTemplateContext } from "../types/capabilities.types.js";
20
+ import "./consent-agent-header.js";
21
+ import "./consent-capability-card.js";
22
+ import "./consent-action-bar.js";
23
+ import "./consent-footer.js";
24
+ import "./consent-revocation-notice.js";
25
+ import "./consent-connector-header.js";
26
+ /**
27
+ * Detail emitted on `consent-allow` — the set of capability ids the user
28
+ * approved. The parent uses this to compose the granted list.
29
+ */
30
+ export interface CapabilitiesApproveDetail {
31
+ selectedCapabilityIds: string[];
32
+ selectedScopes: string[];
33
+ }
34
+ export declare class ConsentCapabilitiesScreen extends LitElement {
35
+ capabilities: Capability[];
36
+ agentMetadata: AgentMetadata | undefined;
37
+ cedarContext: CedarTemplateContext | undefined;
38
+ orgName: string;
39
+ headlineVerb: string;
40
+ revocationPath: string;
41
+ inactivityDays: number;
42
+ theme: ConsentTheme;
43
+ howItWorksUrl: string;
44
+ loading: boolean;
45
+ /**
46
+ * Domain used to fetch the server brand logo when one isn't explicitly
47
+ * configured via `agentMetadata.logoUrl` / branding. Passed to the
48
+ * connector header for logo.dev resolution.
49
+ */
50
+ serverDomain: string;
51
+ /**
52
+ * Optional logo.dev publishable token. Lets the connector header resolve
53
+ * brand logos by domain when the operator hasn't supplied an explicit
54
+ * one. Falls back to monogram tile when missing or on 404.
55
+ */
56
+ logoDevToken: string;
57
+ private selected;
58
+ connectedCallback(): void;
59
+ willUpdate(changed: Map<string, unknown>): void;
60
+ private seedDefaults;
61
+ static styles: import("lit").CSSResult;
62
+ private hostStyle;
63
+ private onCapabilityToggle;
64
+ private onAllow;
65
+ private onDeny;
66
+ private compileCapabilityCedar;
67
+ private renderHeadline;
68
+ render(): import("lit").TemplateResult<1>;
69
+ }
70
+ declare global {
71
+ interface HTMLElementTagNameMap {
72
+ "consent-capabilities-screen": ConsentCapabilitiesScreen;
73
+ }
74
+ }
75
+ //# sourceMappingURL=consent-capabilities-screen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consent-capabilities-screen.d.ts","sourceRoot":"","sources":["../../src/components/consent-capabilities-screen.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,UAAU,EAAsB,MAAM,KAAK,CAAC;AAQrD,OAAO,KAAK,EACV,UAAU,EACV,aAAa,EACb,YAAY,EACZ,oBAAoB,EACrB,MAAM,gCAAgC,CAAC;AAExC,OAAO,2BAA2B,CAAC;AACnC,OAAO,8BAA8B,CAAC;AACtC,OAAO,yBAAyB,CAAC;AACjC,OAAO,qBAAqB,CAAC;AAC7B,OAAO,gCAAgC,CAAC;AACxC,OAAO,+BAA+B,CAAC;AAGvC;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACxC,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,qBACa,yBAA0B,SAAQ,UAAU;IAC5B,YAAY,EAAE,UAAU,EAAE,CAAM;IAC/B,aAAa,EAAE,aAAa,GAAG,SAAS,CAAC;IACzC,YAAY,EAAE,oBAAoB,GAAG,SAAS,CAAC;IAC/C,OAAO,SAAM;IACb,YAAY,SAAS;IACrB,cAAc,SAAgC;IAC9C,cAAc,SAAM;IACpB,KAAK,EAAE,YAAY,CAAW;IACC,aAAa,SAAM;IACjD,OAAO,UAAS;IAE7C;;;;OAIG;IACqD,YAAY,SAAM;IAE1E;;;;OAIG;IACsD,YAAY,SAAM;IAElE,OAAO,CAAC,QAAQ,CAAqB;IAErC,iBAAiB,IAAI,IAAI;IAKzB,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAMxD,OAAO,CAAC,YAAY;IAQpB,OAAgB,MAAM,0BAuEpB;IAEF,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,kBAAkB,CAMxB;IAEF,OAAO,CAAC,OAAO,CAiBb;IAEF,OAAO,CAAC,MAAM,CAIZ;IAEF,OAAO,CAAC,sBAAsB;IAW9B,OAAO,CAAC,cAAc;IAkBb,MAAM;CA2EhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,6BAA6B,EAAE,yBAAyB,CAAC;KAC1D;CACF"}
@@ -0,0 +1,343 @@
1
+ /**
2
+ * Consent Capabilities Screen
3
+ *
4
+ * The composite layout from Peter's mockup: eyebrow + serif headline +
5
+ * subhead + agent identity tile + capability rows + revocation notice +
6
+ * action bar + footer. Used when the resolved consent config includes
7
+ * `capabilities` (the new humanized layout). Falls back to the legacy
8
+ * permissions list otherwise.
9
+ *
10
+ * This component is purely presentational. It accepts the resolved data
11
+ * (capabilities, agent metadata, copy values) and emits `consent-allow` /
12
+ * `consent-deny` events so the parent can submit the form / close the
13
+ * window. Selection state for the checkboxes is owned here to keep the
14
+ * parent simple.
15
+ *
16
+ * @module components/consent-capabilities-screen
17
+ */
18
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
19
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
20
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
21
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
22
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
23
+ };
24
+ import { LitElement, html, css, nothing } from "lit";
25
+ import { customElement, property, state } from "lit/decorators.js";
26
+ import { CONSENT_COPY_TOKENS, formatToken } from "../copy/tokens.js";
27
+ import { getConsentTheme, themeToCssVariables, } from "../styles/theme.js";
28
+ import { compileSingleCapability } from "../cedar/compile.js";
29
+ import "./consent-agent-header.js";
30
+ import "./consent-capability-card.js";
31
+ import "./consent-action-bar.js";
32
+ import "./consent-footer.js";
33
+ import "./consent-revocation-notice.js";
34
+ import "./consent-connector-header.js";
35
+ let ConsentCapabilitiesScreen = class ConsentCapabilitiesScreen extends LitElement {
36
+ constructor() {
37
+ super(...arguments);
38
+ this.capabilities = [];
39
+ this.orgName = "";
40
+ this.headlineVerb = "use";
41
+ this.revocationPath = "Account → Connected Agents";
42
+ this.inactivityDays = 90;
43
+ this.theme = "light";
44
+ this.howItWorksUrl = "";
45
+ this.loading = false;
46
+ /**
47
+ * Domain used to fetch the server brand logo when one isn't explicitly
48
+ * configured via `agentMetadata.logoUrl` / branding. Passed to the
49
+ * connector header for logo.dev resolution.
50
+ */
51
+ this.serverDomain = "";
52
+ /**
53
+ * Optional logo.dev publishable token. Lets the connector header resolve
54
+ * brand logos by domain when the operator hasn't supplied an explicit
55
+ * one. Falls back to monogram tile when missing or on 404.
56
+ */
57
+ this.logoDevToken = "";
58
+ this.selected = new Set();
59
+ this.onCapabilityToggle = (event) => {
60
+ const detail = event.detail;
61
+ const next = new Set(this.selected);
62
+ if (detail.checked)
63
+ next.add(detail.id);
64
+ else
65
+ next.delete(detail.id);
66
+ this.selected = next;
67
+ };
68
+ this.onAllow = () => {
69
+ if (this.loading)
70
+ return;
71
+ const selectedIds = Array.from(this.selected);
72
+ const selectedScopes = this.capabilities
73
+ .filter((c) => this.selected.has(c.id))
74
+ .flatMap((c) => c.scopes);
75
+ const detail = {
76
+ selectedCapabilityIds: selectedIds,
77
+ selectedScopes,
78
+ };
79
+ this.dispatchEvent(new CustomEvent("capabilities-allow", {
80
+ detail,
81
+ bubbles: true,
82
+ composed: true,
83
+ }));
84
+ };
85
+ this.onDeny = () => {
86
+ this.dispatchEvent(new CustomEvent("capabilities-deny", { bubbles: true, composed: true }));
87
+ };
88
+ }
89
+ connectedCallback() {
90
+ super.connectedCallback();
91
+ this.seedDefaults();
92
+ }
93
+ willUpdate(changed) {
94
+ if (changed.has("capabilities")) {
95
+ this.seedDefaults();
96
+ }
97
+ }
98
+ seedDefaults() {
99
+ const next = new Set();
100
+ for (const capability of this.capabilities) {
101
+ if (capability.defaultOn)
102
+ next.add(capability.id);
103
+ }
104
+ this.selected = next;
105
+ }
106
+ hostStyle() {
107
+ return `:host { ${themeToCssVariables(getConsentTheme(this.theme))} }`;
108
+ }
109
+ compileCapabilityCedar(capability) {
110
+ if (!this.cedarContext) {
111
+ return capability.cedar;
112
+ }
113
+ try {
114
+ return compileSingleCapability(capability, this.cedarContext);
115
+ }
116
+ catch {
117
+ return capability.cedar;
118
+ }
119
+ }
120
+ renderHeadline() {
121
+ const agentName = this.agentMetadata?.name || "this agent";
122
+ const tokens = CONSENT_COPY_TOKENS;
123
+ const raw = formatToken(tokens.headline.template, {
124
+ Agent: "@@AGENT@@",
125
+ Verb: this.headlineVerb || "use",
126
+ Org: "@@ORG@@",
127
+ });
128
+ const escaped = escapeHtml(raw);
129
+ const withSerifEntities = escaped
130
+ .replace("@@AGENT@@", `<em>${nbspEscape(agentName)}</em>`)
131
+ .replace("@@ORG@@", `<em>${nbspEscape(this.orgName || "this site")}</em>`);
132
+ return html `<h1
133
+ class="headline"
134
+ .innerHTML=${withSerifEntities}
135
+ ></h1>`;
136
+ }
137
+ render() {
138
+ const tokens = CONSENT_COPY_TOKENS;
139
+ const agentName = this.agentMetadata?.name || "this agent";
140
+ const subhead = formatToken(tokens.subhead.template, { Agent: agentName });
141
+ const sectionHeader = formatToken(tokens.section.capabilitiesHeader, {
142
+ Agent: agentName.toUpperCase(),
143
+ });
144
+ return html `
145
+ <style>
146
+ ${this.hostStyle()}
147
+ </style>
148
+ <consent-connector-header
149
+ clientName="${this.agentMetadata?.name || ""}"
150
+ clientDid="${this.agentMetadata?.did || ""}"
151
+ client-logo-url="${this.agentMetadata?.logoUrl || ""}"
152
+ serverName="${this.orgName || ""}"
153
+ server-domain="${this.serverDomain}"
154
+ logo-dev-token="${this.logoDevToken}"
155
+ ></consent-connector-header>
156
+ <div class="card" part="card">
157
+ <span class="eyebrow">${tokens.eyebrow.permissionRequest}</span>
158
+ ${this.renderHeadline()}
159
+ <p class="subhead">${subhead}</p>
160
+ ${this.agentMetadata
161
+ ? html `<consent-agent-header
162
+ agentName="${this.agentMetadata.name}"
163
+ vendor="${this.agentMetadata.vendor || ""}"
164
+ surfaceLabel="${this.agentMetadata.surfaceLabel || ""}"
165
+ ?verified=${this.agentMetadata.verified}
166
+ logoUrl="${this.agentMetadata.logoUrl || ""}"
167
+ connectedAt="${this.agentMetadata.connectedAt || ""}"
168
+ ></consent-agent-header>`
169
+ : nothing}
170
+ <div>
171
+ <div class="section-header">
172
+ <span>${sectionHeader}</span>
173
+ <span class="hint">${tokens.section.tapToToggle}</span>
174
+ </div>
175
+ <div class="rows" @capability-toggle=${this.onCapabilityToggle}>
176
+ ${this.capabilities.map((capability) => html `
177
+ <consent-capability-card
178
+ capabilityId="${capability.id}"
179
+ label="${capability.label}"
180
+ description="${capability.description}"
181
+ icon="${capability.icon}"
182
+ riskLevel="${capability.riskLevel}"
183
+ ?checked=${this.selected.has(capability.id)}
184
+ compiled-cedar="${this.compileCapabilityCedar(capability)}"
185
+ ></consent-capability-card>
186
+ `)}
187
+ </div>
188
+ </div>
189
+ <consent-revocation-notice
190
+ revocationPath="${this.revocationPath}"
191
+ orgName="${this.orgName || "this site"}"
192
+ inactivityDays=${this.inactivityDays}
193
+ ></consent-revocation-notice>
194
+ <consent-action-bar
195
+ agentName="${agentName}"
196
+ theme="${this.theme}"
197
+ ?loading=${this.loading}
198
+ ?disabled=${this.selected.size === 0}
199
+ @consent-allow=${this.onAllow}
200
+ @consent-deny=${this.onDeny}
201
+ ></consent-action-bar>
202
+ <consent-footer
203
+ theme="${this.theme}"
204
+ howItWorksUrl="${this.howItWorksUrl}"
205
+ ></consent-footer>
206
+ </div>
207
+ `;
208
+ }
209
+ };
210
+ ConsentCapabilitiesScreen.styles = css `
211
+ :host {
212
+ display: block;
213
+ box-sizing: border-box;
214
+ width: 100%;
215
+ max-width: 560px;
216
+ margin: 0 auto;
217
+ }
218
+
219
+ .card {
220
+ background: var(--cs-surface-card);
221
+ border: 1px solid var(--cs-surface-border);
222
+ border-radius: 22px;
223
+ box-shadow: var(--cs-card-shadow);
224
+ padding: 28px 28px 22px;
225
+ display: flex;
226
+ flex-direction: column;
227
+ gap: 22px;
228
+ color: var(--cs-text-primary);
229
+ }
230
+
231
+ .eyebrow {
232
+ font-size: 11px;
233
+ letter-spacing: 0.16em;
234
+ font-weight: 600;
235
+ color: var(--cs-text-tertiary);
236
+ text-transform: uppercase;
237
+ }
238
+
239
+ .headline {
240
+ font-family: "Times New Roman", Georgia, serif;
241
+ font-size: 30px;
242
+ line-height: 1.18;
243
+ letter-spacing: -0.01em;
244
+ color: var(--cs-text-primary);
245
+ margin: 0;
246
+ }
247
+
248
+ .headline em {
249
+ font-style: italic;
250
+ }
251
+
252
+ .subhead {
253
+ font-size: 14.5px;
254
+ color: var(--cs-text-secondary);
255
+ line-height: 1.55;
256
+ margin: 0;
257
+ }
258
+
259
+ .section-header {
260
+ display: flex;
261
+ align-items: center;
262
+ justify-content: space-between;
263
+ font-size: 11px;
264
+ letter-spacing: 0.14em;
265
+ font-weight: 600;
266
+ color: var(--cs-text-tertiary);
267
+ text-transform: uppercase;
268
+ }
269
+
270
+ .section-header .hint {
271
+ letter-spacing: 0;
272
+ font-weight: 400;
273
+ text-transform: none;
274
+ font-size: 12px;
275
+ }
276
+
277
+ .rows {
278
+ display: flex;
279
+ flex-direction: column;
280
+ }
281
+ `;
282
+ __decorate([
283
+ property({ type: Array })
284
+ ], ConsentCapabilitiesScreen.prototype, "capabilities", void 0);
285
+ __decorate([
286
+ property({ type: Object })
287
+ ], ConsentCapabilitiesScreen.prototype, "agentMetadata", void 0);
288
+ __decorate([
289
+ property({ type: Object })
290
+ ], ConsentCapabilitiesScreen.prototype, "cedarContext", void 0);
291
+ __decorate([
292
+ property({ type: String })
293
+ ], ConsentCapabilitiesScreen.prototype, "orgName", void 0);
294
+ __decorate([
295
+ property({ type: String })
296
+ ], ConsentCapabilitiesScreen.prototype, "headlineVerb", void 0);
297
+ __decorate([
298
+ property({ type: String })
299
+ ], ConsentCapabilitiesScreen.prototype, "revocationPath", void 0);
300
+ __decorate([
301
+ property({ type: Number })
302
+ ], ConsentCapabilitiesScreen.prototype, "inactivityDays", void 0);
303
+ __decorate([
304
+ property({ type: String })
305
+ ], ConsentCapabilitiesScreen.prototype, "theme", void 0);
306
+ __decorate([
307
+ property({ type: String, attribute: "how-it-works-url" })
308
+ ], ConsentCapabilitiesScreen.prototype, "howItWorksUrl", void 0);
309
+ __decorate([
310
+ property({ type: Boolean })
311
+ ], ConsentCapabilitiesScreen.prototype, "loading", void 0);
312
+ __decorate([
313
+ property({ type: String, attribute: "server-domain" })
314
+ ], ConsentCapabilitiesScreen.prototype, "serverDomain", void 0);
315
+ __decorate([
316
+ property({ type: String, attribute: "logo-dev-token" })
317
+ ], ConsentCapabilitiesScreen.prototype, "logoDevToken", void 0);
318
+ __decorate([
319
+ state()
320
+ ], ConsentCapabilitiesScreen.prototype, "selected", void 0);
321
+ ConsentCapabilitiesScreen = __decorate([
322
+ customElement("consent-capabilities-screen")
323
+ ], ConsentCapabilitiesScreen);
324
+ export { ConsentCapabilitiesScreen };
325
+ function escapeHtml(value) {
326
+ return value
327
+ .replace(/&/g, "&amp;")
328
+ .replace(/</g, "&lt;")
329
+ .replace(/>/g, "&gt;")
330
+ .replace(/"/g, "&quot;")
331
+ .replace(/'/g, "&#39;");
332
+ }
333
+ /**
334
+ * Escape an entity name for HTML AND replace any internal whitespace with
335
+ * non-breaking spaces. Used inside the serif italic spans of the headline so
336
+ * multi-word brand names ("Hardware World", "Bank of Acme") wrap as a single
337
+ * unit instead of splitting across lines. Applied to any operator-set entity
338
+ * name, so the rule scales to any deployment without per-brand tweaking.
339
+ */
340
+ function nbspEscape(value) {
341
+ return escapeHtml(value).replace(/\s+/g, " ");
342
+ }
343
+ //# sourceMappingURL=consent-capabilities-screen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consent-capabilities-screen.js","sourceRoot":"","sources":["../../src/components/consent-capabilities-screen.ts"],"names":[],"mappings":"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"}