diff --git a/app/L0/_all/mod/_core/admin/views/agent/config.js b/app/L0/_all/mod/_core/admin/views/agent/config.js
index 2a00ef4a..f1d1e77d 100644
--- a/app/L0/_all/mod/_core/admin/views/agent/config.js
+++ b/app/L0/_all/mod/_core/admin/views/agent/config.js
@@ -5,9 +5,70 @@ export const ADMIN_CHAT_HISTORY_PATH = "~/hist/admin-chat.json";
export const DEFAULT_ADMIN_CHAT_MAX_TOKENS = 120_000;
export const ADMIN_CHAT_LLM_PROVIDER = {
API: "api",
+ BEDROCK: "bedrock",
LOCAL: "local"
};
+export const ADMIN_CHAT_BEDROCK_CRED_MODE = {
+ SERVER: "server",
+ CLIENT_KEY: "client-key"
+};
+
+export const ADMIN_CHAT_BEDROCK_ROUTE = {
+ CONVERSE: "converse",
+ OPENAI: "openai"
+};
+
+export const BEDROCK_MODEL_PRESETS = [
+ {
+ id: "us.anthropic.claude-sonnet-4-6",
+ label: "Claude Sonnet 4.6 (fast, recommended)",
+ route: "converse"
+ },
+ {
+ id: "us.anthropic.claude-opus-4-7",
+ label: "Claude Opus 4.7 (smartest)",
+ route: "converse"
+ },
+ {
+ id: "us.anthropic.claude-opus-4-6-v1",
+ label: "Claude Opus 4.6",
+ route: "converse"
+ },
+ {
+ id: "us.anthropic.claude-haiku-4-5-20251001-v1:0",
+ label: "Claude Haiku 4.5 (cheap)",
+ route: "converse"
+ },
+ {
+ id: "openai.gpt-oss-20b-1:0",
+ label: "OpenAI gpt-oss 20B",
+ route: "openai"
+ },
+ {
+ id: "openai.gpt-oss-120b-1:0",
+ label: "OpenAI gpt-oss 120B",
+ route: "openai"
+ }
+];
+
+export function bedrockRouteForModel(modelId = "") {
+ const normalized = String(modelId || "").trim().toLowerCase();
+ if (!normalized) {
+ return ADMIN_CHAT_BEDROCK_ROUTE.CONVERSE;
+ }
+ if (normalized.startsWith("openai.")) {
+ return ADMIN_CHAT_BEDROCK_ROUTE.OPENAI;
+ }
+ return ADMIN_CHAT_BEDROCK_ROUTE.CONVERSE;
+}
+
+export function bedrockApiEndpointForRoute(route = ADMIN_CHAT_BEDROCK_ROUTE.CONVERSE) {
+ return route === ADMIN_CHAT_BEDROCK_ROUTE.OPENAI
+ ? "/api/bedrock/openai/v1/chat/completions"
+ : "/api/bedrock/converse/v1/chat/completions";
+}
+
export const ADMIN_CHAT_LOCAL_PROVIDER = {
HUGGINGFACE: "huggingface"
};
@@ -15,6 +76,9 @@ export const ADMIN_CHAT_LOCAL_PROVIDER = {
export const DEFAULT_ADMIN_CHAT_SETTINGS = {
apiEndpoint: "https://openrouter.ai/api/v1/chat/completions",
apiKey: "",
+ bedrockApiKey: "",
+ bedrockCredMode: ADMIN_CHAT_BEDROCK_CRED_MODE.SERVER,
+ bedrockModel: BEDROCK_MODEL_PRESETS[0].id,
huggingfaceDtype: "q4",
huggingfaceModel: "",
localProvider: ADMIN_CHAT_LOCAL_PROVIDER.HUGGINGFACE,
@@ -26,9 +90,19 @@ export const DEFAULT_ADMIN_CHAT_SETTINGS = {
};
export function normalizeAdminChatLlmProvider(value) {
- return value === ADMIN_CHAT_LLM_PROVIDER.LOCAL
- ? ADMIN_CHAT_LLM_PROVIDER.LOCAL
- : ADMIN_CHAT_LLM_PROVIDER.API;
+ if (value === ADMIN_CHAT_LLM_PROVIDER.LOCAL) {
+ return ADMIN_CHAT_LLM_PROVIDER.LOCAL;
+ }
+ if (value === ADMIN_CHAT_LLM_PROVIDER.BEDROCK) {
+ return ADMIN_CHAT_LLM_PROVIDER.BEDROCK;
+ }
+ return ADMIN_CHAT_LLM_PROVIDER.API;
+}
+
+export function normalizeAdminChatBedrockCredMode(value) {
+ return value === ADMIN_CHAT_BEDROCK_CRED_MODE.CLIENT_KEY
+ ? ADMIN_CHAT_BEDROCK_CRED_MODE.CLIENT_KEY
+ : ADMIN_CHAT_BEDROCK_CRED_MODE.SERVER;
}
export function normalizeAdminChatLocalProvider(value) {
diff --git a/app/L0/_all/mod/_core/admin/views/agent/panel.html b/app/L0/_all/mod/_core/admin/views/agent/panel.html
index bf67faaa..c180da86 100644
--- a/app/L0/_all/mod/_core/admin/views/agent/panel.html
+++ b/app/L0/_all/mod/_core/admin/views/agent/panel.html
@@ -179,43 +179,7 @@
Custom system instructions
Provider and model configuration
-
-
-
-
-
-
-
-
-
-
+