@elizaos/shared 2.0.0-alpha.144
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/LICENSE +21 -0
- package/awareness/index.d.ts +2 -0
- package/awareness/index.d.ts.map +1 -0
- package/awareness/index.js +2 -0
- package/awareness/index.js.map +1 -0
- package/awareness/registry.d.ts +27 -0
- package/awareness/registry.d.ts.map +1 -0
- package/awareness/registry.js +162 -0
- package/awareness/registry.js.map +1 -0
- package/config/types.agent-defaults.d.ts +333 -0
- package/config/types.agent-defaults.d.ts.map +1 -0
- package/config/types.agent-defaults.js +2 -0
- package/config/types.agent-defaults.js.map +1 -0
- package/config/types.agents.d.ts +112 -0
- package/config/types.agents.d.ts.map +1 -0
- package/config/types.agents.js +2 -0
- package/config/types.agents.js.map +1 -0
- package/config/types.d.ts +8 -0
- package/config/types.d.ts.map +1 -0
- package/config/types.eliza.d.ts +648 -0
- package/config/types.eliza.d.ts.map +1 -0
- package/config/types.eliza.js +2 -0
- package/config/types.eliza.js.map +1 -0
- package/config/types.gateway.d.ts +216 -0
- package/config/types.gateway.d.ts.map +1 -0
- package/config/types.gateway.js +2 -0
- package/config/types.gateway.js.map +1 -0
- package/config/types.hooks.d.ts +107 -0
- package/config/types.hooks.d.ts.map +1 -0
- package/config/types.hooks.js +2 -0
- package/config/types.hooks.js.map +1 -0
- package/config/types.js +8 -0
- package/config/types.js.map +1 -0
- package/config/types.messages.d.ts +176 -0
- package/config/types.messages.d.ts.map +1 -0
- package/config/types.messages.js +2 -0
- package/config/types.messages.js.map +1 -0
- package/config/types.tools.d.ts +400 -0
- package/config/types.tools.d.ts.map +1 -0
- package/config/types.tools.js +2 -0
- package/config/types.tools.js.map +1 -0
- package/connectors.d.ts +13 -0
- package/connectors.d.ts.map +1 -0
- package/connectors.js +92 -0
- package/connectors.js.map +1 -0
- package/contracts/apps.d.ts +204 -0
- package/contracts/apps.d.ts.map +1 -0
- package/contracts/apps.js +189 -0
- package/contracts/apps.js.map +1 -0
- package/contracts/awareness.d.ts +38 -0
- package/contracts/awareness.d.ts.map +1 -0
- package/contracts/awareness.js +8 -0
- package/contracts/awareness.js.map +1 -0
- package/contracts/cloud-topology.d.ts +13 -0
- package/contracts/cloud-topology.d.ts.map +1 -0
- package/contracts/cloud-topology.js +74 -0
- package/contracts/cloud-topology.js.map +1 -0
- package/contracts/config.d.ts +146 -0
- package/contracts/config.d.ts.map +1 -0
- package/contracts/config.js +5 -0
- package/contracts/config.js.map +1 -0
- package/contracts/content-pack.d.ts +131 -0
- package/contracts/content-pack.d.ts.map +1 -0
- package/contracts/content-pack.js +103 -0
- package/contracts/content-pack.js.map +1 -0
- package/contracts/drop.d.ts +20 -0
- package/contracts/drop.d.ts.map +1 -0
- package/contracts/drop.js +5 -0
- package/contracts/drop.js.map +1 -0
- package/contracts/index.d.ts +13 -0
- package/contracts/index.d.ts.map +1 -0
- package/contracts/index.js +13 -0
- package/contracts/index.js.map +1 -0
- package/contracts/lifeops.d.ts +1337 -0
- package/contracts/lifeops.d.ts.map +1 -0
- package/contracts/lifeops.js +279 -0
- package/contracts/lifeops.js.map +1 -0
- package/contracts/onboarding.d.ts +443 -0
- package/contracts/onboarding.d.ts.map +1 -0
- package/contracts/onboarding.js +1021 -0
- package/contracts/onboarding.js.map +1 -0
- package/contracts/permissions.d.ts +38 -0
- package/contracts/permissions.d.ts.map +1 -0
- package/contracts/permissions.js +5 -0
- package/contracts/permissions.js.map +1 -0
- package/contracts/service-routing.d.ts +77 -0
- package/contracts/service-routing.d.ts.map +1 -0
- package/contracts/service-routing.js +228 -0
- package/contracts/service-routing.js.map +1 -0
- package/contracts/theme.d.ts +136 -0
- package/contracts/theme.d.ts.map +1 -0
- package/contracts/theme.js +134 -0
- package/contracts/theme.js.map +1 -0
- package/contracts/verification.d.ts +9 -0
- package/contracts/verification.d.ts.map +1 -0
- package/contracts/verification.js +5 -0
- package/contracts/verification.js.map +1 -0
- package/contracts/wallet.d.ts +626 -0
- package/contracts/wallet.d.ts.map +1 -0
- package/contracts/wallet.js +61 -0
- package/contracts/wallet.js.map +1 -0
- package/dev-settings-banner-style.d.ts +14 -0
- package/dev-settings-banner-style.d.ts.map +1 -0
- package/dev-settings-banner-style.js +58 -0
- package/dev-settings-banner-style.js.map +1 -0
- package/dev-settings-figlet-heading.d.ts +22 -0
- package/dev-settings-figlet-heading.d.ts.map +1 -0
- package/dev-settings-figlet-heading.js +56 -0
- package/dev-settings-figlet-heading.js.map +1 -0
- package/dev-settings-table.d.ts +47 -0
- package/dev-settings-table.d.ts.map +1 -0
- package/dev-settings-table.js +189 -0
- package/dev-settings-table.js.map +1 -0
- package/eliza-core-roles.d.ts +70 -0
- package/eliza-core-roles.d.ts.map +1 -0
- package/eliza-core-roles.js +546 -0
- package/eliza-core-roles.js.map +1 -0
- package/env-utils.d.ts +5 -0
- package/env-utils.d.ts.map +1 -0
- package/env-utils.impl.d.ts +2 -0
- package/env-utils.impl.d.ts.map +1 -0
- package/env-utils.impl.js +17 -0
- package/env-utils.impl.js.map +1 -0
- package/env-utils.js +5 -0
- package/env-utils.js.map +1 -0
- package/i18n/generated/validation-keyword-data.d.ts +1030 -0
- package/i18n/generated/validation-keyword-data.d.ts.map +1 -0
- package/i18n/generated/validation-keyword-data.js +1034 -0
- package/i18n/generated/validation-keyword-data.js.map +1 -0
- package/i18n/keyword-matching.d.ts +23 -0
- package/i18n/keyword-matching.d.ts.map +1 -0
- package/i18n/keyword-matching.js +113 -0
- package/i18n/keyword-matching.js.map +1 -0
- package/i18n/validation-keywords.d.ts +13 -0
- package/i18n/validation-keywords.d.ts.map +1 -0
- package/i18n/validation-keywords.js +13 -0
- package/i18n/validation-keywords.js.map +1 -0
- package/index.d.ts +13 -0
- package/index.d.ts.map +1 -0
- package/index.js +13 -0
- package/index.js.map +1 -0
- package/onboarding-presets.characters.d.ts +22 -0
- package/onboarding-presets.characters.d.ts.map +1 -0
- package/onboarding-presets.characters.js +2607 -0
- package/onboarding-presets.characters.js.map +1 -0
- package/onboarding-presets.d.ts +40 -0
- package/onboarding-presets.d.ts.map +1 -0
- package/onboarding-presets.js +177 -0
- package/onboarding-presets.js.map +1 -0
- package/onboarding-presets.shared.d.ts +2 -0
- package/onboarding-presets.shared.d.ts.map +1 -0
- package/onboarding-presets.shared.js +8 -0
- package/onboarding-presets.shared.js.map +1 -0
- package/package.json +173 -0
- package/restart.d.ts +27 -0
- package/restart.d.ts.map +1 -0
- package/restart.js +29 -0
- package/restart.js.map +1 -0
- package/runtime-env.d.ts +82 -0
- package/runtime-env.d.ts.map +1 -0
- package/runtime-env.js +243 -0
- package/runtime-env.js.map +1 -0
- package/settings-debug.d.ts +20 -0
- package/settings-debug.d.ts.map +1 -0
- package/settings-debug.js +117 -0
- package/settings-debug.js.map +1 -0
- package/spoken-text.d.ts +2 -0
- package/spoken-text.d.ts.map +1 -0
- package/spoken-text.js +57 -0
- package/spoken-text.js.map +1 -0
- package/themes/index.d.ts +7 -0
- package/themes/index.d.ts.map +1 -0
- package/themes/index.js +6 -0
- package/themes/index.js.map +1 -0
- package/themes/presets.d.ts +15 -0
- package/themes/presets.d.ts.map +1 -0
- package/themes/presets.js +789 -0
- package/themes/presets.js.map +1 -0
- package/types.d.ts +27 -0
- package/types.d.ts.map +1 -0
- package/types.js +2 -0
- package/types.js.map +1 -0
- package/validation-keywords.d.ts +2 -0
- package/validation-keywords.d.ts.map +1 -0
- package/validation-keywords.js +2 -0
- package/validation-keywords.js.map +1 -0
package/runtime-env.d.ts
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
export declare const DEFAULT_SERVER_ONLY_PORT = 2138;
|
|
2
|
+
export declare const DEFAULT_DESKTOP_API_PORT = 31337;
|
|
3
|
+
export declare const DEFAULT_DESKTOP_UI_PORT = 2138;
|
|
4
|
+
export type RuntimeEnvRecord = Record<string, string | undefined>;
|
|
5
|
+
export interface ResolvedRuntimePorts {
|
|
6
|
+
serverOnlyPort: number;
|
|
7
|
+
desktopApiPort: number;
|
|
8
|
+
desktopUiPort: number;
|
|
9
|
+
}
|
|
10
|
+
export interface ResolvedApiSecurityConfig {
|
|
11
|
+
bindHost: string;
|
|
12
|
+
token: string | null;
|
|
13
|
+
disableAutoApiToken: boolean;
|
|
14
|
+
allowedOrigins: string[];
|
|
15
|
+
allowedHosts: string[];
|
|
16
|
+
allowNullOrigin: boolean;
|
|
17
|
+
isLoopbackBind: boolean;
|
|
18
|
+
isWildcardBind: boolean;
|
|
19
|
+
}
|
|
20
|
+
export interface ElizaRuntimeEnv {
|
|
21
|
+
apiBind: string;
|
|
22
|
+
apiToken: string | undefined;
|
|
23
|
+
allowedOrigins: string[];
|
|
24
|
+
allowedHosts: string[];
|
|
25
|
+
allowNullOrigin: boolean;
|
|
26
|
+
disableAutoApiToken: boolean;
|
|
27
|
+
desktopApiPort: number;
|
|
28
|
+
singleProcessPort: number;
|
|
29
|
+
uiPort: number;
|
|
30
|
+
}
|
|
31
|
+
export declare const ELIZA_RUNTIME_ENV_KEYS: {
|
|
32
|
+
readonly apiBind: readonly ["ELIZA_API_BIND"];
|
|
33
|
+
readonly apiToken: readonly ["ELIZA_API_TOKEN"];
|
|
34
|
+
readonly allowedOrigins: readonly ["ELIZA_ALLOWED_ORIGINS", "CORS_ORIGINS"];
|
|
35
|
+
readonly allowedHosts: readonly ["ELIZA_ALLOWED_HOSTS"];
|
|
36
|
+
readonly allowNullOrigin: readonly ["ELIZA_ALLOW_NULL_ORIGIN"];
|
|
37
|
+
readonly disableAutoApiToken: readonly ["ELIZA_DISABLE_AUTO_API_TOKEN"];
|
|
38
|
+
readonly desktopApiPort: readonly ["ELIZA_API_PORT", "ELIZA_PORT"];
|
|
39
|
+
readonly singleProcessPort: readonly ["ELIZA_PORT", "ELIZA_UI_PORT"];
|
|
40
|
+
readonly desktopUiPort: readonly ["ELIZA_UI_PORT"];
|
|
41
|
+
};
|
|
42
|
+
/** First key in `keys` with a non-empty trimmed string value. */
|
|
43
|
+
export declare function firstWinningEnvString(env: RuntimeEnvRecord, keys: readonly string[]): {
|
|
44
|
+
key: string;
|
|
45
|
+
value: string;
|
|
46
|
+
} | null;
|
|
47
|
+
export interface PortPreferenceResolution {
|
|
48
|
+
port: number;
|
|
49
|
+
sourceLabel: string;
|
|
50
|
+
changeLabel: string;
|
|
51
|
+
winningKey: string | null;
|
|
52
|
+
}
|
|
53
|
+
/** Preferred desktop API port from env precedence (before loopback reallocation). */
|
|
54
|
+
export declare function resolveDesktopApiPortPreference(env?: RuntimeEnvRecord): PortPreferenceResolution;
|
|
55
|
+
/** Preferred dashboard UI port from ELIZA_UI_PORT (Vite dev), before reallocation. */
|
|
56
|
+
export declare function resolveDesktopUiPortPreference(env?: RuntimeEnvRecord): PortPreferenceResolution;
|
|
57
|
+
export declare function stripOptionalHostPort(value: string): string;
|
|
58
|
+
export declare function isLoopbackBindHost(host: string): boolean;
|
|
59
|
+
export declare function isWildcardBindHost(host: string): boolean;
|
|
60
|
+
export declare function resolveRuntimePorts(env?: RuntimeEnvRecord): ResolvedRuntimePorts;
|
|
61
|
+
export declare function resolveServerOnlyPort(env?: RuntimeEnvRecord): number;
|
|
62
|
+
export declare function resolveDesktopApiPort(env?: RuntimeEnvRecord): number;
|
|
63
|
+
export declare function resolveDesktopUiPort(env?: RuntimeEnvRecord): number;
|
|
64
|
+
export declare function resolveSingleProcessPort(env?: RuntimeEnvRecord): number;
|
|
65
|
+
export declare function resolveUiPort(env?: RuntimeEnvRecord): number;
|
|
66
|
+
export declare function resolveApiSecurityConfig(env?: RuntimeEnvRecord): ResolvedApiSecurityConfig;
|
|
67
|
+
export declare function resolveApiBindHost(env?: RuntimeEnvRecord): string;
|
|
68
|
+
export declare function resolveApiToken(env?: RuntimeEnvRecord): string | null;
|
|
69
|
+
export declare function resolveConfiguredApiToken(env?: RuntimeEnvRecord): string | undefined;
|
|
70
|
+
export declare function resolveAllowedOrigins(env?: RuntimeEnvRecord): string[];
|
|
71
|
+
export declare function resolveApiAllowedOrigins(env?: RuntimeEnvRecord): string[];
|
|
72
|
+
export declare function resolveAllowedHosts(env?: RuntimeEnvRecord): string[];
|
|
73
|
+
export declare function resolveApiAllowedHosts(env?: RuntimeEnvRecord): string[];
|
|
74
|
+
export declare function isNullOriginAllowed(env?: RuntimeEnvRecord): boolean;
|
|
75
|
+
export declare function resolveAllowNullOrigin(env?: RuntimeEnvRecord): boolean;
|
|
76
|
+
export declare function resolveDisableAutoApiToken(env?: RuntimeEnvRecord): boolean;
|
|
77
|
+
export declare function setApiToken(env: RuntimeEnvRecord, token: string): void;
|
|
78
|
+
export declare function syncResolvedApiPort(env: RuntimeEnvRecord, actualPort: number, opts?: {
|
|
79
|
+
overwriteUiPort?: boolean;
|
|
80
|
+
}): void;
|
|
81
|
+
export declare function resolveElizaRuntimeEnv(env?: RuntimeEnvRecord): ElizaRuntimeEnv;
|
|
82
|
+
//# sourceMappingURL=runtime-env.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-env.d.ts","sourceRoot":"","sources":["../src/runtime-env.ts"],"names":[],"mappings":"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"}
|
package/runtime-env.js
ADDED
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
import { isTruthyEnvValue } from "./env-utils.impl.js";
|
|
2
|
+
const DEFAULT_API_BIND_HOST = "127.0.0.1";
|
|
3
|
+
export const DEFAULT_SERVER_ONLY_PORT = 2138;
|
|
4
|
+
// Dev mode splits the API from the Vite UI: API on 31337, UI on 2138.
|
|
5
|
+
export const DEFAULT_DESKTOP_API_PORT = 31337;
|
|
6
|
+
export const DEFAULT_DESKTOP_UI_PORT = 2138;
|
|
7
|
+
const LOOPBACK_BIND_RE = /^(localhost|127(?:\.\d{1,3}){3}|::1|\[::1\]|0:0:0:0:0:0:0:1|::ffff:127(?:\.\d{1,3}){3})$/i;
|
|
8
|
+
const WILDCARD_BIND_RE = /^(0\.0\.0\.0|::|0:0:0:0:0:0:0:0)$/i;
|
|
9
|
+
const API_BIND_KEYS = ["ELIZA_API_BIND"];
|
|
10
|
+
const API_TOKEN_KEYS = ["ELIZA_API_TOKEN"];
|
|
11
|
+
const API_ALLOWED_ORIGINS_KEYS = [
|
|
12
|
+
"ELIZA_ALLOWED_ORIGINS",
|
|
13
|
+
"CORS_ORIGINS",
|
|
14
|
+
];
|
|
15
|
+
const API_ALLOWED_HOSTS_KEYS = ["ELIZA_ALLOWED_HOSTS"];
|
|
16
|
+
const API_ALLOW_NULL_ORIGIN_KEYS = ["ELIZA_ALLOW_NULL_ORIGIN"];
|
|
17
|
+
const DISABLE_AUTO_API_TOKEN_KEYS = [
|
|
18
|
+
"ELIZA_DISABLE_AUTO_API_TOKEN",
|
|
19
|
+
];
|
|
20
|
+
const DESKTOP_API_PORT_KEYS = [
|
|
21
|
+
"ELIZA_API_PORT",
|
|
22
|
+
"ELIZA_PORT",
|
|
23
|
+
];
|
|
24
|
+
const DESKTOP_UI_PORT_KEYS = ["ELIZA_UI_PORT"];
|
|
25
|
+
const SINGLE_PROCESS_PORT_KEYS = ["ELIZA_PORT", "ELIZA_UI_PORT"];
|
|
26
|
+
export const ELIZA_RUNTIME_ENV_KEYS = {
|
|
27
|
+
apiBind: API_BIND_KEYS,
|
|
28
|
+
apiToken: API_TOKEN_KEYS,
|
|
29
|
+
allowedOrigins: API_ALLOWED_ORIGINS_KEYS,
|
|
30
|
+
allowedHosts: API_ALLOWED_HOSTS_KEYS,
|
|
31
|
+
allowNullOrigin: API_ALLOW_NULL_ORIGIN_KEYS,
|
|
32
|
+
disableAutoApiToken: DISABLE_AUTO_API_TOKEN_KEYS,
|
|
33
|
+
desktopApiPort: DESKTOP_API_PORT_KEYS,
|
|
34
|
+
singleProcessPort: SINGLE_PROCESS_PORT_KEYS,
|
|
35
|
+
desktopUiPort: DESKTOP_UI_PORT_KEYS,
|
|
36
|
+
};
|
|
37
|
+
function firstNonEmpty(env, keys) {
|
|
38
|
+
for (const key of keys) {
|
|
39
|
+
const value = env[key]?.trim();
|
|
40
|
+
if (value)
|
|
41
|
+
return value;
|
|
42
|
+
}
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
/** First key in `keys` with a non-empty trimmed string value. */
|
|
46
|
+
export function firstWinningEnvString(env, keys) {
|
|
47
|
+
for (const key of keys) {
|
|
48
|
+
const value = env[key]?.trim();
|
|
49
|
+
if (value)
|
|
50
|
+
return { key, value };
|
|
51
|
+
}
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
/** Preferred desktop API port from env precedence (before loopback reallocation). */
|
|
55
|
+
export function resolveDesktopApiPortPreference(env = process.env) {
|
|
56
|
+
for (const key of DESKTOP_API_PORT_KEYS) {
|
|
57
|
+
const p = parsePositivePort(env[key]);
|
|
58
|
+
if (p !== null) {
|
|
59
|
+
return {
|
|
60
|
+
port: p,
|
|
61
|
+
sourceLabel: `env set — ${key}=${p}`,
|
|
62
|
+
changeLabel: `unset ${key} or set ELIZA_API_PORT / ELIZA_PORT (first wins); built-in ${DEFAULT_DESKTOP_API_PORT}`,
|
|
63
|
+
winningKey: key,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return {
|
|
68
|
+
port: DEFAULT_DESKTOP_API_PORT,
|
|
69
|
+
sourceLabel: `default (unset — built-in ${DEFAULT_DESKTOP_API_PORT})`,
|
|
70
|
+
changeLabel: "export ELIZA_API_PORT=<port> (or ELIZA_PORT; first non-empty wins)",
|
|
71
|
+
winningKey: null,
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
/** Preferred dashboard UI port from ELIZA_UI_PORT (Vite dev), before reallocation. */
|
|
75
|
+
export function resolveDesktopUiPortPreference(env = process.env) {
|
|
76
|
+
for (const key of DESKTOP_UI_PORT_KEYS) {
|
|
77
|
+
const p = parsePositivePort(env[key]);
|
|
78
|
+
if (p !== null) {
|
|
79
|
+
return {
|
|
80
|
+
port: p,
|
|
81
|
+
sourceLabel: `env set — ${key}=${p}`,
|
|
82
|
+
changeLabel: `unset ${key} for built-in ${DEFAULT_DESKTOP_UI_PORT}`,
|
|
83
|
+
winningKey: key,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return {
|
|
88
|
+
port: DEFAULT_DESKTOP_UI_PORT,
|
|
89
|
+
sourceLabel: `default (unset — built-in ${DEFAULT_DESKTOP_UI_PORT})`,
|
|
90
|
+
changeLabel: "export ELIZA_UI_PORT=<port>",
|
|
91
|
+
winningKey: null,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
function parsePositivePort(raw) {
|
|
95
|
+
if (!raw)
|
|
96
|
+
return null;
|
|
97
|
+
const parsed = Number(raw);
|
|
98
|
+
return Number.isInteger(parsed) && parsed > 0 && parsed < 65536
|
|
99
|
+
? parsed
|
|
100
|
+
: null;
|
|
101
|
+
}
|
|
102
|
+
function parseCsv(env, keys) {
|
|
103
|
+
const raw = firstNonEmpty(env, keys);
|
|
104
|
+
if (!raw)
|
|
105
|
+
return [];
|
|
106
|
+
return raw
|
|
107
|
+
.split(",")
|
|
108
|
+
.map((value) => value.trim())
|
|
109
|
+
.filter(Boolean);
|
|
110
|
+
}
|
|
111
|
+
function parseEnabledFlag(env, keys) {
|
|
112
|
+
return isTruthyEnvValue(firstNonEmpty(env, keys) ?? undefined);
|
|
113
|
+
}
|
|
114
|
+
export function stripOptionalHostPort(value) {
|
|
115
|
+
const trimmed = value.trim();
|
|
116
|
+
if (!trimmed)
|
|
117
|
+
return "";
|
|
118
|
+
const lower = trimmed.toLowerCase();
|
|
119
|
+
if (lower.startsWith("http://") || lower.startsWith("https://")) {
|
|
120
|
+
try {
|
|
121
|
+
return new URL(lower).hostname.toLowerCase();
|
|
122
|
+
}
|
|
123
|
+
catch {
|
|
124
|
+
return lower;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
if (lower.startsWith("[")) {
|
|
128
|
+
const close = lower.indexOf("]");
|
|
129
|
+
return close > 0 ? lower.slice(1, close) : lower.slice(1);
|
|
130
|
+
}
|
|
131
|
+
if ((lower.match(/:/g) || []).length >= 2) {
|
|
132
|
+
return lower;
|
|
133
|
+
}
|
|
134
|
+
return lower.replace(/:\d+$/, "");
|
|
135
|
+
}
|
|
136
|
+
export function isLoopbackBindHost(host) {
|
|
137
|
+
const normalized = stripOptionalHostPort(host);
|
|
138
|
+
if (!normalized)
|
|
139
|
+
return true;
|
|
140
|
+
if (LOOPBACK_BIND_RE.test(normalized))
|
|
141
|
+
return true;
|
|
142
|
+
return normalized.startsWith("127.");
|
|
143
|
+
}
|
|
144
|
+
export function isWildcardBindHost(host) {
|
|
145
|
+
const normalized = stripOptionalHostPort(host);
|
|
146
|
+
return WILDCARD_BIND_RE.test(normalized);
|
|
147
|
+
}
|
|
148
|
+
export function resolveRuntimePorts(env = process.env) {
|
|
149
|
+
return {
|
|
150
|
+
serverOnlyPort: parsePositivePort(env.ELIZA_PORT) ??
|
|
151
|
+
parsePositivePort(env.ELIZA_UI_PORT) ??
|
|
152
|
+
DEFAULT_SERVER_ONLY_PORT,
|
|
153
|
+
desktopApiPort: parsePositivePort(env.ELIZA_API_PORT) ??
|
|
154
|
+
parsePositivePort(env.ELIZA_PORT) ??
|
|
155
|
+
DEFAULT_DESKTOP_API_PORT,
|
|
156
|
+
desktopUiPort: parsePositivePort(env.ELIZA_UI_PORT) ?? DEFAULT_DESKTOP_UI_PORT,
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
export function resolveServerOnlyPort(env = process.env) {
|
|
160
|
+
return resolveRuntimePorts(env).serverOnlyPort;
|
|
161
|
+
}
|
|
162
|
+
export function resolveDesktopApiPort(env = process.env) {
|
|
163
|
+
return resolveRuntimePorts(env).desktopApiPort;
|
|
164
|
+
}
|
|
165
|
+
export function resolveDesktopUiPort(env = process.env) {
|
|
166
|
+
return resolveRuntimePorts(env).desktopUiPort;
|
|
167
|
+
}
|
|
168
|
+
export function resolveSingleProcessPort(env = process.env) {
|
|
169
|
+
return resolveServerOnlyPort(env);
|
|
170
|
+
}
|
|
171
|
+
export function resolveUiPort(env = process.env) {
|
|
172
|
+
return resolveDesktopUiPort(env);
|
|
173
|
+
}
|
|
174
|
+
export function resolveApiSecurityConfig(env = process.env) {
|
|
175
|
+
const bindHost = firstNonEmpty(env, API_BIND_KEYS) ?? DEFAULT_API_BIND_HOST;
|
|
176
|
+
return {
|
|
177
|
+
bindHost,
|
|
178
|
+
token: firstNonEmpty(env, API_TOKEN_KEYS),
|
|
179
|
+
disableAutoApiToken: parseEnabledFlag(env, DISABLE_AUTO_API_TOKEN_KEYS),
|
|
180
|
+
allowedOrigins: parseCsv(env, API_ALLOWED_ORIGINS_KEYS),
|
|
181
|
+
allowedHosts: parseCsv(env, API_ALLOWED_HOSTS_KEYS),
|
|
182
|
+
allowNullOrigin: parseEnabledFlag(env, API_ALLOW_NULL_ORIGIN_KEYS),
|
|
183
|
+
isLoopbackBind: isLoopbackBindHost(bindHost),
|
|
184
|
+
isWildcardBind: isWildcardBindHost(bindHost),
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
export function resolveApiBindHost(env = process.env) {
|
|
188
|
+
return resolveApiSecurityConfig(env).bindHost;
|
|
189
|
+
}
|
|
190
|
+
export function resolveApiToken(env = process.env) {
|
|
191
|
+
return resolveApiSecurityConfig(env).token;
|
|
192
|
+
}
|
|
193
|
+
export function resolveConfiguredApiToken(env = process.env) {
|
|
194
|
+
return resolveApiToken(env) ?? undefined;
|
|
195
|
+
}
|
|
196
|
+
export function resolveAllowedOrigins(env = process.env) {
|
|
197
|
+
return resolveApiSecurityConfig(env).allowedOrigins;
|
|
198
|
+
}
|
|
199
|
+
export function resolveApiAllowedOrigins(env = process.env) {
|
|
200
|
+
return resolveAllowedOrigins(env);
|
|
201
|
+
}
|
|
202
|
+
export function resolveAllowedHosts(env = process.env) {
|
|
203
|
+
return resolveApiSecurityConfig(env).allowedHosts;
|
|
204
|
+
}
|
|
205
|
+
export function resolveApiAllowedHosts(env = process.env) {
|
|
206
|
+
return resolveAllowedHosts(env);
|
|
207
|
+
}
|
|
208
|
+
export function isNullOriginAllowed(env = process.env) {
|
|
209
|
+
return resolveApiSecurityConfig(env).allowNullOrigin;
|
|
210
|
+
}
|
|
211
|
+
export function resolveAllowNullOrigin(env = process.env) {
|
|
212
|
+
return isNullOriginAllowed(env);
|
|
213
|
+
}
|
|
214
|
+
export function resolveDisableAutoApiToken(env = process.env) {
|
|
215
|
+
return resolveApiSecurityConfig(env).disableAutoApiToken;
|
|
216
|
+
}
|
|
217
|
+
export function setApiToken(env = process.env, token) {
|
|
218
|
+
env.ELIZA_API_TOKEN = token;
|
|
219
|
+
}
|
|
220
|
+
export function syncResolvedApiPort(env = process.env, actualPort, opts) {
|
|
221
|
+
const normalizedPort = String(actualPort);
|
|
222
|
+
env.ELIZA_API_PORT = normalizedPort;
|
|
223
|
+
env.ELIZA_PORT = normalizedPort;
|
|
224
|
+
if (opts?.overwriteUiPort) {
|
|
225
|
+
env.ELIZA_UI_PORT = normalizedPort;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
export function resolveElizaRuntimeEnv(env = process.env) {
|
|
229
|
+
const ports = resolveRuntimePorts(env);
|
|
230
|
+
const security = resolveApiSecurityConfig(env);
|
|
231
|
+
return {
|
|
232
|
+
apiBind: security.bindHost,
|
|
233
|
+
apiToken: security.token ?? undefined,
|
|
234
|
+
allowedOrigins: security.allowedOrigins,
|
|
235
|
+
allowedHosts: security.allowedHosts,
|
|
236
|
+
allowNullOrigin: security.allowNullOrigin,
|
|
237
|
+
disableAutoApiToken: security.disableAutoApiToken,
|
|
238
|
+
desktopApiPort: ports.desktopApiPort,
|
|
239
|
+
singleProcessPort: ports.serverOnlyPort,
|
|
240
|
+
uiPort: ports.desktopUiPort,
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
//# sourceMappingURL=runtime-env.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-env.js","sourceRoot":"","sources":["../src/runtime-env.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Opt-in verbose logging for settings load / change / save flows.
|
|
3
|
+
* Enable with ELIZA_SETTINGS_DEBUG=1 (and Vite: same env at build time, or VITE_ELIZA_SETTINGS_DEBUG=1).
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* True when settings debug is enabled (Node: process.env; browser: import.meta.env from Vite define).
|
|
7
|
+
*/
|
|
8
|
+
export declare function isElizaSettingsDebugEnabled(options?: {
|
|
9
|
+
/** Node / Bun process.env */
|
|
10
|
+
env?: Record<string, string | undefined> | null;
|
|
11
|
+
/** Vite `import.meta.env` (pass only in browser bundles). */
|
|
12
|
+
importMetaEnv?: Record<string, unknown> | null;
|
|
13
|
+
}): boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Deep-clone-ish snapshot safe to log (secrets masked). Not for security boundaries — debug only.
|
|
16
|
+
*/
|
|
17
|
+
export declare function sanitizeForSettingsDebug(value: unknown, depth?: number, seen?: WeakSet<object>): unknown;
|
|
18
|
+
/** Compact cloud slice for logs (no raw secrets). */
|
|
19
|
+
export declare function settingsDebugCloudSummary(cloud: Record<string, unknown> | null | undefined): Record<string, unknown>;
|
|
20
|
+
//# sourceMappingURL=settings-debug.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings-debug.d.ts","sourceRoot":"","sources":["../src/settings-debug.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAYH;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,CAAC,EAAE;IACpD,6BAA6B;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC;IAChD,6DAA6D;IAC7D,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAChD,GAAG,OAAO,CAiBV;AAQD;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,OAAO,EACd,KAAK,SAAI,EACT,IAAI,GAAE,OAAO,CAAC,MAAM,CAAiB,GACpC,OAAO,CA+CT;AAED,qDAAqD;AACrD,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,GAChD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAazB"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Opt-in verbose logging for settings load / change / save flows.
|
|
3
|
+
* Enable with ELIZA_SETTINGS_DEBUG=1 (and Vite: same env at build time, or VITE_ELIZA_SETTINGS_DEBUG=1).
|
|
4
|
+
*/
|
|
5
|
+
import { isTruthyEnvValue } from "./env-utils.impl.js";
|
|
6
|
+
/** Keys whose values are always redacted in debug dumps. */
|
|
7
|
+
const SENSITIVE_KEY_RE = /(?:^|\.|_)(?:secret|password|token|apikey|api_key|privatekey|private_key|mnemonic|credential|authorization|bearer|cookie|sessionkey|session_id)(?:\.|_|$)|^apikey$|_api_key$|_key$/i;
|
|
8
|
+
const MAX_DEPTH = 14;
|
|
9
|
+
const MAX_ARRAY = 40;
|
|
10
|
+
const MAX_STRING = 120;
|
|
11
|
+
/**
|
|
12
|
+
* True when settings debug is enabled (Node: process.env; browser: import.meta.env from Vite define).
|
|
13
|
+
*/
|
|
14
|
+
export function isElizaSettingsDebugEnabled(options) {
|
|
15
|
+
const im = options?.importMetaEnv;
|
|
16
|
+
if (im) {
|
|
17
|
+
if (isTruthyEnvValue(String(im.ELIZA_SETTINGS_DEBUG ?? "").trim()))
|
|
18
|
+
return true;
|
|
19
|
+
if (isTruthyEnvValue(String(im.VITE_ELIZA_SETTINGS_DEBUG ?? "").trim()))
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
const e = options?.env;
|
|
23
|
+
if (e) {
|
|
24
|
+
if (isTruthyEnvValue(e.ELIZA_SETTINGS_DEBUG))
|
|
25
|
+
return true;
|
|
26
|
+
if (isTruthyEnvValue(e.VITE_ELIZA_SETTINGS_DEBUG))
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
if (typeof process !== "undefined" && process.env) {
|
|
30
|
+
if (isTruthyEnvValue(process.env.ELIZA_SETTINGS_DEBUG))
|
|
31
|
+
return true;
|
|
32
|
+
if (isTruthyEnvValue(process.env.VITE_ELIZA_SETTINGS_DEBUG))
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
function maskString(s) {
|
|
38
|
+
const t = s.trim();
|
|
39
|
+
if (t.length <= 8)
|
|
40
|
+
return "[redacted:short]";
|
|
41
|
+
return `${t.slice(0, 4)}…${t.slice(-2)} (${t.length} chars)`;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Deep-clone-ish snapshot safe to log (secrets masked). Not for security boundaries — debug only.
|
|
45
|
+
*/
|
|
46
|
+
export function sanitizeForSettingsDebug(value, depth = 0, seen = new WeakSet()) {
|
|
47
|
+
if (depth > MAX_DEPTH)
|
|
48
|
+
return "[max-depth]";
|
|
49
|
+
if (value === null || value === undefined)
|
|
50
|
+
return value;
|
|
51
|
+
if (typeof value === "boolean" || typeof value === "number")
|
|
52
|
+
return value;
|
|
53
|
+
if (typeof value === "string") {
|
|
54
|
+
const t = value.trim();
|
|
55
|
+
if (t.length === 0)
|
|
56
|
+
return "";
|
|
57
|
+
if (t.toUpperCase() === "[REDACTED]")
|
|
58
|
+
return "[REDACTED]";
|
|
59
|
+
if (t.length > 48 || /^(sk-|pk_|Bearer\s)/i.test(t))
|
|
60
|
+
return maskString(t);
|
|
61
|
+
if (t.length > MAX_STRING)
|
|
62
|
+
return `${t.slice(0, MAX_STRING)}…`;
|
|
63
|
+
return t;
|
|
64
|
+
}
|
|
65
|
+
if (typeof value === "bigint")
|
|
66
|
+
return String(value);
|
|
67
|
+
if (typeof value === "function")
|
|
68
|
+
return `[fn ${value.name || "anonymous"}]`;
|
|
69
|
+
if (typeof value !== "object")
|
|
70
|
+
return String(value);
|
|
71
|
+
if (seen.has(value))
|
|
72
|
+
return "[circular]";
|
|
73
|
+
seen.add(value);
|
|
74
|
+
if (Array.isArray(value)) {
|
|
75
|
+
const out = [];
|
|
76
|
+
const cap = Math.min(value.length, MAX_ARRAY);
|
|
77
|
+
for (let i = 0; i < cap; i++) {
|
|
78
|
+
out.push(sanitizeForSettingsDebug(value[i], depth + 1, seen));
|
|
79
|
+
}
|
|
80
|
+
if (value.length > cap) {
|
|
81
|
+
out.push(`… +${value.length - cap} more`);
|
|
82
|
+
}
|
|
83
|
+
return out;
|
|
84
|
+
}
|
|
85
|
+
const o = value;
|
|
86
|
+
const out = {};
|
|
87
|
+
for (const [k, v] of Object.entries(o)) {
|
|
88
|
+
if (SENSITIVE_KEY_RE.test(k)) {
|
|
89
|
+
out[k] =
|
|
90
|
+
typeof v === "string" && v.trim()
|
|
91
|
+
? maskString(v)
|
|
92
|
+
: v == null || v === ""
|
|
93
|
+
? v
|
|
94
|
+
: "[redacted]";
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
out[k] = sanitizeForSettingsDebug(v, depth + 1, seen);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return out;
|
|
101
|
+
}
|
|
102
|
+
/** Compact cloud slice for logs (no raw secrets). */
|
|
103
|
+
export function settingsDebugCloudSummary(cloud) {
|
|
104
|
+
if (!cloud || typeof cloud !== "object")
|
|
105
|
+
return { cloud: null };
|
|
106
|
+
const apiKey = cloud.apiKey;
|
|
107
|
+
return {
|
|
108
|
+
enabled: cloud.enabled,
|
|
109
|
+
inferenceMode: cloud.inferenceMode,
|
|
110
|
+
services: cloud.services,
|
|
111
|
+
baseUrl: cloud.baseUrl,
|
|
112
|
+
hasApiKey: typeof apiKey === "string"
|
|
113
|
+
? apiKey.trim().length > 0
|
|
114
|
+
: Boolean(apiKey),
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=settings-debug.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings-debug.js","sourceRoot":"","sources":["../src/settings-debug.ts"],"names":[],"mappings":"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"}
|
package/spoken-text.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spoken-text.d.ts","sourceRoot":"","sources":["../src/spoken-text.ts"],"names":[],"mappings":"AA2DA,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAKxD"}
|
package/spoken-text.js
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
function collapseWhitespace(input) {
|
|
2
|
+
return input.replace(/\s+/g, " ").trim();
|
|
3
|
+
}
|
|
4
|
+
function stripUrls(input) {
|
|
5
|
+
return input.replace(/\bhttps?:\/\/\S+/gi, " ");
|
|
6
|
+
}
|
|
7
|
+
function stripThinkingAndMarkup(input) {
|
|
8
|
+
let text = input;
|
|
9
|
+
text = text.replace(/<think\b[^>]*>[\s\S]*?<\/think>/gi, " ");
|
|
10
|
+
text = text.replace(/<(analysis|reasoning|scratchpad|tool_calls?|tools?)\b[^>]*>[\s\S]*?<\/\1>/gi, " ");
|
|
11
|
+
text = text.replace(/```[\s\S]*?```/g, " ");
|
|
12
|
+
text = text.replace(/`([^`]+)`/g, "$1");
|
|
13
|
+
text = text.replace(/\[([^\]]+)\]\([^)]+\)/g, "$1");
|
|
14
|
+
text = text.replace(/<[^>\n]+>/g, " ");
|
|
15
|
+
text = stripUrls(text);
|
|
16
|
+
return text;
|
|
17
|
+
}
|
|
18
|
+
const NON_SPEECH_SEGMENT_PATTERNS = [
|
|
19
|
+
/\*{1,2}[^*\n]+\*{1,2}/g,
|
|
20
|
+
/\([^()]*\)/g,
|
|
21
|
+
/\[[^[\]]*\]/g,
|
|
22
|
+
/\{[^{}]*\}/g,
|
|
23
|
+
];
|
|
24
|
+
function stripNonSpeechDirections(input) {
|
|
25
|
+
let text = input;
|
|
26
|
+
while (true) {
|
|
27
|
+
const previous = text;
|
|
28
|
+
for (const pattern of NON_SPEECH_SEGMENT_PATTERNS) {
|
|
29
|
+
text = text.replace(pattern, " ");
|
|
30
|
+
}
|
|
31
|
+
if (text === previous) {
|
|
32
|
+
break;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return text.replace(/[*()[\]{}]+/g, " ");
|
|
36
|
+
}
|
|
37
|
+
function sanitizeSpeechPunctuation(input) {
|
|
38
|
+
let text = input;
|
|
39
|
+
text = text.replace(/[•·■▪◦]/g, " ");
|
|
40
|
+
text = text.replace(/[“”]/g, '"');
|
|
41
|
+
text = text.replace(/[‘’]/g, "'");
|
|
42
|
+
text = text.replace(/[…]/g, "...");
|
|
43
|
+
text = text.replace(/[–—]/g, ", ");
|
|
44
|
+
text = text.replace(/\s*([,;:,;:])\s*/g, "$1 ");
|
|
45
|
+
text = text.replace(/\s*([.!?。!?])\s*/g, "$1 ");
|
|
46
|
+
text = text.replace(/[^\p{L}\p{N}\s.,!?'"%/$:+-,。!?;:]/gu, " ");
|
|
47
|
+
text = text.replace(/([,.!?,。!?])\1+/g, "$1");
|
|
48
|
+
text = text.replace(/^[,;:.!?,。!?;:]+/g, " ");
|
|
49
|
+
return text;
|
|
50
|
+
}
|
|
51
|
+
export function sanitizeSpeechText(input) {
|
|
52
|
+
const normalized = input.normalize("NFKC");
|
|
53
|
+
const stripped = stripThinkingAndMarkup(normalized);
|
|
54
|
+
const withoutDirections = stripNonSpeechDirections(stripped);
|
|
55
|
+
return collapseWhitespace(sanitizeSpeechPunctuation(withoutDirections));
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=spoken-text.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spoken-text.js","sourceRoot":"","sources":["../src/spoken-text.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Theme system — public API.
|
|
3
|
+
*/
|
|
4
|
+
export type { ThemeColorSet, ThemeDefinition, ThemeFonts, ThemeValidationError, } from "../contracts/theme";
|
|
5
|
+
export { DEFAULT_THEME_ID, THEME_CSS_VAR_MAP, THEME_CSS_VAR_NAMES, THEME_FONT_CSS_VARS, THEME_FONT_LINK_ID, validateThemeDefinition, } from "../contracts/theme";
|
|
6
|
+
export { BSC_GOLD_THEME, BUILTIN_THEMES, COMIC_POP_THEME, HACKER_TERMINAL_THEME, NEON_CYBER_THEME, RETRO_90S_THEME, } from "./presets";
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/themes/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,YAAY,EACV,aAAa,EACb,eAAe,EACf,UAAU,EACV,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,cAAc,EACd,cAAc,EACd,eAAe,EACf,qBAAqB,EACrB,gBAAgB,EAChB,eAAe,GAChB,MAAM,WAAW,CAAC"}
|
package/themes/index.js
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Theme system — public API.
|
|
3
|
+
*/
|
|
4
|
+
export { DEFAULT_THEME_ID, THEME_CSS_VAR_MAP, THEME_CSS_VAR_NAMES, THEME_FONT_CSS_VARS, THEME_FONT_LINK_ID, validateThemeDefinition, } from "../contracts/theme";
|
|
5
|
+
export { BSC_GOLD_THEME, BUILTIN_THEMES, COMIC_POP_THEME, HACKER_TERMINAL_THEME, NEON_CYBER_THEME, RETRO_90S_THEME, } from "./presets";
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/themes/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,cAAc,EACd,cAAc,EACd,eAAe,EACf,qBAAqB,EACrB,gBAAgB,EAChB,eAAe,GAChB,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Built-in theme presets.
|
|
3
|
+
*
|
|
4
|
+
* Each preset provides full light and dark color sets extracted from
|
|
5
|
+
* (or inspired by) the base.css defaults. The BSC Gold theme is the
|
|
6
|
+
* canonical default — its values match base.css exactly.
|
|
7
|
+
*/
|
|
8
|
+
import type { ThemeDefinition } from "../contracts/theme";
|
|
9
|
+
export declare const BSC_GOLD_THEME: ThemeDefinition;
|
|
10
|
+
export declare const NEON_CYBER_THEME: ThemeDefinition;
|
|
11
|
+
export declare const RETRO_90S_THEME: ThemeDefinition;
|
|
12
|
+
export declare const COMIC_POP_THEME: ThemeDefinition;
|
|
13
|
+
export declare const HACKER_TERMINAL_THEME: ThemeDefinition;
|
|
14
|
+
export declare const BUILTIN_THEMES: ThemeDefinition[];
|
|
15
|
+
//# sourceMappingURL=presets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../../src/themes/presets.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAI1D,eAAO,MAAM,cAAc,EAAE,eAuJ5B,CAAC;AAIF,eAAO,MAAM,gBAAgB,EAAE,eAqJ9B,CAAC;AAIF,eAAO,MAAM,eAAe,EAAE,eA0J7B,CAAC;AAIF,eAAO,MAAM,eAAe,EAAE,eA4J7B,CAAC;AAIF,eAAO,MAAM,qBAAqB,EAAE,eA8JnC,CAAC;AAIF,eAAO,MAAM,cAAc,EAAE,eAAe,EAM3C,CAAC"}
|