@objectstack/service-settings 8.0.0 → 9.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.
- package/README.md +7 -4
- package/dist/index.cjs +410 -16
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +410 -16
- package/dist/index.js.map +1 -1
- package/package.json +7 -7
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Settings service for ObjectStack. Implements ADR-0007: a generic
|
|
4
4
|
namespace **manifest** mechanism + a single K/V table (`sys_setting`) +
|
|
5
|
-
a resolver that layers `
|
|
5
|
+
a resolver that layers `OS_* env > Tenant > User > Default`.
|
|
6
6
|
|
|
7
7
|
## What it gives you
|
|
8
8
|
|
|
@@ -26,9 +26,12 @@ a resolver that layers `Env > Tenant > User > Default`.
|
|
|
26
26
|
|
|
27
27
|
## Env override
|
|
28
28
|
|
|
29
|
-
`process.env[
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
`process.env[OS_NAMESPACE_KEY]` (uppercased, with dots / hyphens converted
|
|
30
|
+
to underscores) takes precedence over any stored value. For example,
|
|
31
|
+
`mail.smtp_host` resolves from `OS_MAIL_SMTP_HOST`, and
|
|
32
|
+
`feature_flags.ai_enabled` resolves from `OS_FEATURE_FLAGS_AI_ENABLED`.
|
|
33
|
+
Such fields are returned with `source: 'env', locked: true` and writes
|
|
34
|
+
(service or REST) fail with HTTP 409.
|
|
32
35
|
|
|
33
36
|
## Encryption
|
|
34
37
|
|
package/dist/index.cjs
CHANGED
|
@@ -82,7 +82,7 @@ var NoopCryptoAdapter = class {
|
|
|
82
82
|
// src/settings-service.types.ts
|
|
83
83
|
function envKeyOf(namespace, key) {
|
|
84
84
|
const slug = `${namespace}_${key}`.replace(/[.-]/g, "_").toUpperCase();
|
|
85
|
-
return slug
|
|
85
|
+
return `OS_${slug}`;
|
|
86
86
|
}
|
|
87
87
|
var SettingsLockedError = class extends Error {
|
|
88
88
|
constructor(namespace, key, reason = "locked-by-env") {
|
|
@@ -210,20 +210,20 @@ var SettingsService = class {
|
|
|
210
210
|
// Manifest registry
|
|
211
211
|
// ---------------------------------------------------------------------
|
|
212
212
|
/** Register (or replace) a manifest. Idempotent. */
|
|
213
|
-
registerManifest(
|
|
213
|
+
registerManifest(manifest6) {
|
|
214
214
|
const scopes = /* @__PURE__ */ new Map();
|
|
215
215
|
const encryptedKeys = /* @__PURE__ */ new Set();
|
|
216
216
|
const defaults = /* @__PURE__ */ new Map();
|
|
217
|
-
const defaultScope =
|
|
218
|
-
for (const spec of
|
|
217
|
+
const defaultScope = manifest6.scope ?? "tenant";
|
|
218
|
+
for (const spec of manifest6.specifiers) {
|
|
219
219
|
if (!spec.key || LAYOUT_ONLY_TYPES.has(spec.type)) continue;
|
|
220
220
|
scopes.set(spec.key, spec.scope ?? defaultScope);
|
|
221
221
|
if (spec.encrypted || spec.type === "password") encryptedKeys.add(spec.key);
|
|
222
222
|
if (typeof spec.default !== "undefined") defaults.set(spec.key, spec.default);
|
|
223
223
|
}
|
|
224
|
-
const prev = this.registry.get(
|
|
224
|
+
const prev = this.registry.get(manifest6.namespace);
|
|
225
225
|
const actions = prev?.actions ?? /* @__PURE__ */ new Map();
|
|
226
|
-
this.registry.set(
|
|
226
|
+
this.registry.set(manifest6.namespace, { manifest: manifest6, scopes, encryptedKeys, defaults, actions });
|
|
227
227
|
}
|
|
228
228
|
/** Look up a manifest, or throw `UnknownNamespaceError`. */
|
|
229
229
|
getManifest(namespace) {
|
|
@@ -950,11 +950,90 @@ var settingsPluginManifestHeader = {
|
|
|
950
950
|
type: "plugin",
|
|
951
951
|
scope: "system",
|
|
952
952
|
name: "Settings Service",
|
|
953
|
-
description: "Generic settings registry + K/V resolver with
|
|
953
|
+
description: "Generic settings registry + K/V resolver with OS_* env > Tenant > User > Default precedence. ADR-0007."
|
|
954
954
|
};
|
|
955
955
|
|
|
956
|
-
// src/manifests/
|
|
956
|
+
// src/manifests/auth.manifest.ts
|
|
957
957
|
var manifest = {
|
|
958
|
+
namespace: "auth",
|
|
959
|
+
version: 1,
|
|
960
|
+
label: "Authentication",
|
|
961
|
+
icon: "LockKeyhole",
|
|
962
|
+
description: "Sign-in, registration, and built-in auth feature controls.",
|
|
963
|
+
scope: "global",
|
|
964
|
+
readPermission: "manage_platform_settings",
|
|
965
|
+
writePermission: "manage_platform_settings",
|
|
966
|
+
category: "Security",
|
|
967
|
+
order: 15,
|
|
968
|
+
specifiers: [
|
|
969
|
+
{
|
|
970
|
+
type: "group",
|
|
971
|
+
id: "email_password",
|
|
972
|
+
label: "Email and password",
|
|
973
|
+
required: false,
|
|
974
|
+
description: "Control local email/password sign-in and self-service registration."
|
|
975
|
+
},
|
|
976
|
+
{
|
|
977
|
+
type: "toggle",
|
|
978
|
+
key: "email_password_enabled",
|
|
979
|
+
label: "Enable email/password login",
|
|
980
|
+
required: false,
|
|
981
|
+
default: true
|
|
982
|
+
},
|
|
983
|
+
{
|
|
984
|
+
type: "toggle",
|
|
985
|
+
key: "signup_enabled",
|
|
986
|
+
label: "Allow self-service registration",
|
|
987
|
+
required: false,
|
|
988
|
+
default: true,
|
|
989
|
+
visible: "${data.email_password_enabled !== false}"
|
|
990
|
+
},
|
|
991
|
+
{
|
|
992
|
+
type: "toggle",
|
|
993
|
+
key: "require_email_verification",
|
|
994
|
+
label: "Require email verification",
|
|
995
|
+
required: false,
|
|
996
|
+
default: false,
|
|
997
|
+
visible: "${data.email_password_enabled !== false}"
|
|
998
|
+
},
|
|
999
|
+
{
|
|
1000
|
+
type: "group",
|
|
1001
|
+
id: "social",
|
|
1002
|
+
label: "Social sign-in",
|
|
1003
|
+
required: false,
|
|
1004
|
+
description: "Configure the built-in Google sign-in provider. Deployment env vars still win."
|
|
1005
|
+
},
|
|
1006
|
+
{
|
|
1007
|
+
type: "toggle",
|
|
1008
|
+
key: "google_enabled",
|
|
1009
|
+
label: "Enable Google login",
|
|
1010
|
+
required: false,
|
|
1011
|
+
default: true,
|
|
1012
|
+
description: "Requires a Google OAuth client ID and secret from Google Cloud Console."
|
|
1013
|
+
},
|
|
1014
|
+
{
|
|
1015
|
+
type: "text",
|
|
1016
|
+
key: "google_client_id",
|
|
1017
|
+
label: "Google client ID",
|
|
1018
|
+
required: true,
|
|
1019
|
+
description: "OAuth client ID from Google Cloud Console. GOOGLE_CLIENT_ID can also be set on the server.",
|
|
1020
|
+
visible: "${data.google_enabled !== false}"
|
|
1021
|
+
},
|
|
1022
|
+
{
|
|
1023
|
+
type: "password",
|
|
1024
|
+
key: "google_client_secret",
|
|
1025
|
+
label: "Google client secret",
|
|
1026
|
+
required: true,
|
|
1027
|
+
encrypted: true,
|
|
1028
|
+
description: "Stored encrypted at rest. GOOGLE_CLIENT_SECRET can also be set on the server.",
|
|
1029
|
+
visible: "${data.google_enabled !== false}"
|
|
1030
|
+
}
|
|
1031
|
+
]
|
|
1032
|
+
};
|
|
1033
|
+
var authSettingsManifest = manifest;
|
|
1034
|
+
|
|
1035
|
+
// src/manifests/mail.manifest.ts
|
|
1036
|
+
var manifest2 = {
|
|
958
1037
|
namespace: "mail",
|
|
959
1038
|
version: 1,
|
|
960
1039
|
label: "Mail Delivery",
|
|
@@ -1055,7 +1134,7 @@ var manifest = {
|
|
|
1055
1134
|
}
|
|
1056
1135
|
]
|
|
1057
1136
|
};
|
|
1058
|
-
var mailSettingsManifest =
|
|
1137
|
+
var mailSettingsManifest = manifest2;
|
|
1059
1138
|
var mailTestActionHandler = async ({ values }) => {
|
|
1060
1139
|
const provider = String(values.provider ?? "smtp");
|
|
1061
1140
|
const fromEmail = values.from_email;
|
|
@@ -1148,7 +1227,7 @@ var featureFlagsSettingsManifest = {
|
|
|
1148
1227
|
id: "beta_notice",
|
|
1149
1228
|
label: "Heads up",
|
|
1150
1229
|
required: false,
|
|
1151
|
-
bannerText: "Beta features may change without notice. Pin via env vars (e.g. `
|
|
1230
|
+
bannerText: "Beta features may change without notice. Pin via env vars (e.g. `OS_FEATURE_FLAGS_AI_ENABLED=true`) to lock for the whole deployment.",
|
|
1152
1231
|
bannerSeverity: "warning"
|
|
1153
1232
|
},
|
|
1154
1233
|
{ type: "group", id: "productivity", label: "Productivity", required: false },
|
|
@@ -1168,7 +1247,7 @@ var featureFlagsSettingsManifest = {
|
|
|
1168
1247
|
};
|
|
1169
1248
|
|
|
1170
1249
|
// src/manifests/storage.manifest.ts
|
|
1171
|
-
var
|
|
1250
|
+
var manifest3 = {
|
|
1172
1251
|
namespace: "storage",
|
|
1173
1252
|
version: 1,
|
|
1174
1253
|
label: "File Storage",
|
|
@@ -1308,7 +1387,7 @@ var manifest2 = {
|
|
|
1308
1387
|
}
|
|
1309
1388
|
]
|
|
1310
1389
|
};
|
|
1311
|
-
var storageSettingsManifest =
|
|
1390
|
+
var storageSettingsManifest = manifest3;
|
|
1312
1391
|
var storageTestActionHandler = async ({ values }) => {
|
|
1313
1392
|
const adapter = String(values.adapter ?? "local");
|
|
1314
1393
|
if (adapter === "local") {
|
|
@@ -1341,7 +1420,7 @@ var storageTestActionHandler = async ({ values }) => {
|
|
|
1341
1420
|
};
|
|
1342
1421
|
|
|
1343
1422
|
// src/manifests/ai.manifest.ts
|
|
1344
|
-
var
|
|
1423
|
+
var manifest4 = {
|
|
1345
1424
|
namespace: "ai",
|
|
1346
1425
|
version: 1,
|
|
1347
1426
|
label: "AI",
|
|
@@ -1842,7 +1921,7 @@ var manifest3 = {
|
|
|
1842
1921
|
}
|
|
1843
1922
|
]
|
|
1844
1923
|
};
|
|
1845
|
-
var aiSettingsManifest =
|
|
1924
|
+
var aiSettingsManifest = manifest4;
|
|
1846
1925
|
var aiTestActionHandler = async ({ values, payload }) => {
|
|
1847
1926
|
const overrides = extractOverrides(payload);
|
|
1848
1927
|
const merged = { ...values, ...overrides };
|
|
@@ -1901,7 +1980,7 @@ function extractOverrides(payload) {
|
|
|
1901
1980
|
}
|
|
1902
1981
|
|
|
1903
1982
|
// src/manifests/knowledge.manifest.ts
|
|
1904
|
-
var
|
|
1983
|
+
var manifest5 = {
|
|
1905
1984
|
namespace: "knowledge",
|
|
1906
1985
|
version: 1,
|
|
1907
1986
|
label: "Knowledge",
|
|
@@ -2055,11 +2134,12 @@ var manifest4 = {
|
|
|
2055
2134
|
}
|
|
2056
2135
|
]
|
|
2057
2136
|
};
|
|
2058
|
-
var knowledgeSettingsManifest =
|
|
2137
|
+
var knowledgeSettingsManifest = manifest5;
|
|
2059
2138
|
|
|
2060
2139
|
// src/manifests/index.ts
|
|
2061
2140
|
var builtinSettingsManifests = [
|
|
2062
2141
|
brandingSettingsManifest,
|
|
2142
|
+
authSettingsManifest,
|
|
2063
2143
|
mailSettingsManifest,
|
|
2064
2144
|
storageSettingsManifest,
|
|
2065
2145
|
aiSettingsManifest,
|
|
@@ -2129,6 +2209,37 @@ var en = {
|
|
|
2129
2209
|
logo_url: { label: "Logo URL", help: "Example: https://\u2026/logo.svg" }
|
|
2130
2210
|
}
|
|
2131
2211
|
},
|
|
2212
|
+
auth: {
|
|
2213
|
+
title: "Authentication",
|
|
2214
|
+
description: "Sign-in, registration, and built-in auth feature controls.",
|
|
2215
|
+
groups: {
|
|
2216
|
+
email_password: {
|
|
2217
|
+
title: "Email and password",
|
|
2218
|
+
description: "Control local email/password sign-in and self-service registration."
|
|
2219
|
+
},
|
|
2220
|
+
social: {
|
|
2221
|
+
title: "Social sign-in",
|
|
2222
|
+
description: "Configure the built-in Google sign-in provider. Deployment env vars still win."
|
|
2223
|
+
}
|
|
2224
|
+
},
|
|
2225
|
+
keys: {
|
|
2226
|
+
email_password_enabled: { label: "Enable email/password login" },
|
|
2227
|
+
signup_enabled: { label: "Allow self-service registration" },
|
|
2228
|
+
require_email_verification: { label: "Require email verification" },
|
|
2229
|
+
google_enabled: {
|
|
2230
|
+
label: "Enable Google login",
|
|
2231
|
+
help: "Requires a Google OAuth client ID and secret from Google Cloud Console."
|
|
2232
|
+
},
|
|
2233
|
+
google_client_id: {
|
|
2234
|
+
label: "Google client ID",
|
|
2235
|
+
help: "OAuth client ID from Google Cloud Console. GOOGLE_CLIENT_ID can also be set on the server."
|
|
2236
|
+
},
|
|
2237
|
+
google_client_secret: {
|
|
2238
|
+
label: "Google client secret",
|
|
2239
|
+
help: "Stored encrypted at rest. GOOGLE_CLIENT_SECRET can also be set on the server."
|
|
2240
|
+
}
|
|
2241
|
+
}
|
|
2242
|
+
},
|
|
2132
2243
|
feature_flags: {
|
|
2133
2244
|
title: "Feature Flags",
|
|
2134
2245
|
description: "Toggle experimental and beta features for this workspace.",
|
|
@@ -2445,6 +2556,37 @@ var zhCN = {
|
|
|
2445
2556
|
logo_url: { label: "Logo \u94FE\u63A5", help: "\u793A\u4F8B:https://\u2026/logo.svg" }
|
|
2446
2557
|
}
|
|
2447
2558
|
},
|
|
2559
|
+
auth: {
|
|
2560
|
+
title: "\u8BA4\u8BC1",
|
|
2561
|
+
description: "\u767B\u5F55\u3001\u6CE8\u518C\u4EE5\u53CA\u5185\u7F6E\u8BA4\u8BC1\u529F\u80FD\u7684\u63A7\u5236\u9879\u3002",
|
|
2562
|
+
groups: {
|
|
2563
|
+
email_password: {
|
|
2564
|
+
title: "\u90AE\u7BB1\u4E0E\u5BC6\u7801",
|
|
2565
|
+
description: "\u63A7\u5236\u672C\u5730\u90AE\u7BB1/\u5BC6\u7801\u767B\u5F55\u4E0E\u81EA\u52A9\u6CE8\u518C\u3002"
|
|
2566
|
+
},
|
|
2567
|
+
social: {
|
|
2568
|
+
title: "\u793E\u4EA4\u767B\u5F55",
|
|
2569
|
+
description: "\u914D\u7F6E\u5185\u7F6E\u7684 Google \u767B\u5F55\u63D0\u4F9B\u5546\u3002\u90E8\u7F72\u73AF\u5883\u53D8\u91CF\u4ECD\u4F18\u5148\u751F\u6548\u3002"
|
|
2570
|
+
}
|
|
2571
|
+
},
|
|
2572
|
+
keys: {
|
|
2573
|
+
email_password_enabled: { label: "\u542F\u7528\u90AE\u7BB1/\u5BC6\u7801\u767B\u5F55" },
|
|
2574
|
+
signup_enabled: { label: "\u5141\u8BB8\u81EA\u52A9\u6CE8\u518C" },
|
|
2575
|
+
require_email_verification: { label: "\u8981\u6C42\u90AE\u7BB1\u9A8C\u8BC1" },
|
|
2576
|
+
google_enabled: {
|
|
2577
|
+
label: "\u542F\u7528 Google \u767B\u5F55",
|
|
2578
|
+
help: "\u9700\u8981\u5728 Google Cloud Console \u4E2D\u521B\u5EFA\u7684 Google OAuth \u5BA2\u6237\u7AEF ID \u4E0E\u5BC6\u94A5\u3002"
|
|
2579
|
+
},
|
|
2580
|
+
google_client_id: {
|
|
2581
|
+
label: "Google \u5BA2\u6237\u7AEF ID",
|
|
2582
|
+
help: "\u6765\u81EA Google Cloud Console \u7684 OAuth \u5BA2\u6237\u7AEF ID\u3002\u4E5F\u53EF\u5728\u670D\u52A1\u5668\u4E0A\u8BBE\u7F6E GOOGLE_CLIENT_ID\u3002"
|
|
2583
|
+
},
|
|
2584
|
+
google_client_secret: {
|
|
2585
|
+
label: "Google \u5BA2\u6237\u7AEF\u5BC6\u94A5",
|
|
2586
|
+
help: "\u52A0\u5BC6\u5B58\u50A8\u3002\u4E5F\u53EF\u5728\u670D\u52A1\u5668\u4E0A\u8BBE\u7F6E GOOGLE_CLIENT_SECRET\u3002"
|
|
2587
|
+
}
|
|
2588
|
+
}
|
|
2589
|
+
},
|
|
2448
2590
|
feature_flags: {
|
|
2449
2591
|
title: "\u529F\u80FD\u5F00\u5173",
|
|
2450
2592
|
description: "\u4E3A\u5F53\u524D\u5DE5\u4F5C\u533A\u5F00\u542F\u5B9E\u9A8C\u6027\u4E0E\u6D4B\u8BD5\u529F\u80FD\u3002",
|
|
@@ -2668,6 +2810,37 @@ var jaJP = {
|
|
|
2668
2810
|
logo_url: { label: "\u30ED\u30B4 URL", help: "\u4F8B: https://\u2026/logo.svg" }
|
|
2669
2811
|
}
|
|
2670
2812
|
},
|
|
2813
|
+
auth: {
|
|
2814
|
+
title: "\u8A8D\u8A3C",
|
|
2815
|
+
description: "\u30B5\u30A4\u30F3\u30A4\u30F3\u3001\u767B\u9332\u3001\u7D44\u307F\u8FBC\u307F\u8A8D\u8A3C\u6A5F\u80FD\u306E\u5236\u5FA1\u3002",
|
|
2816
|
+
groups: {
|
|
2817
|
+
email_password: {
|
|
2818
|
+
title: "\u30E1\u30FC\u30EB\u3068\u30D1\u30B9\u30EF\u30FC\u30C9",
|
|
2819
|
+
description: "\u30ED\u30FC\u30AB\u30EB\u306E\u30E1\u30FC\u30EB/\u30D1\u30B9\u30EF\u30FC\u30C9\u30B5\u30A4\u30F3\u30A4\u30F3\u3068\u30BB\u30EB\u30D5\u30B5\u30FC\u30D3\u30B9\u767B\u9332\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002"
|
|
2820
|
+
},
|
|
2821
|
+
social: {
|
|
2822
|
+
title: "\u30BD\u30FC\u30B7\u30E3\u30EB\u30B5\u30A4\u30F3\u30A4\u30F3",
|
|
2823
|
+
description: "\u7D44\u307F\u8FBC\u307F\u306E Google \u30B5\u30A4\u30F3\u30A4\u30F3\u30D7\u30ED\u30D0\u30A4\u30C0\u30FC\u3092\u8A2D\u5B9A\u3057\u307E\u3059\u3002\u30C7\u30D7\u30ED\u30A4\u306E\u74B0\u5883\u5909\u6570\u304C\u512A\u5148\u3055\u308C\u307E\u3059\u3002"
|
|
2824
|
+
}
|
|
2825
|
+
},
|
|
2826
|
+
keys: {
|
|
2827
|
+
email_password_enabled: { label: "\u30E1\u30FC\u30EB/\u30D1\u30B9\u30EF\u30FC\u30C9\u30ED\u30B0\u30A4\u30F3\u3092\u6709\u52B9\u5316" },
|
|
2828
|
+
signup_enabled: { label: "\u30BB\u30EB\u30D5\u30B5\u30FC\u30D3\u30B9\u767B\u9332\u3092\u8A31\u53EF" },
|
|
2829
|
+
require_email_verification: { label: "\u30E1\u30FC\u30EB\u78BA\u8A8D\u3092\u5FC5\u9808\u306B\u3059\u308B" },
|
|
2830
|
+
google_enabled: {
|
|
2831
|
+
label: "Google \u30ED\u30B0\u30A4\u30F3\u3092\u6709\u52B9\u5316",
|
|
2832
|
+
help: "Google Cloud Console \u306E Google OAuth \u30AF\u30E9\u30A4\u30A2\u30F3\u30C8 ID \u3068\u30B7\u30FC\u30AF\u30EC\u30C3\u30C8\u304C\u5FC5\u8981\u3067\u3059\u3002"
|
|
2833
|
+
},
|
|
2834
|
+
google_client_id: {
|
|
2835
|
+
label: "Google \u30AF\u30E9\u30A4\u30A2\u30F3\u30C8 ID",
|
|
2836
|
+
help: "Google Cloud Console \u306E OAuth \u30AF\u30E9\u30A4\u30A2\u30F3\u30C8 ID\u3002\u30B5\u30FC\u30D0\u30FC\u5074\u3067 GOOGLE_CLIENT_ID \u3092\u8A2D\u5B9A\u3059\u308B\u3053\u3068\u3082\u3067\u304D\u307E\u3059\u3002"
|
|
2837
|
+
},
|
|
2838
|
+
google_client_secret: {
|
|
2839
|
+
label: "Google \u30AF\u30E9\u30A4\u30A2\u30F3\u30C8\u30B7\u30FC\u30AF\u30EC\u30C3\u30C8",
|
|
2840
|
+
help: "\u4FDD\u5B58\u6642\u306B\u6697\u53F7\u5316\u3055\u308C\u307E\u3059\u3002\u30B5\u30FC\u30D0\u30FC\u5074\u3067 GOOGLE_CLIENT_SECRET \u3092\u8A2D\u5B9A\u3059\u308B\u3053\u3068\u3082\u3067\u304D\u307E\u3059\u3002"
|
|
2841
|
+
}
|
|
2842
|
+
}
|
|
2843
|
+
},
|
|
2671
2844
|
feature_flags: {
|
|
2672
2845
|
title: "\u6A5F\u80FD\u30D5\u30E9\u30B0",
|
|
2673
2846
|
description: "\u3053\u306E\u30EF\u30FC\u30AF\u30B9\u30DA\u30FC\u30B9\u3067\u5B9F\u9A13\u7684\u30FB\u30D9\u30FC\u30BF\u6A5F\u80FD\u3092\u5207\u66FF\u3048\u307E\u3059\u3002",
|
|
@@ -2728,6 +2901,196 @@ var jaJP = {
|
|
|
2728
2901
|
actions: {
|
|
2729
2902
|
test: { label: "\u63A5\u7D9A\u30C6\u30B9\u30C8" }
|
|
2730
2903
|
}
|
|
2904
|
+
},
|
|
2905
|
+
ai: {
|
|
2906
|
+
title: "AI \u3068 Embedder",
|
|
2907
|
+
description: "\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0\u306E AI \u304A\u3088\u3073\u30CA\u30EC\u30C3\u30B8\u30B5\u30FC\u30D3\u30B9\u304C\u4F7F\u7528\u3059\u308B LLM \u30D7\u30ED\u30D0\u30A4\u30C0\u30FC\u3001\u30E2\u30C7\u30EB\u3001\u8A8D\u8A3C\u60C5\u5831\u3001Embedder \u8A2D\u5B9A\u3002",
|
|
2908
|
+
groups: {
|
|
2909
|
+
provider: {
|
|
2910
|
+
title: "\u30D7\u30ED\u30D0\u30A4\u30C0\u30FC",
|
|
2911
|
+
description: "LLM \u30D0\u30C3\u30AF\u30A8\u30F3\u30C9\u3092\u9078\u629E\u3057\u307E\u3059\u3002Memory \u30E2\u30FC\u30C9\u306F\u5165\u529B\u3092\u305D\u306E\u307E\u307E\u8FD4\u3057\u307E\u3059\u3002\u30C6\u30B9\u30C8\u7528\u3067\u3042\u308A\u3001\u672C\u756A\u3067\u306F\u4F7F\u7528\u3057\u306A\u3044\u3067\u304F\u3060\u3055\u3044\u3002"
|
|
2912
|
+
},
|
|
2913
|
+
gateway: {
|
|
2914
|
+
title: "Vercel AI Gateway",
|
|
2915
|
+
description: "\u30DE\u30EB\u30C1\u30D7\u30ED\u30D0\u30A4\u30C0\u30FC\u30EB\u30FC\u30BF\u30FC\u3002\u30E2\u30C7\u30EB\u6307\u5B9A\u306F `provider/model` \u5F62\u5F0F\u306B\u5F93\u3044\u307E\u3059\uFF08\u4F8B: `openai/gpt-4o`\uFF09\u3002"
|
|
2916
|
+
},
|
|
2917
|
+
openai: { title: "OpenAI" },
|
|
2918
|
+
anthropic: { title: "Anthropic" },
|
|
2919
|
+
google: { title: "Google" },
|
|
2920
|
+
defaults: {
|
|
2921
|
+
title: "\u751F\u6210\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u5024",
|
|
2922
|
+
description: "\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u307E\u305F\u306F\u30C1\u30E3\u30C3\u30C8\u30EA\u30AF\u30A8\u30B9\u30C8\u304C\u72EC\u81EA\u306E\u5024\u3092\u6307\u5B9A\u3057\u306A\u3044\u5834\u5408\u306B\u9069\u7528\u3055\u308C\u307E\u3059\u3002"
|
|
2923
|
+
},
|
|
2924
|
+
observability: { title: "\u53EF\u89B3\u6E2C\u6027" },
|
|
2925
|
+
embedder: {
|
|
2926
|
+
title: "Embedder",
|
|
2927
|
+
description: "\u30CA\u30EC\u30C3\u30B8\u30BD\u30FC\u30B9\u3068 RAG \u304C\u4F7F\u7528\u3059\u308B\u30C6\u30AD\u30B9\u30C8 \u2192 \u30D9\u30AF\u30C8\u30EB\u30D7\u30ED\u30D0\u30A4\u30C0\u30FC\u3002\u4E0A\u8A18\u306E\u30C1\u30E3\u30C3\u30C8\u30D7\u30ED\u30D0\u30A4\u30C0\u30FC\u3068\u306F\u72EC\u7ACB\u3057\u3066\u3044\u307E\u3059\u3002"
|
|
2928
|
+
}
|
|
2929
|
+
},
|
|
2930
|
+
keys: {
|
|
2931
|
+
provider: {
|
|
2932
|
+
label: "\u30D7\u30ED\u30D0\u30A4\u30C0\u30FC",
|
|
2933
|
+
options: {
|
|
2934
|
+
memory: "Memory\uFF08\u30A8\u30B3\u30FC \u2014 \u30C6\u30B9\u30C8\u5C02\u7528\uFF09",
|
|
2935
|
+
gateway: "Vercel AI Gateway",
|
|
2936
|
+
openai: "OpenAI",
|
|
2937
|
+
anthropic: "Anthropic",
|
|
2938
|
+
google: "Google Generative AI"
|
|
2939
|
+
}
|
|
2940
|
+
},
|
|
2941
|
+
gateway_model: {
|
|
2942
|
+
label: "Gateway \u30E2\u30C7\u30EB",
|
|
2943
|
+
help: "AI_GATEWAY_MODEL \u3068\u3057\u3066\u8EE2\u9001\u3055\u308C\u307E\u3059\u3002\u4F8B: openai/gpt-4o"
|
|
2944
|
+
},
|
|
2945
|
+
gateway_api_key: {
|
|
2946
|
+
label: "Gateway API \u30AD\u30FC",
|
|
2947
|
+
help: "\u4EFB\u610F \u2014 Gateway \u304C\u8A8D\u8A3C\u3092\u8981\u6C42\u3059\u308B\u5834\u5408\u306E\u307F\u5FC5\u8981\u3067\u3059\u3002"
|
|
2948
|
+
},
|
|
2949
|
+
openai_api_key: {
|
|
2950
|
+
label: "OpenAI API \u30AD\u30FC",
|
|
2951
|
+
help: "OPENAI_API_KEY \u3068\u3057\u3066\u8EE2\u9001\u3055\u308C\u307E\u3059\u3002\u4FDD\u5B58\u6642\u306B\u6697\u53F7\u5316\u3055\u308C\u307E\u3059\u3002"
|
|
2952
|
+
},
|
|
2953
|
+
openai_model: {
|
|
2954
|
+
label: "\u30E2\u30C7\u30EB",
|
|
2955
|
+
help: "\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u30E2\u30C7\u30EB ID\u3002\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u5358\u4F4D\u306E\u4E0A\u66F8\u304D\u304C\u512A\u5148\u3055\u308C\u307E\u3059\u3002"
|
|
2956
|
+
},
|
|
2957
|
+
openai_base_url: {
|
|
2958
|
+
label: "Base URL",
|
|
2959
|
+
help: "Azure OpenAI \u3084\u81EA\u5DF1\u30DB\u30B9\u30C8\u578B\u30B2\u30FC\u30C8\u30A6\u30A7\u30A4\u7528\u306E\u4E0A\u66F8\u304D\u3002api.openai.com \u306E\u5834\u5408\u306F\u7A7A\u6B04\u306B\u3057\u307E\u3059\u3002"
|
|
2960
|
+
},
|
|
2961
|
+
anthropic_api_key: {
|
|
2962
|
+
label: "Anthropic API \u30AD\u30FC",
|
|
2963
|
+
help: "ANTHROPIC_API_KEY \u3068\u3057\u3066\u8EE2\u9001\u3055\u308C\u307E\u3059\u3002\u4FDD\u5B58\u6642\u306B\u6697\u53F7\u5316\u3055\u308C\u307E\u3059\u3002"
|
|
2964
|
+
},
|
|
2965
|
+
anthropic_model: { label: "\u30E2\u30C7\u30EB" },
|
|
2966
|
+
google_api_key: {
|
|
2967
|
+
label: "Google API \u30AD\u30FC",
|
|
2968
|
+
help: "GOOGLE_GENERATIVE_AI_API_KEY \u3068\u3057\u3066\u8EE2\u9001\u3055\u308C\u307E\u3059\u3002\u4FDD\u5B58\u6642\u306B\u6697\u53F7\u5316\u3055\u308C\u307E\u3059\u3002"
|
|
2969
|
+
},
|
|
2970
|
+
google_model: { label: "\u30E2\u30C7\u30EB" },
|
|
2971
|
+
temperature: {
|
|
2972
|
+
label: "Temperature",
|
|
2973
|
+
help: "0 = \u6C7A\u5B9A\u7684\u30012 = \u975E\u5E38\u306B\u5275\u9020\u7684\u3002"
|
|
2974
|
+
},
|
|
2975
|
+
max_tokens: {
|
|
2976
|
+
label: "\u6700\u5927\u51FA\u529B\u30C8\u30FC\u30AF\u30F3\u6570",
|
|
2977
|
+
help: "\u30EC\u30B9\u30DD\u30F3\u30B9\u3054\u3068\u306B\u751F\u6210\u3055\u308C\u308B\u30C8\u30FC\u30AF\u30F3\u306E\u4E0A\u9650\u3002"
|
|
2978
|
+
},
|
|
2979
|
+
request_timeout_ms: { label: "\u30EA\u30AF\u30A8\u30B9\u30C8\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8 (ms)" },
|
|
2980
|
+
trace_enabled: {
|
|
2981
|
+
label: "\u30C8\u30EC\u30FC\u30B9\u3092\u8A18\u9332",
|
|
2982
|
+
help: "\u30C7\u30D0\u30C3\u30B0\u3068\u518D\u751F\u306E\u305F\u3081 prompt/response \u30C8\u30EC\u30FC\u30B9\u3092 sys_ai_trace \u306B\u4FDD\u5B58\u3057\u307E\u3059\u3002"
|
|
2983
|
+
},
|
|
2984
|
+
log_prompts: {
|
|
2985
|
+
label: "\u5B8C\u5168\u306A\u30D7\u30ED\u30F3\u30D7\u30C8\u3092\u8A18\u9332",
|
|
2986
|
+
help: "\u30E1\u30BF\u30C7\u30FC\u30BF\u3060\u3051\u3067\u306A\u304F\u30EC\u30F3\u30C0\u30EA\u30F3\u30B0\u3055\u308C\u305F\u30D7\u30ED\u30F3\u30D7\u30C8\u3092\u30C8\u30EC\u30FC\u30B9\u884C\u306B\u542B\u3081\u307E\u3059\u3002\u26A0 PII \u304C\u6F0F\u3048\u3044\u3059\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002\u898F\u5236\u74B0\u5883\u3067\u306F\u7121\u52B9\u306B\u3057\u3066\u304F\u3060\u3055\u3044\u3002"
|
|
2987
|
+
},
|
|
2988
|
+
embedder_provider: {
|
|
2989
|
+
label: "\u30D7\u30ED\u30D0\u30A4\u30C0\u30FC",
|
|
2990
|
+
options: {
|
|
2991
|
+
none: "\u7121\u52B9\uFF08\u57CB\u3081\u8FBC\u307F\u306A\u3057\uFF09",
|
|
2992
|
+
openai: "OpenAI",
|
|
2993
|
+
azure: "Azure OpenAI",
|
|
2994
|
+
dashscope: "\u963F\u91CC\u901A\u4E49 DashScope",
|
|
2995
|
+
zhipu: "\u667A\u8C31 BigModel",
|
|
2996
|
+
siliconflow: "\u7845\u57FA\u6D41\u52A8 SiliconFlow",
|
|
2997
|
+
doubao: "\u706B\u5C71\u5F15\u64CE Doubao",
|
|
2998
|
+
minimax: "MiniMax",
|
|
2999
|
+
ollama: "Ollama\uFF08\u30ED\u30FC\u30AB\u30EB\uFF09",
|
|
3000
|
+
custom: "\u30AB\u30B9\u30BF\u30E0\uFF08OpenAI \u4E92\u63DB\uFF09"
|
|
3001
|
+
}
|
|
3002
|
+
},
|
|
3003
|
+
embedder_api_key: {
|
|
3004
|
+
label: "Embedder API \u30AD\u30FC",
|
|
3005
|
+
help: "Authorization \u30D8\u30C3\u30C0\u30FC\u3068\u3057\u3066\u9001\u4FE1\u3055\u308C\u308B Bearer \u30C8\u30FC\u30AF\u30F3\u3002Ollama \u3067\u306F\u7A7A\u3067\u306A\u3044\u4EFB\u610F\u306E\u5024\u3067\u52D5\u4F5C\u3057\u307E\u3059\u3002"
|
|
3006
|
+
},
|
|
3007
|
+
embedder_model: {
|
|
3008
|
+
label: "\u30E2\u30C7\u30EB",
|
|
3009
|
+
help: "\u4F8B \u2014 OpenAI: text-embedding-3-small \xB7 \u963F\u91CC\u901A\u4E49: text-embedding-v3 \xB7 \u667A\u8C31: embedding-3 \xB7 \u7845\u57FA\u6D41\u52A8: BAAI/bge-m3 \xB7 Ollama: bge-m3"
|
|
3010
|
+
},
|
|
3011
|
+
embedder_base_url: {
|
|
3012
|
+
label: "Base URL",
|
|
3013
|
+
help: "\u30A8\u30F3\u30C9\u30DD\u30A4\u30F3\u30C8\u306E\u30EB\u30FC\u30C8\uFF08/embeddings \u3092\u542B\u307E\u306A\u3044\uFF09\u3002\u30D7\u30EA\u30BB\u30C3\u30C8\u304B\u3089\u81EA\u52D5\u5165\u529B\u3055\u308C\u307E\u3059\u3002\u30D7\u30ED\u30AD\u30B7\u3084\u81EA\u5DF1\u30DB\u30B9\u30C8\u578B\u30B2\u30FC\u30C8\u30A6\u30A7\u30A4\u7528\u306B\u4E0A\u66F8\u304D\u3067\u304D\u307E\u3059\u3002"
|
|
3014
|
+
},
|
|
3015
|
+
embedder_dimensions: {
|
|
3016
|
+
label: "\u6B21\u5143\u6570",
|
|
3017
|
+
help: "\u51FA\u529B\u6B21\u5143\u6570\u3092\u4E0A\u66F8\u304D\u3057\u307E\u3059\uFF08Matryoshka \u30E2\u30C7\u30EB\u306E\u307F\uFF09\u3002\u7A7A\u6B04\u306E\u5834\u5408\u306F\u30E2\u30C7\u30EB\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u3092\u4F7F\u7528\u3057\u307E\u3059\u3002"
|
|
3018
|
+
},
|
|
3019
|
+
embedder_batch_size: {
|
|
3020
|
+
label: "\u30D0\u30C3\u30C1\u30B5\u30A4\u30BA",
|
|
3021
|
+
help: "embed() \u547C\u3073\u51FA\u3057\u3054\u3068\u306E\u30C1\u30E3\u30F3\u30AF\u6570\u3002\u30D7\u30ED\u30D0\u30A4\u30C0\u30FC\u306E\u30EC\u30FC\u30C8/\u30B5\u30A4\u30BA\u5236\u9650\u306B\u9054\u3059\u308B\u5834\u5408\u306F\u6E1B\u3089\u3057\u307E\u3059\u3002"
|
|
3022
|
+
}
|
|
3023
|
+
},
|
|
3024
|
+
actions: {
|
|
3025
|
+
test: { label: "\u63A5\u7D9A\u30C6\u30B9\u30C8" },
|
|
3026
|
+
test_embedder: { label: "Embedder \u3092\u30C6\u30B9\u30C8" }
|
|
3027
|
+
}
|
|
3028
|
+
},
|
|
3029
|
+
knowledge: {
|
|
3030
|
+
title: "\u30CA\u30EC\u30C3\u30B8",
|
|
3031
|
+
description: "RAG / \u30CA\u30EC\u30C3\u30B8\u30BD\u30FC\u30B9\u7528\u306E\u30D9\u30AF\u30C8\u30EB\u30B9\u30C8\u30A2\u30D0\u30C3\u30AF\u30A8\u30F3\u30C9\u3002\u26A0 \u30A2\u30C0\u30D7\u30BF\u30FC\u3092\u5207\u66FF\u3048\u3066\u3082\u65E2\u5B58\u306E\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u306F\u79FB\u884C\u3055\u308C\u307E\u305B\u3093\u3002",
|
|
3032
|
+
groups: {
|
|
3033
|
+
adapter: {
|
|
3034
|
+
title: "\u30D0\u30C3\u30AF\u30A8\u30F3\u30C9",
|
|
3035
|
+
description: "\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u30C1\u30E3\u30F3\u30AF\u3068\u305D\u306E\u30D9\u30AF\u30C8\u30EB\u306E\u4FDD\u5B58\u5148\u3092\u9078\u629E\u3057\u307E\u3059\u3002"
|
|
3036
|
+
},
|
|
3037
|
+
turso: {
|
|
3038
|
+
title: "Turso / libSQL",
|
|
3039
|
+
description: "\u30DE\u30CD\u30FC\u30B8\u30C9 Turso\u3001\u30ED\u30FC\u30AB\u30EB\u30D5\u30A1\u30A4\u30EB\u3001\u30A4\u30F3\u30E1\u30E2\u30EA\u306E\u3044\u305A\u308C\u3067\u3082\u52D5\u4F5C\u3057\u307E\u3059\u3002"
|
|
3040
|
+
},
|
|
3041
|
+
ragflow: {
|
|
3042
|
+
title: "RAGFlow",
|
|
3043
|
+
description: "\u5916\u90E8 RAGFlow \u30C7\u30D7\u30ED\u30A4\u3002\u30BB\u30EB\u30D5\u30DB\u30B9\u30C8\u306E\u624B\u9806\u306F https://ragflow.io \u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002"
|
|
3044
|
+
},
|
|
3045
|
+
indexing: {
|
|
3046
|
+
title: "\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u5024",
|
|
3047
|
+
description: "KnowledgeSource.adapterConfig \u306E\u30BD\u30FC\u30B9\u5358\u4F4D\u306E\u5024\u304C\u512A\u5148\u3055\u308C\u307E\u3059\u3002"
|
|
3048
|
+
},
|
|
3049
|
+
permissions: { title: "\u6A29\u9650" }
|
|
3050
|
+
},
|
|
3051
|
+
keys: {
|
|
3052
|
+
adapter: {
|
|
3053
|
+
label: "\u30A2\u30C0\u30D7\u30BF\u30FC",
|
|
3054
|
+
options: {
|
|
3055
|
+
memory: "\u30A4\u30F3\u30E1\u30E2\u30EA\uFF08\u958B\u767A/\u30C6\u30B9\u30C8\u5C02\u7528\uFF09",
|
|
3056
|
+
turso: "Turso / libSQL\uFF08\u30AF\u30E9\u30A6\u30C9\u307E\u305F\u306F\u30ED\u30FC\u30AB\u30EB\uFF09",
|
|
3057
|
+
ragflow: "RAGFlow\uFF08\u5916\u90E8\uFF09"
|
|
3058
|
+
}
|
|
3059
|
+
},
|
|
3060
|
+
turso_url: {
|
|
3061
|
+
label: "\u63A5\u7D9A URL",
|
|
3062
|
+
help: "\u4F8B: libsql://your-tenant.turso.io \xB7 file:./.objectstack/knowledge.db \xB7 :memory:"
|
|
3063
|
+
},
|
|
3064
|
+
turso_auth_token: {
|
|
3065
|
+
label: "\u8A8D\u8A3C\u30C8\u30FC\u30AF\u30F3",
|
|
3066
|
+
help: "\u30DE\u30CD\u30FC\u30B8\u30C9 Turso URL \u306E\u5834\u5408\u306E\u307F\u5FC5\u8981\u3067\u3059\u3002"
|
|
3067
|
+
},
|
|
3068
|
+
ragflow_base_url: { label: "Base URL", help: "\u4F8B: http://localhost:9380" },
|
|
3069
|
+
ragflow_api_key: { label: "API \u30AD\u30FC" },
|
|
3070
|
+
ragflow_default_dataset: {
|
|
3071
|
+
label: "\u30C7\u30D5\u30A9\u30EB\u30C8\u30C7\u30FC\u30BF\u30BB\u30C3\u30C8 ID",
|
|
3072
|
+
help: "KnowledgeSource \u304C\u72EC\u81EA\u306E RAGFlow \u30C7\u30FC\u30BF\u30BB\u30C3\u30C8\u3092\u6307\u5B9A\u3057\u306A\u3044\u5834\u5408\u306B\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002"
|
|
3073
|
+
},
|
|
3074
|
+
chunk_target: {
|
|
3075
|
+
label: "\u76EE\u6A19\u30C1\u30E3\u30F3\u30AF\u30B5\u30A4\u30BA\uFF08\u6587\u5B57\u6570\uFF09",
|
|
3076
|
+
help: "\u30C8\u30FC\u30AF\u30F3\u5358\u4F4D\u306E\u5206\u5272\u304C\u884C\u308F\u308C\u308B\u524D\u306E\u30C1\u30E3\u30F3\u30AF\u30B5\u30A4\u30BA\u306E\u30BD\u30D5\u30C8\u4E0A\u9650\u3002"
|
|
3077
|
+
},
|
|
3078
|
+
chunk_overlap: {
|
|
3079
|
+
label: "\u30C1\u30E3\u30F3\u30AF\u306E\u91CD\u306A\u308A\uFF08\u6587\u5B57\u6570\uFF09",
|
|
3080
|
+
help: "\u5883\u754C\u3092\u8D8A\u3048\u3066\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u3092\u7DAD\u6301\u3059\u308B\u305F\u3081\u3001\u524D\u306E\u30C1\u30E3\u30F3\u30AF\u304B\u3089\u4FDD\u6301\u3059\u308B\u6587\u5B57\u6570\u3002"
|
|
3081
|
+
},
|
|
3082
|
+
over_fetch: {
|
|
3083
|
+
label: "\u30AA\u30FC\u30D0\u30FC\u30D5\u30A7\u30C3\u30C1\u500D\u7387",
|
|
3084
|
+
help: "JS \u5074\u306E\u30E1\u30BF\u30C7\u30FC\u30BF\u30D5\u30A3\u30EB\u30BF\u30EA\u30F3\u30B0\u3067\u3082\u884C\u304C\u6B8B\u308B\u3088\u3046\u3001\u5185\u90E8\u3067 topK \xD7 overFetch \u4EF6\u306E\u5019\u88DC\u3092\u53D6\u5F97\u3057\u307E\u3059\u3002"
|
|
3085
|
+
},
|
|
3086
|
+
enforce_rls: {
|
|
3087
|
+
label: "\u691C\u7D22\u6642\u306B RLS \u3092\u5F37\u5236",
|
|
3088
|
+
help: "\u5404\u30D2\u30C3\u30C8\u3092\u547C\u3073\u51FA\u3057\u5143\u306E\u30EC\u30B3\u30FC\u30C9\u30EC\u30D9\u30EB\u6A29\u9650\u306B\u5BFE\u3057\u3066\u518D\u78BA\u8A8D\u3057\u307E\u3059\u3002\u26A0 \u7121\u52B9\u5316\u3059\u308B\u3068\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0\u56FA\u6709\u306E\u30BB\u30FC\u30D5\u30AC\u30FC\u30C9\u304C\u30B9\u30AD\u30C3\u30D7\u3055\u308C\u307E\u3059\u3002"
|
|
3089
|
+
}
|
|
3090
|
+
},
|
|
3091
|
+
actions: {
|
|
3092
|
+
test: { label: "\u63A5\u7D9A\u30C6\u30B9\u30C8" }
|
|
3093
|
+
}
|
|
2731
3094
|
}
|
|
2732
3095
|
}
|
|
2733
3096
|
};
|
|
@@ -2794,6 +3157,37 @@ var esES = {
|
|
|
2794
3157
|
logo_url: { label: "URL del logotipo", help: "Ejemplo: https://\u2026/logo.svg" }
|
|
2795
3158
|
}
|
|
2796
3159
|
},
|
|
3160
|
+
auth: {
|
|
3161
|
+
title: "Autenticaci\xF3n",
|
|
3162
|
+
description: "Inicio de sesi\xF3n, registro y controles de las funciones de autenticaci\xF3n integradas.",
|
|
3163
|
+
groups: {
|
|
3164
|
+
email_password: {
|
|
3165
|
+
title: "Correo y contrase\xF1a",
|
|
3166
|
+
description: "Controla el inicio de sesi\xF3n local con correo/contrase\xF1a y el registro de autoservicio."
|
|
3167
|
+
},
|
|
3168
|
+
social: {
|
|
3169
|
+
title: "Inicio de sesi\xF3n social",
|
|
3170
|
+
description: "Configura el proveedor de inicio de sesi\xF3n de Google integrado. Las variables de entorno del despliegue siguen teniendo prioridad."
|
|
3171
|
+
}
|
|
3172
|
+
},
|
|
3173
|
+
keys: {
|
|
3174
|
+
email_password_enabled: { label: "Habilitar inicio de sesi\xF3n con correo/contrase\xF1a" },
|
|
3175
|
+
signup_enabled: { label: "Permitir registro de autoservicio" },
|
|
3176
|
+
require_email_verification: { label: "Requerir verificaci\xF3n de correo" },
|
|
3177
|
+
google_enabled: {
|
|
3178
|
+
label: "Habilitar inicio de sesi\xF3n con Google",
|
|
3179
|
+
help: "Requiere un ID de cliente y un secreto de OAuth de Google desde Google Cloud Console."
|
|
3180
|
+
},
|
|
3181
|
+
google_client_id: {
|
|
3182
|
+
label: "ID de cliente de Google",
|
|
3183
|
+
help: "ID de cliente de OAuth desde Google Cloud Console. Tambi\xE9n se puede definir GOOGLE_CLIENT_ID en el servidor."
|
|
3184
|
+
},
|
|
3185
|
+
google_client_secret: {
|
|
3186
|
+
label: "Secreto de cliente de Google",
|
|
3187
|
+
help: "Se almacena cifrado en reposo. Tambi\xE9n se puede definir GOOGLE_CLIENT_SECRET en el servidor."
|
|
3188
|
+
}
|
|
3189
|
+
}
|
|
3190
|
+
},
|
|
2797
3191
|
feature_flags: {
|
|
2798
3192
|
title: "Indicadores de funci\xF3n",
|
|
2799
3193
|
description: "Activa funciones experimentales y en beta para este espacio de trabajo.",
|