@vorionsys/shared-constants 1.0.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 (46) hide show
  1. package/dist/api-versions.cjs +183 -0
  2. package/dist/api-versions.d.cts +91 -0
  3. package/dist/api-versions.js +46 -0
  4. package/dist/capabilities.cjs +246 -0
  5. package/dist/capabilities.d.cts +55 -0
  6. package/dist/capabilities.js +21 -0
  7. package/dist/chunk-F2R6HBF5.js +253 -0
  8. package/dist/chunk-IKLCEYZT.js +142 -0
  9. package/dist/chunk-JZJPDGG7.js +215 -0
  10. package/dist/chunk-P3VPMVF3.js +223 -0
  11. package/dist/chunk-PHL3CB53.js +159 -0
  12. package/dist/chunk-RZQZEF6Q.js +176 -0
  13. package/dist/chunk-TYCMBQGU.js +353 -0
  14. package/dist/chunk-UDCZKJSQ.js +139 -0
  15. package/dist/domains.cjs +175 -0
  16. package/dist/domains.d.cts +250 -0
  17. package/dist/domains.js +24 -0
  18. package/dist/error-codes.cjs +390 -0
  19. package/dist/error-codes.d.cts +633 -0
  20. package/dist/error-codes.js +32 -0
  21. package/dist/index.cjs +1762 -0
  22. package/dist/index.d.cts +54 -0
  23. package/dist/index.js +198 -0
  24. package/dist/products.cjs +208 -0
  25. package/dist/products.d.cts +80 -0
  26. package/dist/products.js +22 -0
  27. package/dist/rate-limits.cjs +295 -0
  28. package/dist/rate-limits.d.cts +80 -0
  29. package/dist/rate-limits.js +21 -0
  30. package/dist/themes.cjs +251 -0
  31. package/dist/themes.d.cts +85 -0
  32. package/dist/themes.js +14 -0
  33. package/dist/tiers.cjs +194 -0
  34. package/dist/tiers.d.cts +75 -0
  35. package/dist/tiers.js +28 -0
  36. package/package.json +71 -0
  37. package/src/api-versions.ts +250 -0
  38. package/src/capabilities.ts +272 -0
  39. package/src/domains.ts +216 -0
  40. package/src/error-codes.ts +494 -0
  41. package/src/index.ts +206 -0
  42. package/src/products.ts +285 -0
  43. package/src/rate-limits.ts +334 -0
  44. package/src/themes.ts +380 -0
  45. package/src/tiers.ts +239 -0
  46. package/tsconfig.json +25 -0
