jinn-cli 0.3.0 → 0.3.1
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/dist/bin/jimmy.js +0 -0
- package/dist/src/cli/chrome-allow.d.ts.map +1 -1
- package/dist/src/cli/chrome-allow.js +14 -5
- package/dist/src/cli/chrome-allow.js.map +1 -1
- package/dist/src/cli/list.js +1 -1
- package/dist/src/cli/list.js.map +1 -1
- package/dist/src/cli/nuke.js +2 -2
- package/dist/src/cli/nuke.js.map +1 -1
- package/dist/src/cli/setup.d.ts.map +1 -1
- package/dist/src/cli/setup.js +2 -1
- package/dist/src/cli/setup.js.map +1 -1
- package/dist/src/connectors/slack/index.d.ts +9 -1
- package/dist/src/connectors/slack/index.d.ts.map +1 -1
- package/dist/src/connectors/slack/index.js +172 -8
- package/dist/src/connectors/slack/index.js.map +1 -1
- package/dist/src/connectors/slack/threads.d.ts +1 -4
- package/dist/src/connectors/slack/threads.d.ts.map +1 -1
- package/dist/src/connectors/slack/threads.js +17 -7
- package/dist/src/connectors/slack/threads.js.map +1 -1
- package/dist/src/connectors/slack/threads.test.js +42 -8
- package/dist/src/connectors/slack/threads.test.js.map +1 -1
- package/dist/src/cron/runner.d.ts.map +1 -1
- package/dist/src/cron/runner.js +16 -5
- package/dist/src/cron/runner.js.map +1 -1
- package/dist/src/engines/claude.d.ts.map +1 -1
- package/dist/src/engines/claude.js +19 -4
- package/dist/src/engines/claude.js.map +1 -1
- package/dist/src/gateway/api.d.ts.map +1 -1
- package/dist/src/gateway/api.js +207 -3
- package/dist/src/gateway/api.js.map +1 -1
- package/dist/src/gateway/lifecycle.d.ts.map +1 -1
- package/dist/src/gateway/lifecycle.js +16 -6
- package/dist/src/gateway/lifecycle.js.map +1 -1
- package/dist/src/gateway/org.d.ts.map +1 -1
- package/dist/src/gateway/org.js +1 -0
- package/dist/src/gateway/org.js.map +1 -1
- package/dist/src/gateway/server.d.ts.map +1 -1
- package/dist/src/gateway/server.js +40 -1
- package/dist/src/gateway/server.js.map +1 -1
- package/dist/src/gateway/watcher.d.ts.map +1 -1
- package/dist/src/gateway/watcher.js +9 -2
- package/dist/src/gateway/watcher.js.map +1 -1
- package/dist/src/mcp/gateway-server.d.ts +13 -0
- package/dist/src/mcp/gateway-server.d.ts.map +1 -0
- package/dist/src/mcp/gateway-server.js +375 -0
- package/dist/src/mcp/gateway-server.js.map +1 -0
- package/dist/src/mcp/resolver.d.ts +19 -0
- package/dist/src/mcp/resolver.d.ts.map +1 -0
- package/dist/src/mcp/resolver.js +153 -0
- package/dist/src/mcp/resolver.js.map +1 -0
- package/dist/src/sessions/context.d.ts +1 -0
- package/dist/src/sessions/context.d.ts.map +1 -1
- package/dist/src/sessions/context.js +34 -3
- package/dist/src/sessions/context.js.map +1 -1
- package/dist/src/sessions/limits.d.ts +7 -0
- package/dist/src/sessions/limits.d.ts.map +1 -0
- package/dist/src/sessions/limits.js +42 -0
- package/dist/src/sessions/limits.js.map +1 -0
- package/dist/src/sessions/manager.d.ts +3 -1
- package/dist/src/sessions/manager.d.ts.map +1 -1
- package/dist/src/sessions/manager.js +38 -17
- package/dist/src/sessions/manager.js.map +1 -1
- package/dist/src/sessions/registry.d.ts +6 -0
- package/dist/src/sessions/registry.d.ts.map +1 -1
- package/dist/src/sessions/registry.js +34 -5
- package/dist/src/sessions/registry.js.map +1 -1
- package/dist/src/shared/effort.d.ts +17 -0
- package/dist/src/shared/effort.d.ts.map +1 -0
- package/dist/src/shared/effort.js +44 -0
- package/dist/src/shared/effort.js.map +1 -0
- package/dist/src/shared/paths.d.ts +2 -0
- package/dist/src/shared/paths.d.ts.map +1 -1
- package/dist/src/shared/paths.js +2 -0
- package/dist/src/shared/paths.js.map +1 -1
- package/dist/src/shared/types.d.ts +57 -1
- package/dist/src/shared/types.d.ts.map +1 -1
- package/dist/src/stt/stt.d.ts +24 -0
- package/dist/src/stt/stt.d.ts.map +1 -0
- package/dist/src/stt/stt.js +203 -0
- package/dist/src/stt/stt.js.map +1 -0
- package/dist/web/404.html +1 -1
- package/dist/web/_next/static/chunks/198-3e82ded4f04a0aae.js +1 -0
- package/dist/web/_next/static/chunks/{704-af2893821e1d18dc.js → 704-ca24be493a922639.js} +1 -1
- package/dist/web/_next/static/chunks/{73-c226535579393e21.js → 73-2d6e730cea0fe6c8.js} +1 -1
- package/dist/web/_next/static/chunks/app/_not-found/{page-bb075b0779827928.js → page-7d43a486b7014af3.js} +1 -1
- package/dist/web/_next/static/chunks/app/chat/page-2f3c561ed768ed58.js +1 -0
- package/dist/web/_next/static/chunks/app/costs/{page-d6c03718defdb599.js → page-13a6f2c65a827f8a.js} +1 -1
- package/dist/web/_next/static/chunks/app/cron/{page-4c563eef2b6231fe.js → page-0ee07a679c7b79aa.js} +1 -1
- package/dist/web/_next/static/chunks/app/kanban/{page-55a73165a36f4077.js → page-a7facadd4194faae.js} +1 -1
- package/dist/web/_next/static/chunks/app/layout-fd975d16033dab25.js +1 -0
- package/dist/web/_next/static/chunks/app/logs/page-6de6b16523e85193.js +1 -0
- package/dist/web/_next/static/chunks/app/org/{page-d5cd8d9b7864737b.js → page-cd9d362e77f4799e.js} +1 -1
- package/dist/web/_next/static/chunks/app/{page-b81992940fd1dbc6.js → page-b98417ed4f4d45a0.js} +1 -1
- package/dist/web/_next/static/chunks/app/sessions/page-7148306182017841.js +1 -0
- package/dist/web/_next/static/chunks/app/settings/page-34c9276e2a012445.js +1 -0
- package/dist/web/_next/static/chunks/app/skills/page-18cf3b7bb9a7339c.js +1 -0
- package/dist/web/_next/static/chunks/main-app-0c65af8a0fd99888.js +1 -0
- package/dist/web/_next/static/css/24da9dfc818cea32.css +1 -0
- package/dist/web/chat.html +1 -1
- package/dist/web/chat.txt +5 -5
- package/dist/web/costs.html +2 -2
- package/dist/web/costs.txt +5 -5
- package/dist/web/cron.html +1 -1
- package/dist/web/cron.txt +5 -5
- package/dist/web/index.html +1 -1
- package/dist/web/index.txt +5 -5
- package/dist/web/kanban.html +1 -1
- package/dist/web/kanban.txt +5 -5
- package/dist/web/logs.html +2 -2
- package/dist/web/logs.txt +5 -5
- package/dist/web/org.html +1 -1
- package/dist/web/org.txt +5 -5
- package/dist/web/sessions.html +1 -1
- package/dist/web/sessions.txt +5 -5
- package/dist/web/settings.html +1 -1
- package/dist/web/settings.txt +5 -5
- package/dist/web/skills.html +1 -1
- package/dist/web/skills.txt +5 -5
- package/package.json +9 -9
- package/template/config.default.yaml +32 -0
- package/template/docs/mcp.md +108 -0
- package/dist/web/_next/static/chunks/198-fd91406a158c5c25.js +0 -1
- package/dist/web/_next/static/chunks/app/chat/page-6d5bc707a45c92c6.js +0 -1
- package/dist/web/_next/static/chunks/app/layout-5129b67d5f126cf0.js +0 -1
- package/dist/web/_next/static/chunks/app/logs/page-e18889d67e48c9c9.js +0 -1
- package/dist/web/_next/static/chunks/app/sessions/page-c83c890177c18258.js +0 -1
- package/dist/web/_next/static/chunks/app/settings/page-2583d55551abdf72.js +0 -1
- package/dist/web/_next/static/chunks/app/skills/page-df9465e314561bb5.js +0 -1
- package/dist/web/_next/static/chunks/main-app-437f51faf74fbb3b.js +0 -1
- package/dist/web/_next/static/css/4a6a5bca9238c104.css +0 -1
- /package/dist/web/_next/static/{jt8R5JvUgfB9CMfFwWFr0 → Zn588p2VvgjCSLr44R__1}/_buildManifest.js +0 -0
- /package/dist/web/_next/static/{jt8R5JvUgfB9CMfFwWFr0 → Zn588p2VvgjCSLr44R__1}/_ssgManifest.js +0 -0
package/dist/web/settings.html
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><!--jt8R5JvUgfB9CMfFwWFr0--><html lang="en" data-theme="dark"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/4a6a5bca9238c104.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-0f39b7e91dce9791.js"/><script src="/_next/static/chunks/8e6518bb-c26e82767f1faf66.js" async=""></script><script src="/_next/static/chunks/743-5bb03adbb0e4ddec.js" async=""></script><script src="/_next/static/chunks/main-app-437f51faf74fbb3b.js" async=""></script><script src="/_next/static/chunks/app/layout-5129b67d5f126cf0.js" async=""></script><script src="/_next/static/chunks/704-af2893821e1d18dc.js" async=""></script><script src="/_next/static/chunks/73-c226535579393e21.js" async=""></script><script src="/_next/static/chunks/app/settings/page-2583d55551abdf72.js" async=""></script><meta name="description" content="AI Gateway Dashboard"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div class="flex h-screen overflow-hidden" style="background:var(--bg)"><aside style="position:fixed;left:0;top:0;bottom:0;width:56px;background:var(--bg-secondary);border-right:1px solid var(--separator);flex-direction:column;z-index:50;transition:width 200ms var(--ease-smooth);overflow:hidden" class="hidden lg:flex"><div style="display:flex;align-items:center;gap:10px;padding:16px 14px 12px;min-height:56px;flex-shrink:0"><span style="font-size:24px;line-height:1;flex-shrink:0;width:28px;text-align:center">🤖</span><span style="font-size:17px;font-weight:600;color:var(--text-primary);white-space:nowrap;opacity:0;transition:opacity 200ms var(--ease-smooth)">Jinn</span></div><nav style="flex:1;display:flex;flex-direction:column;gap:2px;padding:0 8px"><a class="nav-item" aria-label="Home" style="display:flex;align-items:center;gap:10px;height:40px;padding:0 12px;text-decoration:none;color:var(--text-secondary);background:transparent;font-weight:400;font-size:13px;white-space:nowrap" href="/"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-house" aria-hidden="true" style="flex-shrink:0;color:var(--text-secondary)"><path d="M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8"></path><path d="M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"></path></svg><span style="opacity:0;transition:opacity 200ms var(--ease-smooth)">Home</span></a><a class="nav-item" aria-label="Chat" style="display:flex;align-items:center;gap:10px;height:40px;padding:0 12px;text-decoration:none;color:var(--text-secondary);background:transparent;font-weight:400;font-size:13px;white-space:nowrap" href="/chat"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-message-square" aria-hidden="true" style="flex-shrink:0;color:var(--text-secondary)"><path d="M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z"></path></svg><span style="opacity:0;transition:opacity 200ms var(--ease-smooth)">Chat</span></a><a class="nav-item" aria-label="Sessions" style="display:flex;align-items:center;gap:10px;height:40px;padding:0 12px;text-decoration:none;color:var(--text-secondary);background:transparent;font-weight:400;font-size:13px;white-space:nowrap" href="/sessions"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-layers" aria-hidden="true" style="flex-shrink:0;color:var(--text-secondary)"><path d="M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z"></path><path d="M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12"></path><path d="M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17"></path></svg><span style="opacity:0;transition:opacity 200ms var(--ease-smooth)">Sessions</span></a><a class="nav-item" aria-label="Organization" style="display:flex;align-items:center;gap:10px;height:40px;padding:0 12px;text-decoration:none;color:var(--text-secondary);background:transparent;font-weight:400;font-size:13px;white-space:nowrap" href="/org"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-users" aria-hidden="true" style="flex-shrink:0;color:var(--text-secondary)"><path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"></path><path d="M16 3.128a4 4 0 0 1 0 7.744"></path><path d="M22 21v-2a4 4 0 0 0-3-3.87"></path><circle cx="9" cy="7" r="4"></circle></svg><span style="opacity:0;transition:opacity 200ms var(--ease-smooth)">Organization</span></a><a class="nav-item" aria-label="Kanban" style="display:flex;align-items:center;gap:10px;height:40px;padding:0 12px;text-decoration:none;color:var(--text-secondary);background:transparent;font-weight:400;font-size:13px;white-space:nowrap" href="/kanban"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-layout-grid" aria-hidden="true" style="flex-shrink:0;color:var(--text-secondary)"><rect width="7" height="7" x="3" y="3" rx="1"></rect><rect width="7" height="7" x="14" y="3" rx="1"></rect><rect width="7" height="7" x="14" y="14" rx="1"></rect><rect width="7" height="7" x="3" y="14" rx="1"></rect></svg><span style="opacity:0;transition:opacity 200ms var(--ease-smooth)">Kanban</span></a><a class="nav-item" aria-label="Cron" style="display:flex;align-items:center;gap:10px;height:40px;padding:0 12px;text-decoration:none;color:var(--text-secondary);background:transparent;font-weight:400;font-size:13px;white-space:nowrap" href="/cron"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clock" aria-hidden="true" style="flex-shrink:0;color:var(--text-secondary)"><circle cx="12" cy="12" r="10"></circle><path d="M12 6v6l4 2"></path></svg><span style="opacity:0;transition:opacity 200ms var(--ease-smooth)">Cron</span></a><a class="nav-item" aria-label="Costs" style="display:flex;align-items:center;gap:10px;height:40px;padding:0 12px;text-decoration:none;color:var(--text-secondary);background:transparent;font-weight:400;font-size:13px;white-space:nowrap" href="/costs"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-dollar-sign" aria-hidden="true" style="flex-shrink:0;color:var(--text-secondary)"><line x1="12" x2="12" y1="2" y2="22"></line><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg><span style="opacity:0;transition:opacity 200ms var(--ease-smooth)">Costs</span></a><a class="nav-item" aria-label="Activity" style="display:flex;align-items:center;gap:10px;height:40px;padding:0 12px;text-decoration:none;color:var(--text-secondary);background:transparent;font-weight:400;font-size:13px;white-space:nowrap" href="/logs"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-activity" aria-hidden="true" style="flex-shrink:0;color:var(--text-secondary)"><path d="M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2"></path></svg><span style="opacity:0;transition:opacity 200ms var(--ease-smooth)">Activity</span></a><a class="nav-item" aria-label="Skills" style="display:flex;align-items:center;gap:10px;height:40px;padding:0 12px;text-decoration:none;color:var(--text-secondary);background:transparent;font-weight:400;font-size:13px;white-space:nowrap" href="/skills"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-zap" aria-hidden="true" style="flex-shrink:0;color:var(--text-secondary)"><path d="M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z"></path></svg><span style="opacity:0;transition:opacity 200ms var(--ease-smooth)">Skills</span></a><a class="nav-item" aria-label="Settings" aria-current="page" style="display:flex;align-items:center;gap:10px;height:40px;padding:0 12px;text-decoration:none;color:var(--accent);background:var(--accent-fill);font-weight:600;font-size:13px;white-space:nowrap" href="/settings"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-settings" aria-hidden="true" style="flex-shrink:0;color:var(--accent)"><path d="M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915"></path><circle cx="12" cy="12" r="3"></circle></svg><span style="opacity:0;transition:opacity 200ms var(--ease-smooth)">Settings</span></a></nav><div style="padding:8px 8px 12px;flex-shrink:0"><button class="nav-item" aria-label="Theme: dark. Click to cycle." style="display:flex;align-items:center;gap:10px;height:40px;padding:0 12px;width:100%;border:none;background:transparent;color:var(--text-secondary);cursor:pointer;font-size:13px;white-space:nowrap"><span style="flex-shrink:0"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-moon" aria-hidden="true"><path d="M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401"></path></svg></span><span style="opacity:0;transition:opacity 200ms var(--ease-smooth);text-transform:capitalize">dark</span></button></div></aside><main class="flex-1 overflow-hidden lg:ml-[56px]"><div style="height:48px;display:flex;align-items:center;padding:0 12px;border-bottom:1px solid var(--separator);background:var(--material-thick);flex-shrink:0;position:relative;z-index:60" class="jsx-906cbf20b7aa1777 lg:hidden"><button aria-label="Open menu" style="width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;cursor:pointer;color:var(--text-primary)" class="jsx-906cbf20b7aa1777"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-menu" aria-hidden="true"><path d="M4 5h16"></path><path d="M4 12h16"></path><path d="M4 19h16"></path></svg></button><div style="flex:1;text-align:center" class="jsx-906cbf20b7aa1777"><span style="font-size:18px;margin-right:6px" class="jsx-906cbf20b7aa1777">🤖</span><span style="font-size:15px;font-weight:600;color:var(--text-primary)" class="jsx-906cbf20b7aa1777">Jinn</span></div><div style="width:36px" class="jsx-906cbf20b7aa1777"></div></div><div class="h-full overflow-y-auto" style="background:var(--bg)"><div style="max-width:640px;margin:0 auto;padding:var(--space-6) var(--space-4) var(--space-12)"><h1 style="font-size:var(--text-title1);font-weight:var(--weight-bold);letter-spacing:var(--tracking-tight);color:var(--text-primary);margin:0 0 var(--space-6)">Settings</h1><section style="margin-bottom:var(--space-6)"><div style="font-size:var(--text-caption1);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--text-tertiary);padding:0 var(--space-2) var(--space-2)">Appearance</div><div style="background:var(--material-regular);border-radius:var(--radius-md);border:1px solid var(--separator);padding:var(--space-4)"><div style="font-size:var(--text-footnote);font-weight:var(--weight-medium);color:var(--text-secondary);margin-bottom:var(--space-2)">Theme</div><div style="display:grid;grid-template-columns:repeat(5, 1fr);gap:var(--space-2);margin-bottom:var(--space-4)"><button style="display:flex;flex-direction:column;align-items:center;gap:var(--space-1);padding:var(--space-3) var(--space-2);border-radius:var(--radius-md);background:var(--fill-quaternary);border:2px solid var(--accent);cursor:pointer;transition:all 150ms var(--ease-smooth)"><span style="font-size:24px">🌑</span><span style="font-size:var(--text-caption2);font-weight:var(--weight-semibold);color:var(--accent)">Dark</span></button><button style="display:flex;flex-direction:column;align-items:center;gap:var(--space-1);padding:var(--space-3) var(--space-2);border-radius:var(--radius-md);background:var(--fill-quaternary);border:2px solid var(--separator);cursor:pointer;transition:all 150ms var(--ease-smooth)"><span style="font-size:24px">🪟</span><span style="font-size:var(--text-caption2);font-weight:var(--weight-medium);color:var(--text-secondary)">Glass</span></button><button style="display:flex;flex-direction:column;align-items:center;gap:var(--space-1);padding:var(--space-3) var(--space-2);border-radius:var(--radius-md);background:var(--fill-quaternary);border:2px solid var(--separator);cursor:pointer;transition:all 150ms var(--ease-smooth)"><span style="font-size:24px">🎨</span><span style="font-size:var(--text-caption2);font-weight:var(--weight-medium);color:var(--text-secondary)">Color</span></button><button style="display:flex;flex-direction:column;align-items:center;gap:var(--space-1);padding:var(--space-3) var(--space-2);border-radius:var(--radius-md);background:var(--fill-quaternary);border:2px solid var(--separator);cursor:pointer;transition:all 150ms var(--ease-smooth)"><span style="font-size:24px">☀️</span><span style="font-size:var(--text-caption2);font-weight:var(--weight-medium);color:var(--text-secondary)">Light</span></button><button style="display:flex;flex-direction:column;align-items:center;gap:var(--space-1);padding:var(--space-3) var(--space-2);border-radius:var(--radius-md);background:var(--fill-quaternary);border:2px solid var(--separator);cursor:pointer;transition:all 150ms var(--ease-smooth)"><span style="font-size:24px">⚙️</span><span style="font-size:var(--text-caption2);font-weight:var(--weight-medium);color:var(--text-secondary)">System</span></button></div><div style="font-size:var(--text-footnote);font-weight:var(--weight-medium);color:var(--text-secondary);margin-bottom:var(--space-2)">Accent Color</div><div style="display:flex;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-3)"><button aria-label="Red" title="Red" style="width:32px;height:32px;border-radius:50%;background:#EF4444;border:2px solid transparent;outline:none;outline-offset:2px;cursor:pointer;transition:all 100ms var(--ease-smooth);display:flex;align-items:center;justify-content:center"></button><button aria-label="Orange" title="Orange" style="width:32px;height:32px;border-radius:50%;background:#F97316;border:2px solid transparent;outline:none;outline-offset:2px;cursor:pointer;transition:all 100ms var(--ease-smooth);display:flex;align-items:center;justify-content:center"></button><button aria-label="Amber" title="Amber" style="width:32px;height:32px;border-radius:50%;background:#F59E0B;border:2px solid transparent;outline:none;outline-offset:2px;cursor:pointer;transition:all 100ms var(--ease-smooth);display:flex;align-items:center;justify-content:center"></button><button aria-label="Yellow" title="Yellow" style="width:32px;height:32px;border-radius:50%;background:#EAB308;border:2px solid transparent;outline:none;outline-offset:2px;cursor:pointer;transition:all 100ms var(--ease-smooth);display:flex;align-items:center;justify-content:center"></button><button aria-label="Lime" title="Lime" style="width:32px;height:32px;border-radius:50%;background:#84CC16;border:2px solid transparent;outline:none;outline-offset:2px;cursor:pointer;transition:all 100ms var(--ease-smooth);display:flex;align-items:center;justify-content:center"></button><button aria-label="Green" title="Green" style="width:32px;height:32px;border-radius:50%;background:#22C55E;border:2px solid transparent;outline:none;outline-offset:2px;cursor:pointer;transition:all 100ms var(--ease-smooth);display:flex;align-items:center;justify-content:center"></button><button aria-label="Emerald" title="Emerald" style="width:32px;height:32px;border-radius:50%;background:#10B981;border:2px solid transparent;outline:none;outline-offset:2px;cursor:pointer;transition:all 100ms var(--ease-smooth);display:flex;align-items:center;justify-content:center"></button><button aria-label="Cyan" title="Cyan" style="width:32px;height:32px;border-radius:50%;background:#06B6D4;border:2px solid transparent;outline:none;outline-offset:2px;cursor:pointer;transition:all 100ms var(--ease-smooth);display:flex;align-items:center;justify-content:center"></button><button aria-label="Blue" title="Blue" style="width:32px;height:32px;border-radius:50%;background:#3B82F6;border:2px solid transparent;outline:none;outline-offset:2px;cursor:pointer;transition:all 100ms var(--ease-smooth);display:flex;align-items:center;justify-content:center"></button><button aria-label="Indigo" title="Indigo" style="width:32px;height:32px;border-radius:50%;background:#6366F1;border:2px solid transparent;outline:none;outline-offset:2px;cursor:pointer;transition:all 100ms var(--ease-smooth);display:flex;align-items:center;justify-content:center"></button><button aria-label="Violet" title="Violet" style="width:32px;height:32px;border-radius:50%;background:#8B5CF6;border:2px solid transparent;outline:none;outline-offset:2px;cursor:pointer;transition:all 100ms var(--ease-smooth);display:flex;align-items:center;justify-content:center"></button><button aria-label="Pink" title="Pink" style="width:32px;height:32px;border-radius:50%;background:#EC4899;border:2px solid transparent;outline:none;outline-offset:2px;cursor:pointer;transition:all 100ms var(--ease-smooth);display:flex;align-items:center;justify-content:center"></button></div><div style="display:flex;align-items:center;gap:var(--space-3)"><label style="display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-footnote);color:var(--text-secondary);cursor:pointer">Custom:<input type="color" style="width:28px;height:28px;border:none;border-radius:50%;cursor:pointer;background:none;padding:0" value="#3B82F6"/></label><input type="text" placeholder="#3B82F6" class="apple-input" style="width:90px;padding:4px 8px;font-size:var(--text-caption1);background:var(--bg-secondary);border:1px solid var(--separator);border-radius:var(--radius-sm);color:var(--text-primary);font-family:monospace" value=""/></div></div></section><section style="margin-bottom:var(--space-6)"><div style="font-size:var(--text-caption1);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--text-tertiary);padding:0 var(--space-2) var(--space-2)">Branding</div><div style="background:var(--material-regular);border-radius:var(--radius-md);border:1px solid var(--separator);padding:var(--space-4)"><div style="display:flex;flex-direction:column;gap:var(--space-3)"><div><label style="display:block;font-size:var(--text-caption1);color:var(--text-tertiary);margin-bottom:var(--space-1)">Portal Name</label><input type="text" class="apple-input" placeholder="Jinn" style="width:100%;background:var(--bg-secondary);border:1px solid var(--separator);border-radius:var(--radius-sm);padding:6px 10px;font-size:var(--text-footnote);color:var(--text-primary)" value=""/></div><div><label style="display:block;font-size:var(--text-caption1);color:var(--text-tertiary);margin-bottom:var(--space-1)">Portal Subtitle</label><input type="text" class="apple-input" placeholder="Command Centre" style="width:100%;background:var(--bg-secondary);border:1px solid var(--separator);border-radius:var(--radius-sm);padding:6px 10px;font-size:var(--text-footnote);color:var(--text-primary)" value=""/></div><div><label style="display:block;font-size:var(--text-caption1);color:var(--text-tertiary);margin-bottom:var(--space-1)">Operator Name</label><input type="text" class="apple-input" placeholder="Your Name" style="width:100%;background:var(--bg-secondary);border:1px solid var(--separator);border-radius:var(--radius-sm);padding:6px 10px;font-size:var(--text-footnote);color:var(--text-primary)" value=""/></div><div><label style="display:block;font-size:var(--text-caption1);color:var(--text-tertiary);margin-bottom:var(--space-1)">Portal Emoji</label><input type="text" class="apple-input" placeholder="🤖" style="width:80px;text-align:center;font-size:var(--text-title2);padding:6px 8px;background:var(--bg-secondary);border:1px solid var(--separator);border-radius:var(--radius-sm)" value=""/></div><div><label style="display:block;font-size:var(--text-caption1);color:var(--text-tertiary);margin-bottom:var(--space-1)">Language</label><select style="width:100%;background:var(--bg-secondary);border:1px solid var(--separator);border-radius:var(--radius-sm);padding:6px 10px;font-size:var(--text-footnote);color:var(--text-primary);cursor:pointer"><option value="English" selected="">English</option><option value="Spanish">Spanish</option><option value="French">French</option><option value="German">German</option><option value="Portuguese">Portuguese</option><option value="Italian">Italian</option><option value="Dutch">Dutch</option><option value="Russian">Russian</option><option value="Chinese">Chinese</option><option value="Japanese">Japanese</option><option value="Korean">Korean</option><option value="Arabic">Arabic</option><option value="Hindi">Hindi</option><option value="Bulgarian">Bulgarian</option></select></div></div></div></section><div style="text-align:center;padding:var(--space-8);color:var(--text-tertiary);font-size:var(--text-footnote)"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-loader-circle" aria-hidden="true" style="animation:spin 1s linear infinite;margin:0 auto var(--space-2)"><path d="M21 12a9 9 0 1 1-6.219-8.56"></path></svg>Loading gateway config...</div><section style="margin-bottom:var(--space-6)"><div style="font-size:var(--text-caption1);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--text-tertiary);padding:0 var(--space-2) var(--space-2)">Reset</div><div style="background:var(--material-regular);border-radius:var(--radius-md);border:1px solid var(--separator);padding:var(--space-4)"><div style="display:flex;align-items:center;justify-content:center;gap:var(--space-3);flex-wrap:wrap"><button style="padding:var(--space-2) var(--space-5);border-radius:var(--radius-md);background:var(--accent);color:var(--accent-contrast);border:none;cursor:pointer;font-size:var(--text-footnote);font-weight:var(--weight-semibold);transition:all 150ms var(--ease-spring);display:inline-flex;align-items:center;gap:var(--space-2)"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-rotate-ccw" aria-hidden="true"><path d="M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8"></path><path d="M3 3v5h5"></path></svg>Re-run Onboarding Wizard</button><button style="padding:var(--space-2) var(--space-5);border-radius:var(--radius-md);background:var(--system-red);color:#fff;border:none;cursor:pointer;font-size:var(--text-footnote);font-weight:var(--weight-semibold);transition:all 150ms var(--ease-spring);display:inline-flex;align-items:center;gap:var(--space-2)"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-trash2 lucide-trash-2" aria-hidden="true"><path d="M10 11v6"></path><path d="M14 11v6"></path><path d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6"></path><path d="M3 6h18"></path><path d="M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"></path></svg>Reset All Settings</button></div></div></section></div></div></main></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-0f39b7e91dce9791.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[1150,[\"177\",\"static/chunks/app/layout-5129b67d5f126cf0.js\"],\"ClientProviders\"]\n3:I[8954,[],\"\"]\n4:I[5640,[],\"\"]\n5:I[3339,[],\"ClientPageRoot\"]\n6:I[7774,[\"704\",\"static/chunks/704-af2893821e1d18dc.js\",\"73\",\"static/chunks/73-c226535579393e21.js\",\"662\",\"static/chunks/app/settings/page-2583d55551abdf72.js\"],\"default\"]\n9:I[2051,[],\"OutletBoundary\"]\nb:I[6658,[],\"AsyncMetadataOutlet\"]\nd:I[2051,[],\"ViewportBoundary\"]\nf:I[2051,[],\"MetadataBoundary\"]\n10:\"$Sreact.suspense\"\n12:I[7698,[],\"\"]\n:HL[\"/_next/static/css/4a6a5bca9238c104.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"jt8R5JvUgfB9CMfFwWFr0\",\"p\":\"\",\"c\":[\"\",\"settings\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"settings\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/4a6a5bca9238c104.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"data-theme\":\"dark\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"children\":[\"$\",\"$L2\",null,{\"children\":[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]}]]}],{\"children\":[\"settings\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L5\",null,{\"Component\":\"$6\",\"searchParams\":{},\"params\":{},\"promises\":[\"$@7\",\"$@8\"]}],null,[\"$\",\"$L9\",null,{\"children\":[\"$La\",[\"$\",\"$Lb\",null,{\"promise\":\"$@c\"}]]}]]}],{},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[[\"$\",\"$Ld\",null,{\"children\":\"$Le\"}],null],[\"$\",\"$Lf\",null,{\"children\":[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$10\",null,{\"fallback\":null,\"children\":\"$L11\"}]}]}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$12\",[]],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"7:{}\n8:\"$0:f:0:1:2:children:2:children:1:props:children:0:props:params\"\n"])</script><script>self.__next_f.push([1,"e:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\na:null\n"])</script><script>self.__next_f.push([1,"c:{\"metadata\":[[\"$\",\"meta\",\"0\",{\"name\":\"description\",\"content\":\"AI Gateway Dashboard\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"11:\"$c:metadata\"\n"])</script></body></html>
|
|
1
|
+
<!DOCTYPE html><!--Zn588p2VvgjCSLr44R__1--><html lang="en" data-theme="dark"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"/><link rel="stylesheet" href="/_next/static/css/24da9dfc818cea32.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-0f39b7e91dce9791.js"/><script src="/_next/static/chunks/8e6518bb-c26e82767f1faf66.js" async=""></script><script src="/_next/static/chunks/743-5bb03adbb0e4ddec.js" async=""></script><script src="/_next/static/chunks/main-app-0c65af8a0fd99888.js" async=""></script><script src="/_next/static/chunks/app/layout-fd975d16033dab25.js" async=""></script><script src="/_next/static/chunks/704-ca24be493a922639.js" async=""></script><script src="/_next/static/chunks/73-2d6e730cea0fe6c8.js" async=""></script><script src="/_next/static/chunks/app/settings/page-34c9276e2a012445.js" async=""></script><meta name="description" content="AI Gateway Dashboard"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div class="flex h-dvh overflow-hidden" style="background:var(--bg)"><aside style="position:fixed;left:0;top:0;bottom:0;width:56px;background:var(--bg-secondary);border-right:1px solid var(--separator);flex-direction:column;z-index:50;transition:width 200ms var(--ease-smooth);overflow:hidden" class="hidden lg:flex"><div style="display:flex;align-items:center;gap:10px;padding:16px 14px 12px;min-height:56px;flex-shrink:0"><span style="font-size:24px;line-height:1;flex-shrink:0;width:28px;text-align:center">🤖</span><span style="font-size:17px;font-weight:600;color:var(--text-primary);white-space:nowrap;opacity:0;transition:opacity 200ms var(--ease-smooth)">Jinn</span></div><nav style="flex:1;display:flex;flex-direction:column;gap:2px;padding:0 8px"><a class="nav-item" aria-label="Home" style="display:flex;align-items:center;gap:10px;height:40px;padding:0 12px;text-decoration:none;color:var(--text-secondary);background:transparent;font-weight:400;font-size:13px;white-space:nowrap" href="/"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-house" aria-hidden="true" style="flex-shrink:0;color:var(--text-secondary)"><path d="M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8"></path><path d="M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"></path></svg><span style="opacity:0;transition:opacity 200ms var(--ease-smooth)">Home</span></a><a class="nav-item" aria-label="Chat" style="display:flex;align-items:center;gap:10px;height:40px;padding:0 12px;text-decoration:none;color:var(--text-secondary);background:transparent;font-weight:400;font-size:13px;white-space:nowrap" href="/chat"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-message-square" aria-hidden="true" style="flex-shrink:0;color:var(--text-secondary)"><path d="M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z"></path></svg><span style="opacity:0;transition:opacity 200ms var(--ease-smooth)">Chat</span></a><a class="nav-item" aria-label="Sessions" style="display:flex;align-items:center;gap:10px;height:40px;padding:0 12px;text-decoration:none;color:var(--text-secondary);background:transparent;font-weight:400;font-size:13px;white-space:nowrap" href="/sessions"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-layers" aria-hidden="true" style="flex-shrink:0;color:var(--text-secondary)"><path d="M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z"></path><path d="M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12"></path><path d="M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17"></path></svg><span style="opacity:0;transition:opacity 200ms var(--ease-smooth)">Sessions</span></a><a class="nav-item" aria-label="Organization" style="display:flex;align-items:center;gap:10px;height:40px;padding:0 12px;text-decoration:none;color:var(--text-secondary);background:transparent;font-weight:400;font-size:13px;white-space:nowrap" href="/org"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-users" aria-hidden="true" style="flex-shrink:0;color:var(--text-secondary)"><path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"></path><path d="M16 3.128a4 4 0 0 1 0 7.744"></path><path d="M22 21v-2a4 4 0 0 0-3-3.87"></path><circle cx="9" cy="7" r="4"></circle></svg><span style="opacity:0;transition:opacity 200ms var(--ease-smooth)">Organization</span></a><a class="nav-item" aria-label="Kanban" style="display:flex;align-items:center;gap:10px;height:40px;padding:0 12px;text-decoration:none;color:var(--text-secondary);background:transparent;font-weight:400;font-size:13px;white-space:nowrap" href="/kanban"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-layout-grid" aria-hidden="true" style="flex-shrink:0;color:var(--text-secondary)"><rect width="7" height="7" x="3" y="3" rx="1"></rect><rect width="7" height="7" x="14" y="3" rx="1"></rect><rect width="7" height="7" x="14" y="14" rx="1"></rect><rect width="7" height="7" x="3" y="14" rx="1"></rect></svg><span style="opacity:0;transition:opacity 200ms var(--ease-smooth)">Kanban</span></a><a class="nav-item" aria-label="Cron" style="display:flex;align-items:center;gap:10px;height:40px;padding:0 12px;text-decoration:none;color:var(--text-secondary);background:transparent;font-weight:400;font-size:13px;white-space:nowrap" href="/cron"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clock" aria-hidden="true" style="flex-shrink:0;color:var(--text-secondary)"><circle cx="12" cy="12" r="10"></circle><path d="M12 6v6l4 2"></path></svg><span style="opacity:0;transition:opacity 200ms var(--ease-smooth)">Cron</span></a><a class="nav-item" aria-label="Costs" style="display:flex;align-items:center;gap:10px;height:40px;padding:0 12px;text-decoration:none;color:var(--text-secondary);background:transparent;font-weight:400;font-size:13px;white-space:nowrap" href="/costs"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-dollar-sign" aria-hidden="true" style="flex-shrink:0;color:var(--text-secondary)"><line x1="12" x2="12" y1="2" y2="22"></line><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg><span style="opacity:0;transition:opacity 200ms var(--ease-smooth)">Costs</span></a><a class="nav-item" aria-label="Activity" style="display:flex;align-items:center;gap:10px;height:40px;padding:0 12px;text-decoration:none;color:var(--text-secondary);background:transparent;font-weight:400;font-size:13px;white-space:nowrap" href="/logs"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-activity" aria-hidden="true" style="flex-shrink:0;color:var(--text-secondary)"><path d="M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2"></path></svg><span style="opacity:0;transition:opacity 200ms var(--ease-smooth)">Activity</span></a><a class="nav-item" aria-label="Skills" style="display:flex;align-items:center;gap:10px;height:40px;padding:0 12px;text-decoration:none;color:var(--text-secondary);background:transparent;font-weight:400;font-size:13px;white-space:nowrap" href="/skills"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-zap" aria-hidden="true" style="flex-shrink:0;color:var(--text-secondary)"><path d="M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z"></path></svg><span style="opacity:0;transition:opacity 200ms var(--ease-smooth)">Skills</span></a><a class="nav-item" aria-label="Settings" aria-current="page" style="display:flex;align-items:center;gap:10px;height:40px;padding:0 12px;text-decoration:none;color:var(--accent);background:var(--accent-fill);font-weight:600;font-size:13px;white-space:nowrap" href="/settings"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-settings" aria-hidden="true" style="flex-shrink:0;color:var(--accent)"><path d="M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915"></path><circle cx="12" cy="12" r="3"></circle></svg><span style="opacity:0;transition:opacity 200ms var(--ease-smooth)">Settings</span></a></nav><div style="padding:8px 8px 12px;flex-shrink:0"><button class="nav-item" aria-label="Theme: dark. Click to cycle." style="display:flex;align-items:center;gap:10px;height:40px;padding:0 12px;width:100%;border:none;background:transparent;color:var(--text-secondary);cursor:pointer;font-size:13px;white-space:nowrap"><span style="flex-shrink:0"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-moon" aria-hidden="true"><path d="M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401"></path></svg></span><span style="opacity:0;transition:opacity 200ms var(--ease-smooth);text-transform:capitalize">dark</span></button></div></aside><main class="flex-1 overflow-hidden lg:ml-[56px]"><div style="height:48px;display:flex;align-items:center;padding:0 12px;border-bottom:1px solid var(--separator);background:var(--material-thick);flex-shrink:0;position:relative;z-index:60" class="jsx-906cbf20b7aa1777 lg:hidden"><button aria-label="Open menu" style="width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;cursor:pointer;color:var(--text-primary)" class="jsx-906cbf20b7aa1777"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-menu" aria-hidden="true"><path d="M4 5h16"></path><path d="M4 12h16"></path><path d="M4 19h16"></path></svg></button><div style="flex:1;text-align:center" class="jsx-906cbf20b7aa1777"><span style="font-size:18px;margin-right:6px" class="jsx-906cbf20b7aa1777">🤖</span><span style="font-size:15px;font-weight:600;color:var(--text-primary)" class="jsx-906cbf20b7aa1777">Jinn</span></div><div style="width:36px" class="jsx-906cbf20b7aa1777"></div></div><div class="h-full overflow-y-auto" style="background:var(--bg)"><div style="max-width:640px;margin:0 auto;padding:var(--space-6) var(--space-4) var(--space-12)"><h1 style="font-size:var(--text-title1);font-weight:var(--weight-bold);letter-spacing:var(--tracking-tight);color:var(--text-primary);margin:0 0 var(--space-6)">Settings</h1><section style="margin-bottom:var(--space-6)"><div style="font-size:var(--text-caption1);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--text-tertiary);padding:0 var(--space-2) var(--space-2)">Appearance</div><div style="background:var(--material-regular);border-radius:var(--radius-md);border:1px solid var(--separator);padding:var(--space-4)"><div style="font-size:var(--text-footnote);font-weight:var(--weight-medium);color:var(--text-secondary);margin-bottom:var(--space-2)">Theme</div><div style="display:grid;grid-template-columns:repeat(5, 1fr);gap:var(--space-2);margin-bottom:var(--space-4)"><button style="display:flex;flex-direction:column;align-items:center;gap:var(--space-1);padding:var(--space-3) var(--space-2);border-radius:var(--radius-md);background:var(--fill-quaternary);border:2px solid var(--accent);cursor:pointer;transition:all 150ms var(--ease-smooth)"><span style="font-size:24px">🌑</span><span style="font-size:var(--text-caption2);font-weight:var(--weight-semibold);color:var(--accent)">Dark</span></button><button style="display:flex;flex-direction:column;align-items:center;gap:var(--space-1);padding:var(--space-3) var(--space-2);border-radius:var(--radius-md);background:var(--fill-quaternary);border:2px solid var(--separator);cursor:pointer;transition:all 150ms var(--ease-smooth)"><span style="font-size:24px">🪟</span><span style="font-size:var(--text-caption2);font-weight:var(--weight-medium);color:var(--text-secondary)">Glass</span></button><button style="display:flex;flex-direction:column;align-items:center;gap:var(--space-1);padding:var(--space-3) var(--space-2);border-radius:var(--radius-md);background:var(--fill-quaternary);border:2px solid var(--separator);cursor:pointer;transition:all 150ms var(--ease-smooth)"><span style="font-size:24px">🎨</span><span style="font-size:var(--text-caption2);font-weight:var(--weight-medium);color:var(--text-secondary)">Color</span></button><button style="display:flex;flex-direction:column;align-items:center;gap:var(--space-1);padding:var(--space-3) var(--space-2);border-radius:var(--radius-md);background:var(--fill-quaternary);border:2px solid var(--separator);cursor:pointer;transition:all 150ms var(--ease-smooth)"><span style="font-size:24px">☀️</span><span style="font-size:var(--text-caption2);font-weight:var(--weight-medium);color:var(--text-secondary)">Light</span></button><button style="display:flex;flex-direction:column;align-items:center;gap:var(--space-1);padding:var(--space-3) var(--space-2);border-radius:var(--radius-md);background:var(--fill-quaternary);border:2px solid var(--separator);cursor:pointer;transition:all 150ms var(--ease-smooth)"><span style="font-size:24px">⚙️</span><span style="font-size:var(--text-caption2);font-weight:var(--weight-medium);color:var(--text-secondary)">System</span></button></div><div style="font-size:var(--text-footnote);font-weight:var(--weight-medium);color:var(--text-secondary);margin-bottom:var(--space-2)">Accent Color</div><div style="display:flex;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-3)"><button aria-label="Red" title="Red" style="width:32px;height:32px;border-radius:50%;background:#EF4444;border:2px solid transparent;outline:none;outline-offset:2px;cursor:pointer;transition:all 100ms var(--ease-smooth);display:flex;align-items:center;justify-content:center"></button><button aria-label="Orange" title="Orange" style="width:32px;height:32px;border-radius:50%;background:#F97316;border:2px solid transparent;outline:none;outline-offset:2px;cursor:pointer;transition:all 100ms var(--ease-smooth);display:flex;align-items:center;justify-content:center"></button><button aria-label="Amber" title="Amber" style="width:32px;height:32px;border-radius:50%;background:#F59E0B;border:2px solid transparent;outline:none;outline-offset:2px;cursor:pointer;transition:all 100ms var(--ease-smooth);display:flex;align-items:center;justify-content:center"></button><button aria-label="Yellow" title="Yellow" style="width:32px;height:32px;border-radius:50%;background:#EAB308;border:2px solid transparent;outline:none;outline-offset:2px;cursor:pointer;transition:all 100ms var(--ease-smooth);display:flex;align-items:center;justify-content:center"></button><button aria-label="Lime" title="Lime" style="width:32px;height:32px;border-radius:50%;background:#84CC16;border:2px solid transparent;outline:none;outline-offset:2px;cursor:pointer;transition:all 100ms var(--ease-smooth);display:flex;align-items:center;justify-content:center"></button><button aria-label="Green" title="Green" style="width:32px;height:32px;border-radius:50%;background:#22C55E;border:2px solid transparent;outline:none;outline-offset:2px;cursor:pointer;transition:all 100ms var(--ease-smooth);display:flex;align-items:center;justify-content:center"></button><button aria-label="Emerald" title="Emerald" style="width:32px;height:32px;border-radius:50%;background:#10B981;border:2px solid transparent;outline:none;outline-offset:2px;cursor:pointer;transition:all 100ms var(--ease-smooth);display:flex;align-items:center;justify-content:center"></button><button aria-label="Cyan" title="Cyan" style="width:32px;height:32px;border-radius:50%;background:#06B6D4;border:2px solid transparent;outline:none;outline-offset:2px;cursor:pointer;transition:all 100ms var(--ease-smooth);display:flex;align-items:center;justify-content:center"></button><button aria-label="Blue" title="Blue" style="width:32px;height:32px;border-radius:50%;background:#3B82F6;border:2px solid transparent;outline:none;outline-offset:2px;cursor:pointer;transition:all 100ms var(--ease-smooth);display:flex;align-items:center;justify-content:center"></button><button aria-label="Indigo" title="Indigo" style="width:32px;height:32px;border-radius:50%;background:#6366F1;border:2px solid transparent;outline:none;outline-offset:2px;cursor:pointer;transition:all 100ms var(--ease-smooth);display:flex;align-items:center;justify-content:center"></button><button aria-label="Violet" title="Violet" style="width:32px;height:32px;border-radius:50%;background:#8B5CF6;border:2px solid transparent;outline:none;outline-offset:2px;cursor:pointer;transition:all 100ms var(--ease-smooth);display:flex;align-items:center;justify-content:center"></button><button aria-label="Pink" title="Pink" style="width:32px;height:32px;border-radius:50%;background:#EC4899;border:2px solid transparent;outline:none;outline-offset:2px;cursor:pointer;transition:all 100ms var(--ease-smooth);display:flex;align-items:center;justify-content:center"></button></div><div style="display:flex;align-items:center;gap:var(--space-3)"><label style="display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-footnote);color:var(--text-secondary);cursor:pointer">Custom:<input type="color" style="width:28px;height:28px;border:none;border-radius:50%;cursor:pointer;background:none;padding:0" value="#3B82F6"/></label><input type="text" placeholder="#3B82F6" class="apple-input" style="width:90px;padding:4px 8px;font-size:var(--text-caption1);background:var(--bg-secondary);border:1px solid var(--separator);border-radius:var(--radius-sm);color:var(--text-primary);font-family:monospace" value=""/></div></div></section><section style="margin-bottom:var(--space-6)"><div style="font-size:var(--text-caption1);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--text-tertiary);padding:0 var(--space-2) var(--space-2)">Branding</div><div style="background:var(--material-regular);border-radius:var(--radius-md);border:1px solid var(--separator);padding:var(--space-4)"><div style="display:flex;flex-direction:column;gap:var(--space-3)"><div><label style="display:block;font-size:var(--text-caption1);color:var(--text-tertiary);margin-bottom:var(--space-1)">Portal Name</label><input type="text" class="apple-input" placeholder="Jinn" style="width:100%;background:var(--bg-secondary);border:1px solid var(--separator);border-radius:var(--radius-sm);padding:6px 10px;font-size:var(--text-footnote);color:var(--text-primary)" value=""/></div><div><label style="display:block;font-size:var(--text-caption1);color:var(--text-tertiary);margin-bottom:var(--space-1)">Portal Subtitle</label><input type="text" class="apple-input" placeholder="Command Centre" style="width:100%;background:var(--bg-secondary);border:1px solid var(--separator);border-radius:var(--radius-sm);padding:6px 10px;font-size:var(--text-footnote);color:var(--text-primary)" value=""/></div><div><label style="display:block;font-size:var(--text-caption1);color:var(--text-tertiary);margin-bottom:var(--space-1)">Operator Name</label><input type="text" class="apple-input" placeholder="Your Name" style="width:100%;background:var(--bg-secondary);border:1px solid var(--separator);border-radius:var(--radius-sm);padding:6px 10px;font-size:var(--text-footnote);color:var(--text-primary)" value=""/></div><div><label style="display:block;font-size:var(--text-caption1);color:var(--text-tertiary);margin-bottom:var(--space-1)">Portal Emoji</label><input type="text" class="apple-input" placeholder="🤖" style="width:80px;text-align:center;font-size:var(--text-title2);padding:6px 8px;background:var(--bg-secondary);border:1px solid var(--separator);border-radius:var(--radius-sm)" value=""/></div><div><label style="display:block;font-size:var(--text-caption1);color:var(--text-tertiary);margin-bottom:var(--space-1)">Language</label><select style="width:100%;background:var(--bg-secondary);border:1px solid var(--separator);border-radius:var(--radius-sm);padding:6px 10px;font-size:var(--text-footnote);color:var(--text-primary);cursor:pointer"><option value="English" selected="">English</option><option value="Spanish">Spanish</option><option value="French">French</option><option value="German">German</option><option value="Portuguese">Portuguese</option><option value="Italian">Italian</option><option value="Dutch">Dutch</option><option value="Russian">Russian</option><option value="Chinese">Chinese</option><option value="Japanese">Japanese</option><option value="Korean">Korean</option><option value="Arabic">Arabic</option><option value="Hindi">Hindi</option><option value="Bulgarian">Bulgarian</option></select></div></div></div></section><div style="text-align:center;padding:var(--space-8);color:var(--text-tertiary);font-size:var(--text-footnote)"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-loader-circle" aria-hidden="true" style="animation:spin 1s linear infinite;margin:0 auto var(--space-2)"><path d="M21 12a9 9 0 1 1-6.219-8.56"></path></svg>Loading gateway config...</div><section style="margin-bottom:var(--space-6)"><div style="font-size:var(--text-caption1);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--text-tertiary);padding:0 var(--space-2) var(--space-2)">Reset</div><div style="background:var(--material-regular);border-radius:var(--radius-md);border:1px solid var(--separator);padding:var(--space-4)"><div style="display:flex;align-items:center;justify-content:center;gap:var(--space-3);flex-wrap:wrap"><button style="padding:var(--space-2) var(--space-5);border-radius:var(--radius-md);background:var(--accent);color:var(--accent-contrast);border:none;cursor:pointer;font-size:var(--text-footnote);font-weight:var(--weight-semibold);transition:all 150ms var(--ease-spring);display:inline-flex;align-items:center;gap:var(--space-2)"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-rotate-ccw" aria-hidden="true"><path d="M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8"></path><path d="M3 3v5h5"></path></svg>Re-run Onboarding Wizard</button><button style="padding:var(--space-2) var(--space-5);border-radius:var(--radius-md);background:var(--system-red);color:#fff;border:none;cursor:pointer;font-size:var(--text-footnote);font-weight:var(--weight-semibold);transition:all 150ms var(--ease-spring);display:inline-flex;align-items:center;gap:var(--space-2)"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-trash2 lucide-trash-2" aria-hidden="true"><path d="M10 11v6"></path><path d="M14 11v6"></path><path d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6"></path><path d="M3 6h18"></path><path d="M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"></path></svg>Reset All Settings</button></div></div></section></div></div></main></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-0f39b7e91dce9791.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[1150,[\"177\",\"static/chunks/app/layout-fd975d16033dab25.js\"],\"ClientProviders\"]\n3:I[8954,[],\"\"]\n4:I[5640,[],\"\"]\n5:I[3339,[],\"ClientPageRoot\"]\n6:I[7774,[\"704\",\"static/chunks/704-ca24be493a922639.js\",\"73\",\"static/chunks/73-2d6e730cea0fe6c8.js\",\"662\",\"static/chunks/app/settings/page-34c9276e2a012445.js\"],\"default\"]\n9:I[2051,[],\"OutletBoundary\"]\nb:I[6658,[],\"AsyncMetadataOutlet\"]\nd:I[2051,[],\"ViewportBoundary\"]\nf:I[2051,[],\"MetadataBoundary\"]\n10:\"$Sreact.suspense\"\n12:I[7698,[],\"\"]\n:HL[\"/_next/static/css/24da9dfc818cea32.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"Zn588p2VvgjCSLr44R__1\",\"p\":\"\",\"c\":[\"\",\"settings\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"settings\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/24da9dfc818cea32.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"data-theme\":\"dark\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"children\":[\"$\",\"$L2\",null,{\"children\":[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]}]]}],{\"children\":[\"settings\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L5\",null,{\"Component\":\"$6\",\"searchParams\":{},\"params\":{},\"promises\":[\"$@7\",\"$@8\"]}],null,[\"$\",\"$L9\",null,{\"children\":[\"$La\",[\"$\",\"$Lb\",null,{\"promise\":\"$@c\"}]]}]]}],{},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[[\"$\",\"$Ld\",null,{\"children\":\"$Le\"}],null],[\"$\",\"$Lf\",null,{\"children\":[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$10\",null,{\"fallback\":null,\"children\":\"$L11\"}]}]}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$12\",[]],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"7:{}\n8:\"$0:f:0:1:2:children:2:children:1:props:children:0:props:params\"\n"])</script><script>self.__next_f.push([1,"e:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no\"}]]\na:null\n"])</script><script>self.__next_f.push([1,"c:{\"metadata\":[[\"$\",\"meta\",\"0\",{\"name\":\"description\",\"content\":\"AI Gateway Dashboard\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"11:\"$c:metadata\"\n"])</script></body></html>
|
package/dist/web/settings.txt
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
1:"$Sreact.fragment"
|
|
2
|
-
2:I[1150,["177","static/chunks/app/layout-
|
|
2
|
+
2:I[1150,["177","static/chunks/app/layout-fd975d16033dab25.js"],"ClientProviders"]
|
|
3
3
|
3:I[8954,[],""]
|
|
4
4
|
4:I[5640,[],""]
|
|
5
5
|
5:I[3339,[],"ClientPageRoot"]
|
|
6
|
-
6:I[7774,["704","static/chunks/704-
|
|
6
|
+
6:I[7774,["704","static/chunks/704-ca24be493a922639.js","73","static/chunks/73-2d6e730cea0fe6c8.js","662","static/chunks/app/settings/page-34c9276e2a012445.js"],"default"]
|
|
7
7
|
9:I[2051,[],"OutletBoundary"]
|
|
8
8
|
b:I[6658,[],"AsyncMetadataOutlet"]
|
|
9
9
|
d:I[2051,[],"ViewportBoundary"]
|
|
10
10
|
f:I[2051,[],"MetadataBoundary"]
|
|
11
11
|
10:"$Sreact.suspense"
|
|
12
12
|
12:I[7698,[],""]
|
|
13
|
-
:HL["/_next/static/css/
|
|
14
|
-
0:{"P":null,"b":"
|
|
13
|
+
:HL["/_next/static/css/24da9dfc818cea32.css","style"]
|
|
14
|
+
0:{"P":null,"b":"Zn588p2VvgjCSLr44R__1","p":"","c":["","settings"],"i":false,"f":[[["",{"children":["settings",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/24da9dfc818cea32.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","data-theme":"dark","suppressHydrationWarning":true,"children":["$","body",null,{"children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["settings",["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","searchParams":{},"params":{},"promises":["$@7","$@8"]}],null,["$","$L9",null,{"children":["$La",["$","$Lb",null,{"promise":"$@c"}]]}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,[["$","$Ld",null,{"children":"$Le"}],null],["$","$Lf",null,{"children":["$","div",null,{"hidden":true,"children":["$","$10",null,{"fallback":null,"children":"$L11"}]}]}]]}],false]],"m":"$undefined","G":["$12",[]],"s":false,"S":true}
|
|
15
15
|
7:{}
|
|
16
16
|
8:"$0:f:0:1:2:children:2:children:1:props:children:0:props:params"
|
|
17
|
-
e:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
|
|
17
|
+
e:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"}]]
|
|
18
18
|
a:null
|
|
19
19
|
c:{"metadata":[["$","meta","0",{"name":"description","content":"AI Gateway Dashboard"}]],"error":null,"digest":"$undefined"}
|
|
20
20
|
11:"$c:metadata"
|
package/dist/web/skills.html
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><!--jt8R5JvUgfB9CMfFwWFr0--><html lang="en" data-theme="dark"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/4a6a5bca9238c104.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-0f39b7e91dce9791.js"/><script src="/_next/static/chunks/8e6518bb-c26e82767f1faf66.js" async=""></script><script src="/_next/static/chunks/743-5bb03adbb0e4ddec.js" async=""></script><script src="/_next/static/chunks/main-app-437f51faf74fbb3b.js" async=""></script><script src="/_next/static/chunks/app/layout-5129b67d5f126cf0.js" async=""></script><script src="/_next/static/chunks/704-af2893821e1d18dc.js" async=""></script><script src="/_next/static/chunks/590-2c34156c7417317e.js" async=""></script><script src="/_next/static/chunks/198-fd91406a158c5c25.js" async=""></script><script src="/_next/static/chunks/573-070537ec2452d03e.js" async=""></script><script src="/_next/static/chunks/73-c226535579393e21.js" async=""></script><script src="/_next/static/chunks/app/skills/page-df9465e314561bb5.js" async=""></script><meta name="description" content="AI Gateway Dashboard"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div class="flex h-screen overflow-hidden" style="background:var(--bg)"><aside style="position:fixed;left:0;top:0;bottom:0;width:56px;background:var(--bg-secondary);border-right:1px solid var(--separator);flex-direction:column;z-index:50;transition:width 200ms var(--ease-smooth);overflow:hidden" class="hidden lg:flex"><div style="display:flex;align-items:center;gap:10px;padding:16px 14px 12px;min-height:56px;flex-shrink:0"><span style="font-size:24px;line-height:1;flex-shrink:0;width:28px;text-align:center">🤖</span><span style="font-size:17px;font-weight:600;color:var(--text-primary);white-space:nowrap;opacity:0;transition:opacity 200ms var(--ease-smooth)">Jinn</span></div><nav style="flex:1;display:flex;flex-direction:column;gap:2px;padding:0 8px"><a class="nav-item" aria-label="Home" style="display:flex;align-items:center;gap:10px;height:40px;padding:0 12px;text-decoration:none;color:var(--text-secondary);background:transparent;font-weight:400;font-size:13px;white-space:nowrap" href="/"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-house" aria-hidden="true" style="flex-shrink:0;color:var(--text-secondary)"><path d="M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8"></path><path d="M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"></path></svg><span style="opacity:0;transition:opacity 200ms var(--ease-smooth)">Home</span></a><a class="nav-item" aria-label="Chat" style="display:flex;align-items:center;gap:10px;height:40px;padding:0 12px;text-decoration:none;color:var(--text-secondary);background:transparent;font-weight:400;font-size:13px;white-space:nowrap" href="/chat"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-message-square" aria-hidden="true" style="flex-shrink:0;color:var(--text-secondary)"><path d="M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z"></path></svg><span style="opacity:0;transition:opacity 200ms var(--ease-smooth)">Chat</span></a><a class="nav-item" aria-label="Sessions" style="display:flex;align-items:center;gap:10px;height:40px;padding:0 12px;text-decoration:none;color:var(--text-secondary);background:transparent;font-weight:400;font-size:13px;white-space:nowrap" href="/sessions"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-layers" aria-hidden="true" style="flex-shrink:0;color:var(--text-secondary)"><path d="M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z"></path><path d="M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12"></path><path d="M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17"></path></svg><span style="opacity:0;transition:opacity 200ms var(--ease-smooth)">Sessions</span></a><a class="nav-item" aria-label="Organization" style="display:flex;align-items:center;gap:10px;height:40px;padding:0 12px;text-decoration:none;color:var(--text-secondary);background:transparent;font-weight:400;font-size:13px;white-space:nowrap" href="/org"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-users" aria-hidden="true" style="flex-shrink:0;color:var(--text-secondary)"><path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"></path><path d="M16 3.128a4 4 0 0 1 0 7.744"></path><path d="M22 21v-2a4 4 0 0 0-3-3.87"></path><circle cx="9" cy="7" r="4"></circle></svg><span style="opacity:0;transition:opacity 200ms var(--ease-smooth)">Organization</span></a><a class="nav-item" aria-label="Kanban" style="display:flex;align-items:center;gap:10px;height:40px;padding:0 12px;text-decoration:none;color:var(--text-secondary);background:transparent;font-weight:400;font-size:13px;white-space:nowrap" href="/kanban"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-layout-grid" aria-hidden="true" style="flex-shrink:0;color:var(--text-secondary)"><rect width="7" height="7" x="3" y="3" rx="1"></rect><rect width="7" height="7" x="14" y="3" rx="1"></rect><rect width="7" height="7" x="14" y="14" rx="1"></rect><rect width="7" height="7" x="3" y="14" rx="1"></rect></svg><span style="opacity:0;transition:opacity 200ms var(--ease-smooth)">Kanban</span></a><a class="nav-item" aria-label="Cron" style="display:flex;align-items:center;gap:10px;height:40px;padding:0 12px;text-decoration:none;color:var(--text-secondary);background:transparent;font-weight:400;font-size:13px;white-space:nowrap" href="/cron"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clock" aria-hidden="true" style="flex-shrink:0;color:var(--text-secondary)"><circle cx="12" cy="12" r="10"></circle><path d="M12 6v6l4 2"></path></svg><span style="opacity:0;transition:opacity 200ms var(--ease-smooth)">Cron</span></a><a class="nav-item" aria-label="Costs" style="display:flex;align-items:center;gap:10px;height:40px;padding:0 12px;text-decoration:none;color:var(--text-secondary);background:transparent;font-weight:400;font-size:13px;white-space:nowrap" href="/costs"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-dollar-sign" aria-hidden="true" style="flex-shrink:0;color:var(--text-secondary)"><line x1="12" x2="12" y1="2" y2="22"></line><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg><span style="opacity:0;transition:opacity 200ms var(--ease-smooth)">Costs</span></a><a class="nav-item" aria-label="Activity" style="display:flex;align-items:center;gap:10px;height:40px;padding:0 12px;text-decoration:none;color:var(--text-secondary);background:transparent;font-weight:400;font-size:13px;white-space:nowrap" href="/logs"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-activity" aria-hidden="true" style="flex-shrink:0;color:var(--text-secondary)"><path d="M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2"></path></svg><span style="opacity:0;transition:opacity 200ms var(--ease-smooth)">Activity</span></a><a class="nav-item" aria-label="Skills" aria-current="page" style="display:flex;align-items:center;gap:10px;height:40px;padding:0 12px;text-decoration:none;color:var(--accent);background:var(--accent-fill);font-weight:600;font-size:13px;white-space:nowrap" href="/skills"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-zap" aria-hidden="true" style="flex-shrink:0;color:var(--accent)"><path d="M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z"></path></svg><span style="opacity:0;transition:opacity 200ms var(--ease-smooth)">Skills</span></a><a class="nav-item" aria-label="Settings" style="display:flex;align-items:center;gap:10px;height:40px;padding:0 12px;text-decoration:none;color:var(--text-secondary);background:transparent;font-weight:400;font-size:13px;white-space:nowrap" href="/settings"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-settings" aria-hidden="true" style="flex-shrink:0;color:var(--text-secondary)"><path d="M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915"></path><circle cx="12" cy="12" r="3"></circle></svg><span style="opacity:0;transition:opacity 200ms var(--ease-smooth)">Settings</span></a></nav><div style="padding:8px 8px 12px;flex-shrink:0"><button class="nav-item" aria-label="Theme: dark. Click to cycle." style="display:flex;align-items:center;gap:10px;height:40px;padding:0 12px;width:100%;border:none;background:transparent;color:var(--text-secondary);cursor:pointer;font-size:13px;white-space:nowrap"><span style="flex-shrink:0"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-moon" aria-hidden="true"><path d="M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401"></path></svg></span><span style="opacity:0;transition:opacity 200ms var(--ease-smooth);text-transform:capitalize">dark</span></button></div></aside><main class="flex-1 overflow-hidden lg:ml-[56px]"><div style="height:48px;display:flex;align-items:center;padding:0 12px;border-bottom:1px solid var(--separator);background:var(--material-thick);flex-shrink:0;position:relative;z-index:60" class="jsx-906cbf20b7aa1777 lg:hidden"><button aria-label="Open menu" style="width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;cursor:pointer;color:var(--text-primary)" class="jsx-906cbf20b7aa1777"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-menu" aria-hidden="true"><path d="M4 5h16"></path><path d="M4 12h16"></path><path d="M4 19h16"></path></svg></button><div style="flex:1;text-align:center" class="jsx-906cbf20b7aa1777"><span style="font-size:18px;margin-right:6px" class="jsx-906cbf20b7aa1777">🤖</span><span style="font-size:15px;font-weight:600;color:var(--text-primary)" class="jsx-906cbf20b7aa1777">Jinn</span></div><div style="width:36px" class="jsx-906cbf20b7aa1777"></div></div><div style="height:100%;overflow-y:auto;padding:var(--space-6)"><div style="display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-6)"><div><h2 style="font-size:var(--text-title2);font-weight:var(--weight-bold);color:var(--text-primary);margin-bottom:var(--space-1)">Skills</h2><p style="font-size:var(--text-body);color:var(--text-tertiary)">Capabilities and learned behaviors</p></div><button style="padding:var(--space-2) var(--space-4);border-radius:var(--radius-md, 12px);background:color-mix(in srgb, var(--accent) 12%, transparent);color:var(--accent);border:none;cursor:pointer;font-size:var(--text-body);font-weight:var(--weight-medium)">+ Create Skill</button></div><div style="text-align:center;padding:var(--space-8);color:var(--text-tertiary);font-size:var(--text-body)">Loading...</div></div></main></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-0f39b7e91dce9791.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[1150,[\"177\",\"static/chunks/app/layout-5129b67d5f126cf0.js\"],\"ClientProviders\"]\n3:I[8954,[],\"\"]\n4:I[5640,[],\"\"]\n5:I[3339,[],\"ClientPageRoot\"]\n6:I[3209,[\"704\",\"static/chunks/704-af2893821e1d18dc.js\",\"590\",\"static/chunks/590-2c34156c7417317e.js\",\"198\",\"static/chunks/198-fd91406a158c5c25.js\",\"573\",\"static/chunks/573-070537ec2452d03e.js\",\"73\",\"static/chunks/73-c226535579393e21.js\",\"501\",\"static/chunks/app/skills/page-df9465e314561bb5.js\"],\"default\"]\n9:I[2051,[],\"OutletBoundary\"]\nb:I[6658,[],\"AsyncMetadataOutlet\"]\nd:I[2051,[],\"ViewportBoundary\"]\nf:I[2051,[],\"MetadataBoundary\"]\n10:\"$Sreact.suspense\"\n12:I[7698,[],\"\"]\n:HL[\"/_next/static/css/4a6a5bca9238c104.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"jt8R5JvUgfB9CMfFwWFr0\",\"p\":\"\",\"c\":[\"\",\"skills\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"skills\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/4a6a5bca9238c104.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"data-theme\":\"dark\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"children\":[\"$\",\"$L2\",null,{\"children\":[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]}]]}],{\"children\":[\"skills\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L5\",null,{\"Component\":\"$6\",\"searchParams\":{},\"params\":{},\"promises\":[\"$@7\",\"$@8\"]}],null,[\"$\",\"$L9\",null,{\"children\":[\"$La\",[\"$\",\"$Lb\",null,{\"promise\":\"$@c\"}]]}]]}],{},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[[\"$\",\"$Ld\",null,{\"children\":\"$Le\"}],null],[\"$\",\"$Lf\",null,{\"children\":[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$10\",null,{\"fallback\":null,\"children\":\"$L11\"}]}]}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$12\",[]],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"7:{}\n8:\"$0:f:0:1:2:children:2:children:1:props:children:0:props:params\"\n"])</script><script>self.__next_f.push([1,"e:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\na:null\n"])</script><script>self.__next_f.push([1,"c:{\"metadata\":[[\"$\",\"meta\",\"0\",{\"name\":\"description\",\"content\":\"AI Gateway Dashboard\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"11:\"$c:metadata\"\n"])</script></body></html>
|
|
1
|
+
<!DOCTYPE html><!--Zn588p2VvgjCSLr44R__1--><html lang="en" data-theme="dark"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"/><link rel="stylesheet" href="/_next/static/css/24da9dfc818cea32.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-0f39b7e91dce9791.js"/><script src="/_next/static/chunks/8e6518bb-c26e82767f1faf66.js" async=""></script><script src="/_next/static/chunks/743-5bb03adbb0e4ddec.js" async=""></script><script src="/_next/static/chunks/main-app-0c65af8a0fd99888.js" async=""></script><script src="/_next/static/chunks/app/layout-fd975d16033dab25.js" async=""></script><script src="/_next/static/chunks/704-ca24be493a922639.js" async=""></script><script src="/_next/static/chunks/590-2c34156c7417317e.js" async=""></script><script src="/_next/static/chunks/198-3e82ded4f04a0aae.js" async=""></script><script src="/_next/static/chunks/573-070537ec2452d03e.js" async=""></script><script src="/_next/static/chunks/73-2d6e730cea0fe6c8.js" async=""></script><script src="/_next/static/chunks/app/skills/page-18cf3b7bb9a7339c.js" async=""></script><meta name="description" content="AI Gateway Dashboard"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div class="flex h-dvh overflow-hidden" style="background:var(--bg)"><aside style="position:fixed;left:0;top:0;bottom:0;width:56px;background:var(--bg-secondary);border-right:1px solid var(--separator);flex-direction:column;z-index:50;transition:width 200ms var(--ease-smooth);overflow:hidden" class="hidden lg:flex"><div style="display:flex;align-items:center;gap:10px;padding:16px 14px 12px;min-height:56px;flex-shrink:0"><span style="font-size:24px;line-height:1;flex-shrink:0;width:28px;text-align:center">🤖</span><span style="font-size:17px;font-weight:600;color:var(--text-primary);white-space:nowrap;opacity:0;transition:opacity 200ms var(--ease-smooth)">Jinn</span></div><nav style="flex:1;display:flex;flex-direction:column;gap:2px;padding:0 8px"><a class="nav-item" aria-label="Home" style="display:flex;align-items:center;gap:10px;height:40px;padding:0 12px;text-decoration:none;color:var(--text-secondary);background:transparent;font-weight:400;font-size:13px;white-space:nowrap" href="/"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-house" aria-hidden="true" style="flex-shrink:0;color:var(--text-secondary)"><path d="M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8"></path><path d="M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"></path></svg><span style="opacity:0;transition:opacity 200ms var(--ease-smooth)">Home</span></a><a class="nav-item" aria-label="Chat" style="display:flex;align-items:center;gap:10px;height:40px;padding:0 12px;text-decoration:none;color:var(--text-secondary);background:transparent;font-weight:400;font-size:13px;white-space:nowrap" href="/chat"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-message-square" aria-hidden="true" style="flex-shrink:0;color:var(--text-secondary)"><path d="M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z"></path></svg><span style="opacity:0;transition:opacity 200ms var(--ease-smooth)">Chat</span></a><a class="nav-item" aria-label="Sessions" style="display:flex;align-items:center;gap:10px;height:40px;padding:0 12px;text-decoration:none;color:var(--text-secondary);background:transparent;font-weight:400;font-size:13px;white-space:nowrap" href="/sessions"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-layers" aria-hidden="true" style="flex-shrink:0;color:var(--text-secondary)"><path d="M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z"></path><path d="M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12"></path><path d="M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17"></path></svg><span style="opacity:0;transition:opacity 200ms var(--ease-smooth)">Sessions</span></a><a class="nav-item" aria-label="Organization" style="display:flex;align-items:center;gap:10px;height:40px;padding:0 12px;text-decoration:none;color:var(--text-secondary);background:transparent;font-weight:400;font-size:13px;white-space:nowrap" href="/org"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-users" aria-hidden="true" style="flex-shrink:0;color:var(--text-secondary)"><path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"></path><path d="M16 3.128a4 4 0 0 1 0 7.744"></path><path d="M22 21v-2a4 4 0 0 0-3-3.87"></path><circle cx="9" cy="7" r="4"></circle></svg><span style="opacity:0;transition:opacity 200ms var(--ease-smooth)">Organization</span></a><a class="nav-item" aria-label="Kanban" style="display:flex;align-items:center;gap:10px;height:40px;padding:0 12px;text-decoration:none;color:var(--text-secondary);background:transparent;font-weight:400;font-size:13px;white-space:nowrap" href="/kanban"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-layout-grid" aria-hidden="true" style="flex-shrink:0;color:var(--text-secondary)"><rect width="7" height="7" x="3" y="3" rx="1"></rect><rect width="7" height="7" x="14" y="3" rx="1"></rect><rect width="7" height="7" x="14" y="14" rx="1"></rect><rect width="7" height="7" x="3" y="14" rx="1"></rect></svg><span style="opacity:0;transition:opacity 200ms var(--ease-smooth)">Kanban</span></a><a class="nav-item" aria-label="Cron" style="display:flex;align-items:center;gap:10px;height:40px;padding:0 12px;text-decoration:none;color:var(--text-secondary);background:transparent;font-weight:400;font-size:13px;white-space:nowrap" href="/cron"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clock" aria-hidden="true" style="flex-shrink:0;color:var(--text-secondary)"><circle cx="12" cy="12" r="10"></circle><path d="M12 6v6l4 2"></path></svg><span style="opacity:0;transition:opacity 200ms var(--ease-smooth)">Cron</span></a><a class="nav-item" aria-label="Costs" style="display:flex;align-items:center;gap:10px;height:40px;padding:0 12px;text-decoration:none;color:var(--text-secondary);background:transparent;font-weight:400;font-size:13px;white-space:nowrap" href="/costs"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-dollar-sign" aria-hidden="true" style="flex-shrink:0;color:var(--text-secondary)"><line x1="12" x2="12" y1="2" y2="22"></line><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg><span style="opacity:0;transition:opacity 200ms var(--ease-smooth)">Costs</span></a><a class="nav-item" aria-label="Activity" style="display:flex;align-items:center;gap:10px;height:40px;padding:0 12px;text-decoration:none;color:var(--text-secondary);background:transparent;font-weight:400;font-size:13px;white-space:nowrap" href="/logs"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-activity" aria-hidden="true" style="flex-shrink:0;color:var(--text-secondary)"><path d="M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2"></path></svg><span style="opacity:0;transition:opacity 200ms var(--ease-smooth)">Activity</span></a><a class="nav-item" aria-label="Skills" aria-current="page" style="display:flex;align-items:center;gap:10px;height:40px;padding:0 12px;text-decoration:none;color:var(--accent);background:var(--accent-fill);font-weight:600;font-size:13px;white-space:nowrap" href="/skills"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-zap" aria-hidden="true" style="flex-shrink:0;color:var(--accent)"><path d="M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z"></path></svg><span style="opacity:0;transition:opacity 200ms var(--ease-smooth)">Skills</span></a><a class="nav-item" aria-label="Settings" style="display:flex;align-items:center;gap:10px;height:40px;padding:0 12px;text-decoration:none;color:var(--text-secondary);background:transparent;font-weight:400;font-size:13px;white-space:nowrap" href="/settings"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-settings" aria-hidden="true" style="flex-shrink:0;color:var(--text-secondary)"><path d="M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915"></path><circle cx="12" cy="12" r="3"></circle></svg><span style="opacity:0;transition:opacity 200ms var(--ease-smooth)">Settings</span></a></nav><div style="padding:8px 8px 12px;flex-shrink:0"><button class="nav-item" aria-label="Theme: dark. Click to cycle." style="display:flex;align-items:center;gap:10px;height:40px;padding:0 12px;width:100%;border:none;background:transparent;color:var(--text-secondary);cursor:pointer;font-size:13px;white-space:nowrap"><span style="flex-shrink:0"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-moon" aria-hidden="true"><path d="M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401"></path></svg></span><span style="opacity:0;transition:opacity 200ms var(--ease-smooth);text-transform:capitalize">dark</span></button></div></aside><main class="flex-1 overflow-hidden lg:ml-[56px]"><div style="height:48px;display:flex;align-items:center;padding:0 12px;border-bottom:1px solid var(--separator);background:var(--material-thick);flex-shrink:0;position:relative;z-index:60" class="jsx-906cbf20b7aa1777 lg:hidden"><button aria-label="Open menu" style="width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;cursor:pointer;color:var(--text-primary)" class="jsx-906cbf20b7aa1777"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-menu" aria-hidden="true"><path d="M4 5h16"></path><path d="M4 12h16"></path><path d="M4 19h16"></path></svg></button><div style="flex:1;text-align:center" class="jsx-906cbf20b7aa1777"><span style="font-size:18px;margin-right:6px" class="jsx-906cbf20b7aa1777">🤖</span><span style="font-size:15px;font-weight:600;color:var(--text-primary)" class="jsx-906cbf20b7aa1777">Jinn</span></div><div style="width:36px" class="jsx-906cbf20b7aa1777"></div></div><div style="height:100%;overflow-y:auto;padding:var(--space-6)"><div style="display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-6)"><div><h2 style="font-size:var(--text-title2);font-weight:var(--weight-bold);color:var(--text-primary);margin-bottom:var(--space-1)">Skills</h2><p style="font-size:var(--text-body);color:var(--text-tertiary)">Capabilities and learned behaviors</p></div><button style="padding:var(--space-2) var(--space-4);border-radius:var(--radius-md, 12px);background:color-mix(in srgb, var(--accent) 12%, transparent);color:var(--accent);border:none;cursor:pointer;font-size:var(--text-body);font-weight:var(--weight-medium)">+ Create Skill</button></div><div style="text-align:center;padding:var(--space-8);color:var(--text-tertiary);font-size:var(--text-body)">Loading...</div></div></main></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-0f39b7e91dce9791.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[1150,[\"177\",\"static/chunks/app/layout-fd975d16033dab25.js\"],\"ClientProviders\"]\n3:I[8954,[],\"\"]\n4:I[5640,[],\"\"]\n5:I[3339,[],\"ClientPageRoot\"]\n6:I[3209,[\"704\",\"static/chunks/704-ca24be493a922639.js\",\"590\",\"static/chunks/590-2c34156c7417317e.js\",\"198\",\"static/chunks/198-3e82ded4f04a0aae.js\",\"573\",\"static/chunks/573-070537ec2452d03e.js\",\"73\",\"static/chunks/73-2d6e730cea0fe6c8.js\",\"501\",\"static/chunks/app/skills/page-18cf3b7bb9a7339c.js\"],\"default\"]\n9:I[2051,[],\"OutletBoundary\"]\nb:I[6658,[],\"AsyncMetadataOutlet\"]\nd:I[2051,[],\"ViewportBoundary\"]\nf:I[2051,[],\"MetadataBoundary\"]\n10:\"$Sreact.suspense\"\n12:I[7698,[],\"\"]\n:HL[\"/_next/static/css/24da9dfc818cea32.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"Zn588p2VvgjCSLr44R__1\",\"p\":\"\",\"c\":[\"\",\"skills\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"skills\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/24da9dfc818cea32.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"data-theme\":\"dark\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"children\":[\"$\",\"$L2\",null,{\"children\":[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]}]]}],{\"children\":[\"skills\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L5\",null,{\"Component\":\"$6\",\"searchParams\":{},\"params\":{},\"promises\":[\"$@7\",\"$@8\"]}],null,[\"$\",\"$L9\",null,{\"children\":[\"$La\",[\"$\",\"$Lb\",null,{\"promise\":\"$@c\"}]]}]]}],{},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[[\"$\",\"$Ld\",null,{\"children\":\"$Le\"}],null],[\"$\",\"$Lf\",null,{\"children\":[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$10\",null,{\"fallback\":null,\"children\":\"$L11\"}]}]}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$12\",[]],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"7:{}\n8:\"$0:f:0:1:2:children:2:children:1:props:children:0:props:params\"\n"])</script><script>self.__next_f.push([1,"e:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no\"}]]\na:null\n"])</script><script>self.__next_f.push([1,"c:{\"metadata\":[[\"$\",\"meta\",\"0\",{\"name\":\"description\",\"content\":\"AI Gateway Dashboard\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"11:\"$c:metadata\"\n"])</script></body></html>
|
package/dist/web/skills.txt
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
1:"$Sreact.fragment"
|
|
2
|
-
2:I[1150,["177","static/chunks/app/layout-
|
|
2
|
+
2:I[1150,["177","static/chunks/app/layout-fd975d16033dab25.js"],"ClientProviders"]
|
|
3
3
|
3:I[8954,[],""]
|
|
4
4
|
4:I[5640,[],""]
|
|
5
5
|
5:I[3339,[],"ClientPageRoot"]
|
|
6
|
-
6:I[3209,["704","static/chunks/704-
|
|
6
|
+
6:I[3209,["704","static/chunks/704-ca24be493a922639.js","590","static/chunks/590-2c34156c7417317e.js","198","static/chunks/198-3e82ded4f04a0aae.js","573","static/chunks/573-070537ec2452d03e.js","73","static/chunks/73-2d6e730cea0fe6c8.js","501","static/chunks/app/skills/page-18cf3b7bb9a7339c.js"],"default"]
|
|
7
7
|
9:I[2051,[],"OutletBoundary"]
|
|
8
8
|
b:I[6658,[],"AsyncMetadataOutlet"]
|
|
9
9
|
d:I[2051,[],"ViewportBoundary"]
|
|
10
10
|
f:I[2051,[],"MetadataBoundary"]
|
|
11
11
|
10:"$Sreact.suspense"
|
|
12
12
|
12:I[7698,[],""]
|
|
13
|
-
:HL["/_next/static/css/
|
|
14
|
-
0:{"P":null,"b":"
|
|
13
|
+
:HL["/_next/static/css/24da9dfc818cea32.css","style"]
|
|
14
|
+
0:{"P":null,"b":"Zn588p2VvgjCSLr44R__1","p":"","c":["","skills"],"i":false,"f":[[["",{"children":["skills",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/24da9dfc818cea32.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","data-theme":"dark","suppressHydrationWarning":true,"children":["$","body",null,{"children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["skills",["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","searchParams":{},"params":{},"promises":["$@7","$@8"]}],null,["$","$L9",null,{"children":["$La",["$","$Lb",null,{"promise":"$@c"}]]}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,[["$","$Ld",null,{"children":"$Le"}],null],["$","$Lf",null,{"children":["$","div",null,{"hidden":true,"children":["$","$10",null,{"fallback":null,"children":"$L11"}]}]}]]}],false]],"m":"$undefined","G":["$12",[]],"s":false,"S":true}
|
|
15
15
|
7:{}
|
|
16
16
|
8:"$0:f:0:1:2:children:2:children:1:props:children:0:props:params"
|
|
17
|
-
e:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
|
|
17
|
+
e:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"}]]
|
|
18
18
|
a:null
|
|
19
19
|
c:{"metadata":[["$","meta","0",{"name":"description","content":"AI Gateway Dashboard"}]],"error":null,"digest":"$undefined"}
|
|
20
20
|
11:"$c:metadata"
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jinn-cli",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"description": "Lightweight AI gateway daemon orchestrating Claude Code and Codex",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -13,13 +13,6 @@
|
|
|
13
13
|
"dist/",
|
|
14
14
|
"template/"
|
|
15
15
|
],
|
|
16
|
-
"scripts": {
|
|
17
|
-
"build": "tsc && rm -rf dist/web && cp -r ../web/out dist/web 2>/dev/null || true",
|
|
18
|
-
"dev": "tsc --watch",
|
|
19
|
-
"typecheck": "tsc --noEmit",
|
|
20
|
-
"test": "pnpm run build && node --test dist/src",
|
|
21
|
-
"clean": "rm -rf dist"
|
|
22
|
-
},
|
|
23
16
|
"dependencies": {
|
|
24
17
|
"@slack/bolt": "^4.3.0",
|
|
25
18
|
"better-sqlite3": "^11.8.0",
|
|
@@ -39,5 +32,12 @@
|
|
|
39
32
|
"@types/uuid": "^10.0.0",
|
|
40
33
|
"@types/ws": "^8.5.0",
|
|
41
34
|
"typescript": "^5.8.0"
|
|
35
|
+
},
|
|
36
|
+
"scripts": {
|
|
37
|
+
"build": "tsc && rm -rf dist/web && cp -r ../web/out dist/web 2>/dev/null || true",
|
|
38
|
+
"dev": "tsc --watch",
|
|
39
|
+
"typecheck": "tsc --noEmit",
|
|
40
|
+
"test": "pnpm run build && node --test dist/src",
|
|
41
|
+
"clean": "rm -rf dist"
|
|
42
42
|
}
|
|
43
|
-
}
|
|
43
|
+
}
|
|
@@ -21,6 +21,38 @@ connectors:
|
|
|
21
21
|
shareSessionInChannel: false
|
|
22
22
|
ignoreOldMessagesOnBoot: true
|
|
23
23
|
|
|
24
|
+
# MCP servers provide employees with browser, search, and messaging capabilities.
|
|
25
|
+
# These are injected automatically into Claude Code sessions via --mcp-config.
|
|
26
|
+
mcp:
|
|
27
|
+
browser:
|
|
28
|
+
enabled: true
|
|
29
|
+
provider: playwright # or "puppeteer"
|
|
30
|
+
search:
|
|
31
|
+
enabled: false # Set to true and add apiKey or set BRAVE_API_KEY env var
|
|
32
|
+
provider: brave
|
|
33
|
+
# apiKey: ${BRAVE_API_KEY}
|
|
34
|
+
fetch:
|
|
35
|
+
enabled: true
|
|
36
|
+
gateway:
|
|
37
|
+
enabled: true # Built-in MCP server for messaging, org, cron, sessions
|
|
38
|
+
# custom:
|
|
39
|
+
# my-server:
|
|
40
|
+
# enabled: true
|
|
41
|
+
# command: npx
|
|
42
|
+
# args: ["-y", "@my/mcp-server"]
|
|
43
|
+
# env:
|
|
44
|
+
# API_KEY: ${MY_API_KEY}
|
|
45
|
+
|
|
46
|
+
# Session limits (can be overridden per-employee in their YAML)
|
|
47
|
+
sessions:
|
|
48
|
+
maxDurationMinutes: 30
|
|
49
|
+
maxCostUsd: 10.00
|
|
50
|
+
|
|
51
|
+
# Cron configuration
|
|
52
|
+
cron:
|
|
53
|
+
# alertConnector: slack
|
|
54
|
+
# alertChannel: "#alerts"
|
|
55
|
+
|
|
24
56
|
portal:
|
|
25
57
|
language: English
|
|
26
58
|
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
# MCP (Model Context Protocol) Integration
|
|
2
|
+
|
|
3
|
+
{{portalName}} automatically configures MCP servers for AI engine sessions, giving employees access to browser automation, web search, and gateway tools without manual setup.
|
|
4
|
+
|
|
5
|
+
## How It Works
|
|
6
|
+
|
|
7
|
+
1. MCP servers are defined in `config.yaml` under the `mcp:` section
|
|
8
|
+
2. When a session starts, {{portalName}} resolves which MCP servers the employee needs
|
|
9
|
+
3. A temporary MCP config JSON file is written to `~/.jinn/tmp/mcp/`
|
|
10
|
+
4. The file is passed to Claude Code via `--mcp-config <path>`
|
|
11
|
+
5. The file is cleaned up after the session completes
|
|
12
|
+
|
|
13
|
+
## Built-in MCP Servers
|
|
14
|
+
|
|
15
|
+
### Browser (Playwright)
|
|
16
|
+
Full browser automation — navigate, click, type, screenshot, extract content.
|
|
17
|
+
|
|
18
|
+
```yaml
|
|
19
|
+
mcp:
|
|
20
|
+
browser:
|
|
21
|
+
enabled: true
|
|
22
|
+
provider: playwright # or "puppeteer"
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
### Web Search (Brave)
|
|
26
|
+
Search the web and get structured results.
|
|
27
|
+
|
|
28
|
+
```yaml
|
|
29
|
+
mcp:
|
|
30
|
+
search:
|
|
31
|
+
enabled: true
|
|
32
|
+
provider: brave
|
|
33
|
+
apiKey: ${BRAVE_API_KEY} # reads from environment variable
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### Fetch
|
|
37
|
+
Extract readable content from URLs (HTML → markdown/text).
|
|
38
|
+
|
|
39
|
+
```yaml
|
|
40
|
+
mcp:
|
|
41
|
+
fetch:
|
|
42
|
+
enabled: true
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### Gateway
|
|
46
|
+
Built-in MCP server that wraps {{portalName}}'s own API. Gives employees tools to:
|
|
47
|
+
- Send messages via connectors (Slack, etc.)
|
|
48
|
+
- List and query sessions
|
|
49
|
+
- Manage cron jobs
|
|
50
|
+
- Query the org structure
|
|
51
|
+
- Update department boards
|
|
52
|
+
|
|
53
|
+
```yaml
|
|
54
|
+
mcp:
|
|
55
|
+
gateway:
|
|
56
|
+
enabled: true # enabled by default
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Custom MCP Servers
|
|
60
|
+
|
|
61
|
+
Add any MCP server via the `custom:` section:
|
|
62
|
+
|
|
63
|
+
```yaml
|
|
64
|
+
mcp:
|
|
65
|
+
custom:
|
|
66
|
+
my-database:
|
|
67
|
+
enabled: true
|
|
68
|
+
command: npx
|
|
69
|
+
args: ["-y", "@my/mcp-server-postgres"]
|
|
70
|
+
env:
|
|
71
|
+
DATABASE_URL: ${DATABASE_URL}
|
|
72
|
+
my-api:
|
|
73
|
+
command: node
|
|
74
|
+
args: ["/path/to/my-mcp-server.js"]
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## Per-Employee Overrides
|
|
78
|
+
|
|
79
|
+
Employees can opt out of MCP servers or request only specific ones:
|
|
80
|
+
|
|
81
|
+
```yaml
|
|
82
|
+
# In employee YAML (e.g. org/engineering/backend-dev.yaml)
|
|
83
|
+
name: backend-dev
|
|
84
|
+
mcp: false # No MCP servers at all
|
|
85
|
+
|
|
86
|
+
# Or specific servers only:
|
|
87
|
+
mcp:
|
|
88
|
+
- search
|
|
89
|
+
- gateway
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
By default, all globally enabled MCP servers are available to all employees.
|
|
93
|
+
|
|
94
|
+
## Environment Variables
|
|
95
|
+
|
|
96
|
+
API keys and secrets should use `${VAR_NAME}` syntax to reference environment variables:
|
|
97
|
+
|
|
98
|
+
```yaml
|
|
99
|
+
mcp:
|
|
100
|
+
search:
|
|
101
|
+
apiKey: ${BRAVE_API_KEY}
|
|
102
|
+
custom:
|
|
103
|
+
stripe:
|
|
104
|
+
env:
|
|
105
|
+
STRIPE_KEY: ${STRIPE_SECRET_KEY}
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
This keeps secrets out of config files.
|