@@ -0,0 +1,295 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/rate-limits.ts
21
+ var rate_limits_exports = {};
22
+ __export(rate_limits_exports, {
23
+ RATE_LIMITS: () => RATE_LIMITS,
24
+ TIER_QUOTAS: () => TIER_QUOTAS,
25
+ formatRateLimit: () => formatRateLimit,
26
+ getMinTierForLimits: () => getMinTierForLimits,
27
+ getQuota: () => getQuota,
28
+ getRateLimits: () => getRateLimits,
29
+ isUnlimited: () => isUnlimited,
30
+ wouldExceedLimit: () => wouldExceedLimit
31
+ });
32
+ module.exports = __toCommonJS(rate_limits_exports);
33
+
34
+ // src/tiers.ts
35
+ var TrustTier = /* @__PURE__ */ ((TrustTier2) => {
36
+ TrustTier2[TrustTier2["T0_SANDBOX"] = 0] = "T0_SANDBOX";
37
+ TrustTier2[TrustTier2["T1_OBSERVED"] = 1] = "T1_OBSERVED";
38
+ TrustTier2[TrustTier2["T2_PROVISIONAL"] = 2] = "T2_PROVISIONAL";
39
+ TrustTier2[TrustTier2["T3_MONITORED"] = 3] = "T3_MONITORED";
40
+ TrustTier2[TrustTier2["T4_STANDARD"] = 4] = "T4_STANDARD";
41
+ TrustTier2[TrustTier2["T5_TRUSTED"] = 5] = "T5_TRUSTED";
42
+ TrustTier2[TrustTier2["T6_CERTIFIED"] = 6] = "T6_CERTIFIED";
43
+ TrustTier2[TrustTier2["T7_AUTONOMOUS"] = 7] = "T7_AUTONOMOUS";
44
+ return TrustTier2;
45
+ })(TrustTier || {});
46
+
47
+ // src/rate-limits.ts
48
+ var RATE_LIMITS = {
49
+ [0 /* T0_SANDBOX */]: {
50
+ requestsPerSecond: 1,
51
+ requestsPerMinute: 10,
52
+ requestsPerHour: 100,
53
+ requestsPerDay: 500,
54
+ burstLimit: 2,
55
+ maxPayloadBytes: 1024 * 10,
56
+ // 10 KB
57
+ maxResponseBytes: 1024 * 100,
58
+ // 100 KB
59
+ connectionTimeoutMs: 5e3,
60
+ requestTimeoutMs: 1e4
61
+ },
62
+ [1 /* T1_OBSERVED */]: {
63
+ requestsPerSecond: 2,
64
+ requestsPerMinute: 30,
65
+ requestsPerHour: 500,
66
+ requestsPerDay: 2e3,
67
+ burstLimit: 5,
68
+ maxPayloadBytes: 1024 * 50,
69
+ // 50 KB
70
+ maxResponseBytes: 1024 * 500,
71
+ // 500 KB
72
+ connectionTimeoutMs: 5e3,
73
+ requestTimeoutMs: 15e3
74
+ },
75
+ [2 /* T2_PROVISIONAL */]: {
76
+ requestsPerSecond: 5,
77
+ requestsPerMinute: 100,
78
+ requestsPerHour: 2e3,
79
+ requestsPerDay: 1e4,
80
+ burstLimit: 10,
81
+ maxPayloadBytes: 1024 * 100,
82
+ // 100 KB
83
+ maxResponseBytes: 1024 * 1024,
84
+ // 1 MB
85
+ connectionTimeoutMs: 1e4,
86
+ requestTimeoutMs: 3e4
87
+ },
88
+ [3 /* T3_MONITORED */]: {
89
+ requestsPerSecond: 10,
90
+ requestsPerMinute: 300,
91
+ requestsPerHour: 5e3,
92
+ requestsPerDay: 5e4,
93
+ burstLimit: 20,
94
+ maxPayloadBytes: 1024 * 500,
95
+ // 500 KB
96
+ maxResponseBytes: 1024 * 1024 * 5,
97
+ // 5 MB
98
+ connectionTimeoutMs: 1e4,
99
+ requestTimeoutMs: 6e4
100
+ },
101
+ [4 /* T4_STANDARD */]: {
102
+ requestsPerSecond: 20,
103
+ requestsPerMinute: 600,
104
+ requestsPerHour: 1e4,
105
+ requestsPerDay: 1e5,
106
+ burstLimit: 50,
107
+ maxPayloadBytes: 1024 * 1024,
108
+ // 1 MB
109
+ maxResponseBytes: 1024 * 1024 * 10,
110
+ // 10 MB
111
+ connectionTimeoutMs: 15e3,
112
+ requestTimeoutMs: 12e4
113
+ },
114
+ [5 /* T5_TRUSTED */]: {
115
+ requestsPerSecond: 50,
116
+ requestsPerMinute: 1500,
117
+ requestsPerHour: 3e4,
118
+ requestsPerDay: 3e5,
119
+ burstLimit: 100,
120
+ maxPayloadBytes: 1024 * 1024 * 5,
121
+ // 5 MB
122
+ maxResponseBytes: 1024 * 1024 * 50,
123
+ // 50 MB
124
+ connectionTimeoutMs: 3e4,
125
+ requestTimeoutMs: 3e5
126
+ },
127
+ [6 /* T6_CERTIFIED */]: {
128
+ requestsPerSecond: 100,
129
+ requestsPerMinute: 3e3,
130
+ requestsPerHour: 1e5,
131
+ requestsPerDay: 1e6,
132
+ burstLimit: 200,
133
+ maxPayloadBytes: 1024 * 1024 * 10,
134
+ // 10 MB
135
+ maxResponseBytes: 1024 * 1024 * 100,
136
+ // 100 MB
137
+ connectionTimeoutMs: 6e4,
138
+ requestTimeoutMs: 6e5
139
+ },
140
+ [7 /* T7_AUTONOMOUS */]: {
141
+ requestsPerSecond: 500,
142
+ requestsPerMinute: 1e4,
143
+ requestsPerHour: 5e5,
144
+ requestsPerDay: 5e6,
145
+ burstLimit: 500,
146
+ maxPayloadBytes: 1024 * 1024 * 50,
147
+ // 50 MB
148
+ maxResponseBytes: 1024 * 1024 * 500,
149
+ // 500 MB
150
+ connectionTimeoutMs: 12e4,
151
+ requestTimeoutMs: 12e5
152
+ }
153
+ };
154
+ function getRateLimits(tier) {
155
+ return RATE_LIMITS[tier];
156
+ }
157
+ function getMinTierForLimits(config) {
158
+ const tiers = Object.values(TrustTier).filter((t) => typeof t === "number");
159
+ for (const tier of tiers) {
160
+ const limits = RATE_LIMITS[tier];
161
+ if ((config.requestsPerSecond === void 0 || limits.requestsPerSecond >= config.requestsPerSecond) && (config.requestsPerMinute === void 0 || limits.requestsPerMinute >= config.requestsPerMinute) && (config.requestsPerHour === void 0 || limits.requestsPerHour >= config.requestsPerHour) && (config.requestsPerDay === void 0 || limits.requestsPerDay >= config.requestsPerDay)) {
162
+ return tier;
163
+ }
164
+ }
165
+ return 7 /* T7_AUTONOMOUS */;
166
+ }
167
+ function wouldExceedLimit(tier, window, currentCount) {
168
+ const limits = RATE_LIMITS[tier];
169
+ switch (window) {
170
+ case "second":
171
+ return currentCount >= limits.requestsPerSecond;
172
+ case "minute":
173
+ return currentCount >= limits.requestsPerMinute;
174
+ case "hour":
175
+ return currentCount >= limits.requestsPerHour;
176
+ case "day":
177
+ return currentCount >= limits.requestsPerDay;
178
+ }
179
+ }
180
+ function formatRateLimit(tier) {
181
+ const limits = RATE_LIMITS[tier];
182
+ return `${limits.requestsPerSecond}/s, ${limits.requestsPerMinute}/min, ${limits.requestsPerHour}/hr`;
183
+ }
184
+ var TIER_QUOTAS = {
185
+ [0 /* T0_SANDBOX */]: {
186
+ monthlyApiCalls: 1e3,
187
+ monthlyComputeUnits: 100,
188
+ monthlyStorageBytes: 1024 * 1024 * 10,
189
+ // 10 MB
190
+ monthlyBandwidthBytes: 1024 * 1024 * 100,
191
+ // 100 MB
192
+ maxAgents: 1,
193
+ maxWebhooks: 1,
194
+ maxTeamMembers: 1
195
+ },
196
+ [1 /* T1_OBSERVED */]: {
197
+ monthlyApiCalls: 1e4,
198
+ monthlyComputeUnits: 1e3,
199
+ monthlyStorageBytes: 1024 * 1024 * 100,
200
+ // 100 MB
201
+ monthlyBandwidthBytes: 1024 * 1024 * 1024,
202
+ // 1 GB
203
+ maxAgents: 5,
204
+ maxWebhooks: 5,
205
+ maxTeamMembers: 3
206
+ },
207
+ [2 /* T2_PROVISIONAL */]: {
208
+ monthlyApiCalls: 5e4,
209
+ monthlyComputeUnits: 5e3,
210
+ monthlyStorageBytes: 1024 * 1024 * 500,
211
+ // 500 MB
212
+ monthlyBandwidthBytes: 1024 * 1024 * 1024 * 5,
213
+ // 5 GB
214
+ maxAgents: 10,
215
+ maxWebhooks: 10,
216
+ maxTeamMembers: 5
217
+ },
218
+ [3 /* T3_MONITORED */]: {
219
+ monthlyApiCalls: 25e4,
220
+ monthlyComputeUnits: 25e3,
221
+ monthlyStorageBytes: 1024 * 1024 * 1024 * 2,
222
+ // 2 GB
223
+ monthlyBandwidthBytes: 1024 * 1024 * 1024 * 25,
224
+ // 25 GB
225
+ maxAgents: 50,
226
+ maxWebhooks: 25,
227
+ maxTeamMembers: 10
228
+ },
229
+ [4 /* T4_STANDARD */]: {
230
+ monthlyApiCalls: 1e6,
231
+ monthlyComputeUnits: 1e5,
232
+ monthlyStorageBytes: 1024 * 1024 * 1024 * 10,
233
+ // 10 GB
234
+ monthlyBandwidthBytes: 1024 * 1024 * 1024 * 100,
235
+ // 100 GB
236
+ maxAgents: 200,
237
+ maxWebhooks: 50,
238
+ maxTeamMembers: 25
239
+ },
240
+ [5 /* T5_TRUSTED */]: {
241
+ monthlyApiCalls: 5e6,
242
+ monthlyComputeUnits: 5e5,
243
+ monthlyStorageBytes: 1024 * 1024 * 1024 * 50,
244
+ // 50 GB
245
+ monthlyBandwidthBytes: 1024 * 1024 * 1024 * 500,
246
+ // 500 GB
247
+ maxAgents: 1e3,
248
+ maxWebhooks: 100,
249
+ maxTeamMembers: 50
250
+ },
251
+ [6 /* T6_CERTIFIED */]: {
252
+ monthlyApiCalls: 25e6,
253
+ monthlyComputeUnits: 25e5,
254
+ monthlyStorageBytes: 1024 * 1024 * 1024 * 250,
255
+ // 250 GB
256
+ monthlyBandwidthBytes: 1024 * 1024 * 1024 * 2500,
257
+ // 2.5 TB
258
+ maxAgents: 5e3,
259
+ maxWebhooks: 250,
260
+ maxTeamMembers: 100
261
+ },
262
+ [7 /* T7_AUTONOMOUS */]: {
263
+ monthlyApiCalls: -1,
264
+ // Unlimited
265
+ monthlyComputeUnits: -1,
266
+ // Unlimited
267
+ monthlyStorageBytes: 1024 * 1024 * 1024 * 1024,
268
+ // 1 TB
269
+ monthlyBandwidthBytes: 1024 * 1024 * 1024 * 1e4,
270
+ // 10 TB
271
+ maxAgents: -1,
272
+ // Unlimited
273
+ maxWebhooks: -1,
274
+ // Unlimited
275
+ maxTeamMembers: -1
276
+ // Unlimited
277
+ }
278
+ };
279
+ function getQuota(tier) {
280
+ return TIER_QUOTAS[tier];
281
+ }
282
+ function isUnlimited(value) {
283
+ return value === -1;
284
+ }
285
+ // Annotate the CommonJS export names for ESM import in node:
286
+ 0 && (module.exports = {
287
+ RATE_LIMITS,
288
+ TIER_QUOTAS,
289
+ formatRateLimit,
290
+ getMinTierForLimits,
291
+ getQuota,
292
+ getRateLimits,
293
+ isUnlimited,
294
+ wouldExceedLimit
295
+ });
@@ -0,0 +1,80 @@
1
+ import { TrustTier } from './tiers.cjs';
2
+
3
+ /**
4
+ * @vorionsys/shared-constants - Rate Limits
5
+ *
6
+ * Rate limits by trust tier - used across all APIs
7
+ * Higher trust = higher limits
8
+ *
9
+ * @see https://cognigate.dev/docs/rate-limits
10
+ */
11
+
12
+ interface RateLimitConfig {
13
+ /** Requests per second */
14
+ requestsPerSecond: number;
15
+ /** Requests per minute */
16
+ requestsPerMinute: number;
17
+ /** Requests per hour */
18
+ requestsPerHour: number;
19
+ /** Requests per day */
20
+ requestsPerDay: number;
21
+ /** Burst limit (max concurrent) */
22
+ burstLimit: number;
23
+ /** Max payload size in bytes */
24
+ maxPayloadBytes: number;
25
+ /** Max response size in bytes */
26
+ maxResponseBytes: number;
27
+ /** Connection timeout in ms */
28
+ connectionTimeoutMs: number;
29
+ /** Request timeout in ms */
30
+ requestTimeoutMs: number;
31
+ }
32
+ declare const RATE_LIMITS: Record<TrustTier, RateLimitConfig>;
33
+ /**
34
+ * Get rate limits for a trust tier
35
+ */
36
+ declare function getRateLimits(tier: TrustTier): RateLimitConfig;
37
+ /**
38
+ * Get the minimum tier required for specific rate limits
39
+ */
40
+ declare function getMinTierForLimits(config: {
41
+ requestsPerSecond?: number;
42
+ requestsPerMinute?: number;
43
+ requestsPerHour?: number;
44
+ requestsPerDay?: number;
45
+ }): TrustTier;
46
+ /**
47
+ * Check if a rate limit would be exceeded
48
+ */
49
+ declare function wouldExceedLimit(tier: TrustTier, window: 'second' | 'minute' | 'hour' | 'day', currentCount: number): boolean;
50
+ /**
51
+ * Format rate limit for display
52
+ */
53
+ declare function formatRateLimit(tier: TrustTier): string;
54
+ interface QuotaConfig {
55
+ /** Monthly API calls included */
56
+ monthlyApiCalls: number;
57
+ /** Monthly compute units included */
58
+ monthlyComputeUnits: number;
59
+ /** Monthly storage (bytes) */
60
+ monthlyStorageBytes: number;
61
+ /** Monthly bandwidth (bytes) */
62
+ monthlyBandwidthBytes: number;
63
+ /** Max agents allowed */
64
+ maxAgents: number;
65
+ /** Max webhooks */
66
+ maxWebhooks: number;
67
+ /** Max team members */
68
+ maxTeamMembers: number;
69
+ }
70
+ declare const TIER_QUOTAS: Record<TrustTier, QuotaConfig>;
71
+ /**
72
+ * Get quota for a tier
73
+ */
74
+ declare function getQuota(tier: TrustTier): QuotaConfig;
75
+ /**
76
+ * Check if quota is unlimited (-1)
77
+ */
78
+ declare function isUnlimited(value: number): boolean;
79
+
80
+ export { type QuotaConfig, RATE_LIMITS, type RateLimitConfig, TIER_QUOTAS, formatRateLimit, getMinTierForLimits, getQuota, getRateLimits, isUnlimited, wouldExceedLimit };
@@ -0,0 +1,21 @@
1
+ import {
2
+ RATE_LIMITS,
3
+ TIER_QUOTAS,
4
+ formatRateLimit,
5
+ getMinTierForLimits,
6
+ getQuota,
7
+ getRateLimits,
8
+ isUnlimited,
9
+ wouldExceedLimit
10
+ } from "./chunk-F2R6HBF5.js";
11
+ import "./chunk-PHL3CB53.js";
12
+ export {
13
+ RATE_LIMITS,
14
+ TIER_QUOTAS,
15
+ formatRateLimit,
16
+ getMinTierForLimits,
17
+ getQuota,
18
+ getRateLimits,
19
+ isUnlimited,
20
+ wouldExceedLimit
21
+ };
@@ -0,0 +1,251 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/themes.ts
21
+ var themes_exports = {};
22
+ __export(themes_exports, {
23
+ ACTIVE_THEME: () => ACTIVE_THEME,
24
+ THEMES: () => THEMES,
25
+ getActiveTheme: () => getActiveTheme,
26
+ getAllThemeIds: () => getAllThemeIds,
27
+ themeToCssVars: () => themeToCssVars
28
+ });
29
+ module.exports = __toCommonJS(themes_exports);
30
+ var ACTIVE_THEME = "midnight_cyan";
31
+ var THEMES = {
32
+ // ═══════════════════════════════════════════════════════════════
33
+ // OPTION 1: MIDNIGHT CYAN — Current look, standardized
34
+ // ═══════════════════════════════════════════════════════════════
35
+ midnight_cyan: {
36
+ name: "Midnight Cyan",
37
+ description: "Developer-native. Terminal-adjacent. The current look, unified.",
38
+ bgPrimary: "#0a0a0f",
39
+ bgSurface: "#111118",
40
+ bgInput: "#0d0d14",
41
+ bgNav: "#111118",
42
+ bgCode: "#0d0d14",
43
+ accent: "#06b6d4",
44
+ accentHover: "#22d3ee",
45
+ accentMuted: "rgba(6, 182, 212, 0.1)",
46
+ accentSubtle: "rgba(6, 182, 212, 0.03)",
47
+ textPrimary: "#e0e0e6",
48
+ textHeading: "#ffffff",
49
+ textSecondary: "#888888",
50
+ textTertiary: "#666666",
51
+ border: "#1e1e2e",
52
+ borderInput: "#2a2a3a",
53
+ borderHover: "rgba(6, 182, 212, 0.4)",
54
+ borderDivider: "rgba(255, 255, 255, 0.05)",
55
+ gradientFrom: "#06b6d4",
56
+ gradientTo: "#2dd4bf",
57
+ scrollTrack: "#0a0a0f",
58
+ scrollThumb: "#333340",
59
+ scrollThumbHover: "#06b6d4",
60
+ selectionBg: "rgba(6, 182, 212, 0.3)",
61
+ success: "#22c55e",
62
+ error: "#ef4444",
63
+ warning: "#f97316",
64
+ info: "#3b82f6",
65
+ layerBasis: "#fbbf24",
66
+ layerIntent: "#60a5fa",
67
+ layerEnforce: "#818cf8",
68
+ layerProof: "#34d399",
69
+ fontFamily: "'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif",
70
+ fontImport: "Inter",
71
+ cardBlur: false,
72
+ buttonText: "#000000"
73
+ },
74
+ // ═══════════════════════════════════════════════════════════════
75
+ // OPTION 2: INDIGO AUTHORITY — Governance-forward, institutional
76
+ // ═══════════════════════════════════════════════════════════════
77
+ indigo_authority: {
78
+ name: "Indigo Authority",
79
+ description: "Institutional. Authoritative. Governance-forward.",
80
+ bgPrimary: "#07070d",
81
+ bgSurface: "#12121f",
82
+ bgInput: "#0c0c18",
83
+ bgNav: "#12121f",
84
+ bgCode: "#0c0c18",
85
+ accent: "#818cf8",
86
+ accentHover: "#a5b4fc",
87
+ accentMuted: "rgba(129, 140, 248, 0.1)",
88
+ accentSubtle: "rgba(129, 140, 248, 0.03)",
89
+ textPrimary: "#dcdce6",
90
+ textHeading: "#ffffff",
91
+ textSecondary: "#8888a0",
92
+ textTertiary: "#666680",
93
+ border: "#1e1e30",
94
+ borderInput: "#2a2a40",
95
+ borderHover: "rgba(129, 140, 248, 0.4)",
96
+ borderDivider: "rgba(255, 255, 255, 0.05)",
97
+ gradientFrom: "#818cf8",
98
+ gradientTo: "#c084fc",
99
+ scrollTrack: "#07070d",
100
+ scrollThumb: "#2a2a40",
101
+ scrollThumbHover: "#818cf8",
102
+ selectionBg: "rgba(129, 140, 248, 0.3)",
103
+ success: "#22c55e",
104
+ error: "#ef4444",
105
+ warning: "#f97316",
106
+ info: "#3b82f6",
107
+ layerBasis: "#fbbf24",
108
+ layerIntent: "#60a5fa",
109
+ layerEnforce: "#818cf8",
110
+ layerProof: "#34d399",
111
+ fontFamily: "'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif",
112
+ fontImport: "Inter",
113
+ cardBlur: false,
114
+ buttonText: "#000000"
115
+ },
116
+ // ═══════════════════════════════════════════════════════════════
117
+ // OPTION 3: OBSIDIAN AMBER — Warm, premium, "gold standard"
118
+ // ═══════════════════════════════════════════════════════════════
119
+ obsidian_amber: {
120
+ name: "Obsidian Amber",
121
+ description: "Premium. Warm. The gold standard of AI governance.",
122
+ bgPrimary: "#0a0a08",
123
+ bgSurface: "#141410",
124
+ bgInput: "#0d0d0a",
125
+ bgNav: "#141410",
126
+ bgCode: "#0d0d0a",
127
+ accent: "#f59e0b",
128
+ accentHover: "#fbbf24",
129
+ accentMuted: "rgba(245, 158, 11, 0.1)",
130
+ accentSubtle: "rgba(245, 158, 11, 0.03)",
131
+ textPrimary: "#e6e0d6",
132
+ textHeading: "#ffffff",
133
+ textSecondary: "#8a8478",
134
+ textTertiary: "#666058",
135
+ border: "#2a2820",
136
+ borderInput: "#3a3830",
137
+ borderHover: "rgba(245, 158, 11, 0.4)",
138
+ borderDivider: "rgba(255, 255, 255, 0.05)",
139
+ gradientFrom: "#f59e0b",
140
+ gradientTo: "#f97316",
141
+ scrollTrack: "#0a0a08",
142
+ scrollThumb: "#3a3830",
143
+ scrollThumbHover: "#f59e0b",
144
+ selectionBg: "rgba(245, 158, 11, 0.3)",
145
+ success: "#22c55e",
146
+ error: "#ef4444",
147
+ warning: "#f97316",
148
+ info: "#3b82f6",
149
+ layerBasis: "#fbbf24",
150
+ layerIntent: "#60a5fa",
151
+ layerEnforce: "#818cf8",
152
+ layerProof: "#34d399",
153
+ fontFamily: "'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif",
154
+ fontImport: "Inter",
155
+ cardBlur: false,
156
+ buttonText: "#000000"
157
+ },
158
+ // ═══════════════════════════════════════════════════════════════
159
+ // OPTION 4: ARCTIC GLASS — Modern SaaS, frosted glass
160
+ // ═══════════════════════════════════════════════════════════════
161
+ arctic_glass: {
162
+ name: "Arctic Glass",
163
+ description: "Modern SaaS. Clean. Frosted glass depth.",
164
+ bgPrimary: "#0c0c14",
165
+ bgSurface: "rgba(255, 255, 255, 0.04)",
166
+ bgInput: "rgba(0, 0, 0, 0.3)",
167
+ bgNav: "rgba(12, 12, 20, 0.8)",
168
+ bgCode: "rgba(0, 0, 0, 0.3)",
169
+ accent: "#38bdf8",
170
+ accentHover: "#7dd3fc",
171
+ accentMuted: "rgba(56, 189, 248, 0.1)",
172
+ accentSubtle: "rgba(56, 189, 248, 0.03)",
173
+ textPrimary: "#e2e8f0",
174
+ textHeading: "#f8fafc",
175
+ textSecondary: "#94a3b8",
176
+ textTertiary: "#64748b",
177
+ border: "rgba(255, 255, 255, 0.08)",
178
+ borderInput: "rgba(255, 255, 255, 0.12)",
179
+ borderHover: "rgba(56, 189, 248, 0.4)",
180
+ borderDivider: "rgba(255, 255, 255, 0.05)",
181
+ gradientFrom: "#38bdf8",
182
+ gradientTo: "#06b6d4",
183
+ scrollTrack: "#0c0c14",
184
+ scrollThumb: "rgba(255, 255, 255, 0.1)",
185
+ scrollThumbHover: "#38bdf8",
186
+ selectionBg: "rgba(56, 189, 248, 0.3)",
187
+ success: "#22c55e",
188
+ error: "#ef4444",
189
+ warning: "#f97316",
190
+ info: "#3b82f6",
191
+ layerBasis: "#fbbf24",
192
+ layerIntent: "#60a5fa",
193
+ layerEnforce: "#818cf8",
194
+ layerProof: "#34d399",
195
+ fontFamily: "'Geist', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif",
196
+ fontImport: "Geist",
197
+ cardBlur: true,
198
+ buttonText: "#000000"
199
+ }
200
+ };
201
+ function getActiveTheme() {
202
+ return THEMES[ACTIVE_THEME];
203
+ }
204
+ function getAllThemeIds() {
205
+ return Object.keys(THEMES);
206
+ }
207
+ function themeToCssVars(themeId = ACTIVE_THEME) {
208
+ const t = THEMES[themeId];
209
+ return `
210
+ --bg-primary: ${t.bgPrimary};
211
+ --bg-surface: ${t.bgSurface};
212
+ --bg-input: ${t.bgInput};
213
+ --bg-nav: ${t.bgNav};
214
+ --bg-code: ${t.bgCode};
215
+ --accent: ${t.accent};
216
+ --accent-hover: ${t.accentHover};
217
+ --accent-muted: ${t.accentMuted};
218
+ --accent-subtle: ${t.accentSubtle};
219
+ --text-primary: ${t.textPrimary};
220
+ --text-heading: ${t.textHeading};
221
+ --text-secondary: ${t.textSecondary};
222
+ --text-tertiary: ${t.textTertiary};
223
+ --border: ${t.border};
224
+ --border-input: ${t.borderInput};
225
+ --border-hover: ${t.borderHover};
226
+ --border-divider: ${t.borderDivider};
227
+ --gradient-from: ${t.gradientFrom};
228
+ --gradient-to: ${t.gradientTo};
229
+ --scroll-track: ${t.scrollTrack};
230
+ --scroll-thumb: ${t.scrollThumb};
231
+ --scroll-thumb-hover: ${t.scrollThumbHover};
232
+ --selection-bg: ${t.selectionBg};
233
+ --success: ${t.success};
234
+ --error: ${t.error};
235
+ --warning: ${t.warning};
236
+ --info: ${t.info};
237
+ --layer-basis: ${t.layerBasis};
238
+ --layer-intent: ${t.layerIntent};
239
+ --layer-enforce: ${t.layerEnforce};
240
+ --layer-proof: ${t.layerProof};
241
+ --btn-text: ${t.buttonText};
242
+ `.trim();
243
+ }
244
+ // Annotate the CommonJS export names for ESM import in node:
245
+ 0 && (module.exports = {
246
+ ACTIVE_THEME,
247
+ THEMES,
248
+ getActiveTheme,
249
+ getAllThemeIds,
250
+ themeToCssVars
251
+ });