@data-club/ai-hub 0.0.8 → 0.0.10
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/dist/auth/locales/cs.d.ts +1 -1
- package/dist/auth/locales/cs.d.ts.map +1 -1
- package/dist/auth/locales/cs.js +1 -16
- package/dist/auth/locales/cs.js.map +1 -1
- package/dist/auth/locales/sk.d.ts +1 -1
- package/dist/auth/locales/sk.d.ts.map +1 -1
- package/dist/auth/locales/sk.js +1 -16
- package/dist/auth/locales/sk.js.map +1 -1
- package/dist/auth/texts.d.ts +0 -26
- package/dist/auth/texts.d.ts.map +1 -1
- package/dist/auth/texts.js +0 -15
- package/dist/auth/texts.js.map +1 -1
- package/dist/client/AIHubClient.d.ts +2 -39
- package/dist/client/AIHubClient.d.ts.map +1 -1
- package/dist/client/AIHubClient.js +2 -13
- package/dist/client/AIHubClient.js.map +1 -1
- package/dist/components/ChatShell/ShellHeader.d.ts +4 -4
- package/dist/components/ChatShell/UserMenu.d.ts +4 -10
- package/dist/components/ChatShell/UserMenu.d.ts.map +1 -1
- package/dist/components/ChatShell/UserMenu.js +8 -15
- package/dist/components/ChatShell/UserMenu.js.map +1 -1
- package/dist/components/DataClubAIHubAdmin/AgentsPage.d.ts +1 -1
- package/dist/components/DataClubAIHubAdmin/AgentsPage.d.ts.map +1 -1
- package/dist/components/DataClubAIHubAdmin/AgentsPage.js +2 -11
- package/dist/components/DataClubAIHubAdmin/AgentsPage.js.map +1 -1
- package/dist/components/DataClubAIHubAdmin/SettingsPage.d.ts +7 -8
- package/dist/components/DataClubAIHubAdmin/SettingsPage.d.ts.map +1 -1
- package/dist/components/DataClubAIHubAdmin/SettingsPage.js +8 -87
- package/dist/components/DataClubAIHubAdmin/SettingsPage.js.map +1 -1
- package/dist/components/DataClubAIHubAdmin/index.d.ts +1 -1
- package/dist/components/DataClubAIHubAdmin/index.js +1 -1
- package/dist/components/MessageList/index.d.ts.map +1 -1
- package/dist/components/MessageList/index.js +1 -2
- package/dist/components/MessageList/index.js.map +1 -1
- package/dist/context/AIHubProvider.d.ts.map +1 -1
- package/dist/context/AIHubProvider.js +1 -31
- package/dist/context/AIHubProvider.js.map +1 -1
- package/dist/index.d.ts +1 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -1
- package/dist/index.js.map +1 -1
- package/dist/state/stateReducer.d.ts.map +1 -1
- package/dist/state/stateReducer.js +0 -1
- package/dist/state/stateReducer.js.map +1 -1
- package/dist/types.d.ts +1 -73
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -1
- package/src/auth/locales/cs.ts +1 -23
- package/src/auth/locales/sk.ts +1 -23
- package/src/auth/texts.ts +0 -49
- package/src/client/AIHubClient.ts +2 -42
- package/src/components/ChatShell/ShellHeader.tsx +4 -4
- package/src/components/ChatShell/UserMenu.tsx +7 -27
- package/src/components/DataClubAIHubAdmin/AgentsPage.tsx +1 -21
- package/src/components/DataClubAIHubAdmin/SettingsPage.tsx +8 -197
- package/src/components/DataClubAIHubAdmin/index.tsx +1 -1
- package/src/components/MessageList/index.tsx +0 -4
- package/src/context/AIHubProvider.tsx +1 -32
- package/src/index.ts +0 -8
- package/src/state/stateReducer.ts +0 -1
- package/src/styles/CLASSES.md +1 -1
- package/src/styles/default.css +0 -67
- package/src/types.ts +0 -75
- package/src/components/CacheBadge/index.tsx +0 -245
package/dist/types.d.ts
CHANGED
|
@@ -73,10 +73,6 @@ export interface AIHubUser {
|
|
|
73
73
|
* `user.theme_preference + deployment.{theme_default, theme_switcher_enabled}`
|
|
74
74
|
* per §7.6 (two lines in the React provider).
|
|
75
75
|
*
|
|
76
|
-
* `letta_ade_url` is included only when the caller's role is `power_user`
|
|
77
|
-
* or higher; for `user`-role callers the field is absent — by design
|
|
78
|
-
* (§6.3.4: the URL is an admin-surface concern).
|
|
79
|
-
*
|
|
80
76
|
* @see SPECIFICATIONS.md §6.3.4 — `GET /auth/me`
|
|
81
77
|
* @see SPECIFICATIONS.md §7.6 — theme resolution
|
|
82
78
|
*/
|
|
@@ -115,11 +111,6 @@ export interface AIHubDeployment {
|
|
|
115
111
|
* hidden. (Also hidden whenever only one agent exists, regardless of this.)
|
|
116
112
|
*/
|
|
117
113
|
agent_switcher_enabled: boolean;
|
|
118
|
-
/**
|
|
119
|
-
* Browser-facing URL of the self-hosted Letta ADE — only present when the
|
|
120
|
-
* caller's role is `power_user` or higher. Absent for `user`-role callers.
|
|
121
|
-
*/
|
|
122
|
-
letta_ade_url?: string;
|
|
123
114
|
}
|
|
124
115
|
/**
|
|
125
116
|
* Combined `{ user, deployment }` envelope returned by `/auth/me`,
|
|
@@ -255,16 +246,6 @@ export interface AIHubMessage {
|
|
|
255
246
|
* @see ui-sketches/03-chat.md — tool_call_card
|
|
256
247
|
*/
|
|
257
248
|
tool_calls?: AIHubToolCallRecord[] | null;
|
|
258
|
-
/**
|
|
259
|
-
* Provider-reported token usage for the turn that produced this
|
|
260
|
-
* message. Set on the LAST assistant message of each turn (the
|
|
261
|
-
* `usage_statistics` event is per-run, not per-message; we stamp it
|
|
262
|
-
* on the visible final bubble). Renders as a small cache-status
|
|
263
|
-
* badge in the chat UI; hover for the full breakdown.
|
|
264
|
-
*
|
|
265
|
-
* @see AIHubMessageUsage
|
|
266
|
-
*/
|
|
267
|
-
usage?: AIHubMessageUsage | null;
|
|
268
249
|
}
|
|
269
250
|
/**
|
|
270
251
|
* One tool call invoked during an assistant turn, as carried on
|
|
@@ -598,59 +579,6 @@ export interface AIHubSystemNoticeEvent extends AIHubEventBase {
|
|
|
598
579
|
retry_at?: string;
|
|
599
580
|
};
|
|
600
581
|
}
|
|
601
|
-
/**
|
|
602
|
-
* System: per-turn token-usage counters propagated from Letta. Stamped
|
|
603
|
-
* on the LAST assistant message of the turn — the React reducer uses
|
|
604
|
-
* `letta_message_id` to attach the badge to the right bubble. Also
|
|
605
|
-
* persisted server-side so a refresh keeps the badge.
|
|
606
|
-
*
|
|
607
|
-
* @see SPECIFICATIONS.md §9.4
|
|
608
|
-
* @see docs/server/chat-sse.md
|
|
609
|
-
*/
|
|
610
|
-
export interface AIHubSystemUsageEvent extends AIHubEventBase {
|
|
611
|
-
event: "usage";
|
|
612
|
-
data: {
|
|
613
|
-
/**
|
|
614
|
-
* Letta message id this usage attaches to (the turn's last assistant
|
|
615
|
-
* message). The reducer joins this against the chat history to put
|
|
616
|
-
* the cache badge on the right bubble. Optional for forward
|
|
617
|
-
* compatibility with future per-message usage events.
|
|
618
|
-
*/
|
|
619
|
-
letta_message_id?: string;
|
|
620
|
-
/** Non-cached input-token count (prompt_tokens). */
|
|
621
|
-
input?: number;
|
|
622
|
-
/** Output-token count (completion_tokens). */
|
|
623
|
-
output?: number;
|
|
624
|
-
/** Cache-read-token count — Anthropic / OpenAI / Gemini all report. */
|
|
625
|
-
cache_read?: number;
|
|
626
|
-
/** Cache-write-token count — Anthropic only; null elsewhere. */
|
|
627
|
-
cache_write?: number;
|
|
628
|
-
/** Reasoning / thinking tokens for models that produce them. */
|
|
629
|
-
reasoning?: number;
|
|
630
|
-
/** Letta's rolling context-window-size estimate post-turn. */
|
|
631
|
-
context?: number;
|
|
632
|
-
/** Sum reported by provider (may differ from input+output when reasoning is counted separately). */
|
|
633
|
-
total?: number;
|
|
634
|
-
};
|
|
635
|
-
}
|
|
636
|
-
/**
|
|
637
|
-
* Per-assistant-message cache + token usage, attached to the
|
|
638
|
-
* historical chat record. Returned from `GET /sessions/{id}/messages`
|
|
639
|
-
* via `AIHubMessage.usage`. Same shape as the live wire event's
|
|
640
|
-
* `data` minus the `letta_message_id` (which is already the message
|
|
641
|
-
* itself).
|
|
642
|
-
*
|
|
643
|
-
* @see AIHubSystemUsageEvent
|
|
644
|
-
*/
|
|
645
|
-
export interface AIHubMessageUsage {
|
|
646
|
-
input?: number | null;
|
|
647
|
-
output?: number | null;
|
|
648
|
-
cache_read?: number | null;
|
|
649
|
-
cache_write?: number | null;
|
|
650
|
-
reasoning?: number | null;
|
|
651
|
-
context?: number | null;
|
|
652
|
-
total?: number | null;
|
|
653
|
-
}
|
|
654
582
|
/**
|
|
655
583
|
* System: non-recoverable error. Followed by `stream_end {reason: "error"}`.
|
|
656
584
|
* The turn transitions to `failed`; the session remains usable.
|
|
@@ -678,7 +606,7 @@ export interface AIHubSystemErrorEvent extends AIHubEventBase {
|
|
|
678
606
|
*
|
|
679
607
|
* @see SPECIFICATIONS.md §9 — full wire protocol
|
|
680
608
|
*/
|
|
681
|
-
export type AIHubEvent = AIHubLifecycleStreamStartEvent | AIHubLifecycleStreamEndEvent | AIHubLifecycleHeartbeatEvent | AIHubContentAssistantDeltaEvent | AIHubContentReasoningDeltaEvent | AIHubContentAssistantMessageCompleteEvent | AIHubToolCallStartedEvent | AIHubToolCallInputDeltaEvent | AIHubToolCallDispatchedEvent | AIHubToolCallProgressEvent | AIHubToolCallResultEvent | AIHubSystemNoticeEvent |
|
|
609
|
+
export type AIHubEvent = AIHubLifecycleStreamStartEvent | AIHubLifecycleStreamEndEvent | AIHubLifecycleHeartbeatEvent | AIHubContentAssistantDeltaEvent | AIHubContentReasoningDeltaEvent | AIHubContentAssistantMessageCompleteEvent | AIHubToolCallStartedEvent | AIHubToolCallInputDeltaEvent | AIHubToolCallDispatchedEvent | AIHubToolCallProgressEvent | AIHubToolCallResultEvent | AIHubSystemNoticeEvent | AIHubSystemErrorEvent;
|
|
682
610
|
/**
|
|
683
611
|
* The deployment-wide UI feature toggles set by `super_admin` (§8.4), served
|
|
684
612
|
* by the public `GET /feature-toggles` endpoint and consumed by the React
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAMrD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,YAAY,GAAG,OAAO,GAAG,aAAa,CAAC;AAExE;;;;;;;;;;GAUG;AACH,MAAM,WAAW,SAAS;IACxB,4CAA4C;IAC5C,EAAE,EAAE,MAAM,CAAC;IACX,gDAAgD;IAChD,QAAQ,EAAE,MAAM,CAAC;IACjB,0EAA0E;IAC1E,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,sEAAsE;IACtE,IAAI,EAAE,SAAS,CAAC;IAChB;;;;;;OAMG;IACH,gBAAgB,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAAC;CAC3C;AAED
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@data-club/ai-hub",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.10",
|
|
4
4
|
"description": "React package for the data-club ai-hub: chat UI, login + change-password, admin UI, AIHub.* primitives, defineWebComponent helper, client SDK. See docs/SPECIFICATIONS.md §7.",
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"type": "module",
|
|
@@ -55,6 +55,7 @@
|
|
|
55
55
|
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
56
56
|
"test": "vitest run --passWithNoTests",
|
|
57
57
|
"dev": "vite",
|
|
58
|
+
"demo": "vite --config vite.demo.config.ts",
|
|
58
59
|
"clean": "rm -rf dist .tsbuildinfo",
|
|
59
60
|
"storybook": "storybook dev -p 6006",
|
|
60
61
|
"build-storybook": "storybook build",
|
package/src/auth/locales/cs.ts
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* Placeholders (`{count}`, `{seconds}`, `{role}`, `{username}`, `{name}`,
|
|
7
7
|
* `{title}`, `{date}`, `{n}`, `{page}`, `{owner}`, `{agent}`) are preserved
|
|
8
8
|
* verbatim. Brand / technical identifiers (Letta ADE, ai-hub, cron,
|
|
9
|
-
* `agent_id`, `
|
|
9
|
+
* `agent_id`, `AI_HUB_FILES_DIR`) are intentionally left
|
|
10
10
|
* untranslated.
|
|
11
11
|
*
|
|
12
12
|
* @see ./en defaults in `../texts.ts`
|
|
@@ -133,7 +133,6 @@ export const csTexts: AIHubTexts = {
|
|
|
133
133
|
themeSwitchToLightAriaLabel: "Přepnout na světlý motiv",
|
|
134
134
|
/* Step 11 user menu. */
|
|
135
135
|
adminMenuItem: "Správa",
|
|
136
|
-
openLettaAdeMenuItem: "Otevřít Letta ADE",
|
|
137
136
|
/* Language switcher. */
|
|
138
137
|
languageSwitcherAriaLabel: "Změnit jazyk",
|
|
139
138
|
/* Turn-status indicator. */
|
|
@@ -218,7 +217,6 @@ export const csTexts: AIHubTexts = {
|
|
|
218
217
|
/* Agents sub-page. */
|
|
219
218
|
agentsHeading: "Agenti",
|
|
220
219
|
createAgentButton: "+ Vytvořit agenta",
|
|
221
|
-
openLettaAdeButton: "↗ Otevřít Letta ADE",
|
|
222
220
|
agentColumnName: "Zobrazované jméno",
|
|
223
221
|
agentColumnLettaId: "Letta agent_id",
|
|
224
222
|
agentColumnStatus: "Stav",
|
|
@@ -392,26 +390,6 @@ export const csTexts: AIHubTexts = {
|
|
|
392
390
|
settingsHeading: "Nastavení",
|
|
393
391
|
settingsLoading: "Načítání nastavení…",
|
|
394
392
|
settingsGenericError: "Nastavení se nepodařilo načíst. Zkuste to znovu.",
|
|
395
|
-
settingsLettaSectionHeading: "Připojení k Lettě",
|
|
396
|
-
settingsLettaBaseUrlLabel: "Základní URL Letty",
|
|
397
|
-
settingsLettaAdeUrlLabel:
|
|
398
|
-
"URL Letta ADE (pro prohlížeč — použito pro odkaz „Otevřít Letta ADE“)",
|
|
399
|
-
settingsLettaAdeUrlHelper:
|
|
400
|
-
"Nepovinné; pokud je prázdné, odvodí se ze základní URL bez /v1.",
|
|
401
|
-
settingsLettaApiKeyLabel: "API klíč Letty",
|
|
402
|
-
settingsLettaApiKeyDbHelper:
|
|
403
|
-
"Aktuálně nastaveno přes administraci (přepíše proměnnou prostředí LETTA_API_KEY). Novou hodnotu nastavíte přepsáním, nebo override zrušte pro návrat k env.",
|
|
404
|
-
settingsLettaApiKeyEnvHelper:
|
|
405
|
-
"Aktuálně se používá LETTA_API_KEY z prostředí serveru. Zde zadanou hodnotou env přepíšete hodnotou z administrace.",
|
|
406
|
-
settingsLettaApiKeyNoneHelper:
|
|
407
|
-
"Žádný klíč není nastaven (ani v administraci, ani v env LETTA_API_KEY). Vložte sem heslo Letta serveru, nebo nastavte LETTA_API_KEY v .env.",
|
|
408
|
-
settingsLettaApiKeyMaskedHelper:
|
|
409
|
-
"Aktuálně nastaveno. Novou hodnotu nastavíte přepsáním.",
|
|
410
|
-
settingsLettaApiKeyUnsetHelper:
|
|
411
|
-
"Žádný klíč není nastaven. Vložte sem API klíč Letta serveru.",
|
|
412
|
-
settingsLettaApiKeyPlaceholder: "••••••••••••••••",
|
|
413
|
-
settingsLettaApiKeyClearOverrideButton: "Zrušit override z administrace (použít env)",
|
|
414
|
-
settingsSaveLettaButton: "Uložit připojení",
|
|
415
393
|
settingsSaveSavingButton: "Ukládání…",
|
|
416
394
|
settingsSaveSuccessFlash: "Uloženo.",
|
|
417
395
|
settingsSaveGenericError: "Nepodařilo se uložit. Zkuste to znovu.",
|
package/src/auth/locales/sk.ts
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* Placeholders (`{count}`, `{seconds}`, `{role}`, `{username}`, `{name}`,
|
|
7
7
|
* `{title}`, `{date}`, `{n}`, `{page}`, `{owner}`, `{agent}`) are preserved
|
|
8
8
|
* verbatim. Brand / technical identifiers (Letta ADE, ai-hub, cron,
|
|
9
|
-
* `agent_id`, `
|
|
9
|
+
* `agent_id`, `AI_HUB_FILES_DIR`) are intentionally left
|
|
10
10
|
* untranslated.
|
|
11
11
|
*
|
|
12
12
|
* @see ./en defaults in `../texts.ts`
|
|
@@ -133,7 +133,6 @@ export const skTexts: AIHubTexts = {
|
|
|
133
133
|
themeSwitchToLightAriaLabel: "Prepnúť na svetlú tému",
|
|
134
134
|
/* Step 11 user menu. */
|
|
135
135
|
adminMenuItem: "Správa",
|
|
136
|
-
openLettaAdeMenuItem: "Otvoriť Letta ADE",
|
|
137
136
|
/* Language switcher. */
|
|
138
137
|
languageSwitcherAriaLabel: "Zmeniť jazyk",
|
|
139
138
|
/* Turn-status indicator. */
|
|
@@ -218,7 +217,6 @@ export const skTexts: AIHubTexts = {
|
|
|
218
217
|
/* Agents sub-page. */
|
|
219
218
|
agentsHeading: "Agenti",
|
|
220
219
|
createAgentButton: "+ Vytvoriť agenta",
|
|
221
|
-
openLettaAdeButton: "↗ Otvoriť Letta ADE",
|
|
222
220
|
agentColumnName: "Zobrazované meno",
|
|
223
221
|
agentColumnLettaId: "Letta agent_id",
|
|
224
222
|
agentColumnStatus: "Stav",
|
|
@@ -392,26 +390,6 @@ export const skTexts: AIHubTexts = {
|
|
|
392
390
|
settingsHeading: "Nastavenia",
|
|
393
391
|
settingsLoading: "Načítavanie nastavení…",
|
|
394
392
|
settingsGenericError: "Nastavenia sa nepodarilo načítať. Skúste to znova.",
|
|
395
|
-
settingsLettaSectionHeading: "Pripojenie k Lette",
|
|
396
|
-
settingsLettaBaseUrlLabel: "Základná URL Letty",
|
|
397
|
-
settingsLettaAdeUrlLabel:
|
|
398
|
-
"URL Letta ADE (pre prehliadač — použité pre odkaz „Otvoriť Letta ADE“)",
|
|
399
|
-
settingsLettaAdeUrlHelper:
|
|
400
|
-
"Nepovinné; ak je prázdne, odvodí sa zo základnej URL bez /v1.",
|
|
401
|
-
settingsLettaApiKeyLabel: "API kľúč Letty",
|
|
402
|
-
settingsLettaApiKeyDbHelper:
|
|
403
|
-
"Aktuálne nastavené cez administráciu (prepíše premennú prostredia LETTA_API_KEY). Novú hodnotu nastavíte prepísaním, alebo override zrušte pre návrat k env.",
|
|
404
|
-
settingsLettaApiKeyEnvHelper:
|
|
405
|
-
"Aktuálne sa používa LETTA_API_KEY z prostredia servera. Tu zadanou hodnotou env prepíšete hodnotou z administrácie.",
|
|
406
|
-
settingsLettaApiKeyNoneHelper:
|
|
407
|
-
"Žiadny kľúč nie je nastavený (ani v administrácii, ani v env LETTA_API_KEY). Vložte sem heslo Letta servera, alebo nastavte LETTA_API_KEY v .env.",
|
|
408
|
-
settingsLettaApiKeyMaskedHelper:
|
|
409
|
-
"Aktuálne nastavené. Novú hodnotu nastavíte prepísaním.",
|
|
410
|
-
settingsLettaApiKeyUnsetHelper:
|
|
411
|
-
"Žiadny kľúč nie je nastavený. Vložte sem API kľúč Letta servera.",
|
|
412
|
-
settingsLettaApiKeyPlaceholder: "••••••••••••••••",
|
|
413
|
-
settingsLettaApiKeyClearOverrideButton: "Zrušiť override z administrácie (použiť env)",
|
|
414
|
-
settingsSaveLettaButton: "Uložiť pripojenie",
|
|
415
393
|
settingsSaveSavingButton: "Ukladanie…",
|
|
416
394
|
settingsSaveSuccessFlash: "Uložené.",
|
|
417
395
|
settingsSaveGenericError: "Nepodarilo sa uložiť. Skúste to znova.",
|
package/src/auth/texts.ts
CHANGED
|
@@ -295,11 +295,6 @@ export interface AIHubChatTexts {
|
|
|
295
295
|
/* ── Step 11 — user-menu admin entries ─────────────────────────── */
|
|
296
296
|
/** User-menu "Admin" item label (only rendered for `role >= power_user`). */
|
|
297
297
|
adminMenuItem: string;
|
|
298
|
-
/**
|
|
299
|
-
* User-menu "Open Letta ADE ↗" item label — opens the deployment's Letta
|
|
300
|
-
* ADE in a new browser tab. Only rendered for `role >= power_user`.
|
|
301
|
-
*/
|
|
302
|
-
openLettaAdeMenuItem: string;
|
|
303
298
|
|
|
304
299
|
/* ── Language switcher (header, beside the user avatar) ─────────── */
|
|
305
300
|
/** `aria-label` / tooltip on the language-switcher button. */
|
|
@@ -477,8 +472,6 @@ export interface AIHubAdminTexts {
|
|
|
477
472
|
agentsHeading: string;
|
|
478
473
|
/** Top-right `+ Create agent` button label. */
|
|
479
474
|
createAgentButton: string;
|
|
480
|
-
/** Top-right `[↗ Open Letta ADE]` button label. Same gate as the user-menu item. */
|
|
481
|
-
openLettaAdeButton: string;
|
|
482
475
|
/** `agents_table` column header — display name. */
|
|
483
476
|
agentColumnName: string;
|
|
484
477
|
/** `agents_table` column header — Letta `agent_id`. */
|
|
@@ -783,26 +776,6 @@ export interface AIHubAdminTexts {
|
|
|
783
776
|
/** Generic banner shown when `/admin/settings` fails. */
|
|
784
777
|
settingsGenericError: string;
|
|
785
778
|
|
|
786
|
-
/* Letta connection section. */
|
|
787
|
-
settingsLettaSectionHeading: string;
|
|
788
|
-
settingsLettaBaseUrlLabel: string;
|
|
789
|
-
settingsLettaAdeUrlLabel: string;
|
|
790
|
-
settingsLettaAdeUrlHelper: string;
|
|
791
|
-
settingsLettaApiKeyLabel: string;
|
|
792
|
-
/** Shown when DB column has a value (super-admin set it via admin panel). */
|
|
793
|
-
settingsLettaApiKeyDbHelper: string;
|
|
794
|
-
/** Shown when DB column is empty but `LETTA_API_KEY` env var is set. */
|
|
795
|
-
settingsLettaApiKeyEnvHelper: string;
|
|
796
|
-
/** Shown when nothing is configured anywhere (chat will fail). */
|
|
797
|
-
settingsLettaApiKeyNoneHelper: string;
|
|
798
|
-
/** @deprecated Use `settingsLettaApiKeyDbHelper` (DB) or `settingsLettaApiKeyEnvHelper` (env). Kept for wrapper backward-compat. */
|
|
799
|
-
settingsLettaApiKeyMaskedHelper: string;
|
|
800
|
-
/** @deprecated Use `settingsLettaApiKeyNoneHelper`. Kept for wrapper backward-compat. */
|
|
801
|
-
settingsLettaApiKeyUnsetHelper: string;
|
|
802
|
-
settingsLettaApiKeyPlaceholder: string;
|
|
803
|
-
/** "Clear admin override (use env)" button label — only rendered when source is "db". */
|
|
804
|
-
settingsLettaApiKeyClearOverrideButton: string;
|
|
805
|
-
settingsSaveLettaButton: string;
|
|
806
779
|
settingsSaveSavingButton: string;
|
|
807
780
|
settingsSaveSuccessFlash: string;
|
|
808
781
|
settingsSaveGenericError: string;
|
|
@@ -1012,7 +985,6 @@ export const defaultAIHubTexts: AIHubTexts = Object.freeze({
|
|
|
1012
985
|
themeSwitchToLightAriaLabel: "Switch to light theme",
|
|
1013
986
|
/* Step 11 user-menu defaults. */
|
|
1014
987
|
adminMenuItem: "Admin",
|
|
1015
|
-
openLettaAdeMenuItem: "Open Letta ADE",
|
|
1016
988
|
/* Language switcher. */
|
|
1017
989
|
languageSwitcherAriaLabel: "Change language",
|
|
1018
990
|
/* Turn-status indicator. */
|
|
@@ -1099,7 +1071,6 @@ export const defaultAIHubTexts: AIHubTexts = Object.freeze({
|
|
|
1099
1071
|
/* Step 12 — Agents sub-page. */
|
|
1100
1072
|
agentsHeading: "Agents",
|
|
1101
1073
|
createAgentButton: "+ Create agent",
|
|
1102
|
-
openLettaAdeButton: "↗ Open Letta ADE",
|
|
1103
1074
|
agentColumnName: "Display name",
|
|
1104
1075
|
agentColumnLettaId: "Letta agent_id",
|
|
1105
1076
|
agentColumnStatus: "Status",
|
|
@@ -1269,26 +1240,6 @@ export const defaultAIHubTexts: AIHubTexts = Object.freeze({
|
|
|
1269
1240
|
settingsHeading: "Settings",
|
|
1270
1241
|
settingsLoading: "Loading settings…",
|
|
1271
1242
|
settingsGenericError: "Could not load settings. Try again.",
|
|
1272
|
-
settingsLettaSectionHeading: "Letta connection",
|
|
1273
|
-
settingsLettaBaseUrlLabel: "Letta base URL",
|
|
1274
|
-
settingsLettaAdeUrlLabel:
|
|
1275
|
-
"Letta ADE URL (browser-facing — used for “Open Letta ADE” link)",
|
|
1276
|
-
settingsLettaAdeUrlHelper:
|
|
1277
|
-
"Optional; if blank, derived from the base URL with /v1 stripped.",
|
|
1278
|
-
settingsLettaApiKeyLabel: "Letta API key",
|
|
1279
|
-
settingsLettaApiKeyDbHelper:
|
|
1280
|
-
"Currently configured via the admin panel (overrides LETTA_API_KEY env). Type a new value to replace it, or clear the override to fall back to env.",
|
|
1281
|
-
settingsLettaApiKeyEnvHelper:
|
|
1282
|
-
"Currently using LETTA_API_KEY from the server's env. Type a value here to override env with an admin-panel value.",
|
|
1283
|
-
settingsLettaApiKeyNoneHelper:
|
|
1284
|
-
"No key configured (neither admin panel nor LETTA_API_KEY env). Paste the Letta server's password here, or set LETTA_API_KEY in .env.",
|
|
1285
|
-
settingsLettaApiKeyMaskedHelper:
|
|
1286
|
-
"Currently configured. Type a new value to replace it.",
|
|
1287
|
-
settingsLettaApiKeyUnsetHelper:
|
|
1288
|
-
"No key configured. Paste the Letta server's API key here.",
|
|
1289
|
-
settingsLettaApiKeyPlaceholder: "••••••••••••••••",
|
|
1290
|
-
settingsLettaApiKeyClearOverrideButton: "Clear admin override (use env value)",
|
|
1291
|
-
settingsSaveLettaButton: "Save connection",
|
|
1292
1243
|
settingsSaveSavingButton: "Saving…",
|
|
1293
1244
|
settingsSaveSuccessFlash: "Saved.",
|
|
1294
1245
|
settingsSaveGenericError: "Could not save. Try again.",
|
|
@@ -557,36 +557,10 @@ export interface ListAdminSessionsResponse {
|
|
|
557
557
|
* Response shape from `GET /admin/settings` — deployment-wide configuration
|
|
558
558
|
* the super-admin sees on the settings page.
|
|
559
559
|
*
|
|
560
|
-
* Encrypted Letta API key is **never** returned in plaintext through this
|
|
561
|
-
* endpoint. `letta_api_key_set` + `letta_api_key_masked` let the UI display
|
|
562
|
-
* "configured / not configured" without exposing the value.
|
|
563
|
-
*
|
|
564
560
|
* @see SPECIFICATIONS.md §6.3.4 — settings endpoints
|
|
565
561
|
* @see ui-sketches/08-admin-settings.md
|
|
566
562
|
*/
|
|
567
563
|
export interface AdminSettingsView {
|
|
568
|
-
/** Letta API base URL (e.g. `http://letta:8283`). `null` until set. */
|
|
569
|
-
letta_base_url: string | null;
|
|
570
|
-
/** Optional override for the "Open Letta ADE" link target. `null` when unset. */
|
|
571
|
-
letta_ade_url: string | null;
|
|
572
|
-
/** Masked placeholder (`••••••••`) when a key is stored in the DB; `null` otherwise. */
|
|
573
|
-
letta_api_key_masked: string | null;
|
|
574
|
-
/**
|
|
575
|
-
* True when the runtime has a usable API key from EITHER source — DB or
|
|
576
|
-
* env. The admin UI uses this to decide whether to render "configured"
|
|
577
|
-
* vs. "missing." Pair with `letta_api_key_source` for source-aware copy.
|
|
578
|
-
*/
|
|
579
|
-
letta_api_key_set: boolean;
|
|
580
|
-
/**
|
|
581
|
-
* Which source the runtime is *currently* using for the Letta API key —
|
|
582
|
-
* `"db"` when a super-admin set it via the admin panel (DB wins over
|
|
583
|
-
* env per spec), `"env"` when the DB column is empty and the server's
|
|
584
|
-
* `LETTA_API_KEY` env var is set, `"none"` when no usable value exists
|
|
585
|
-
* anywhere (chat path will throw). Lets the UI label the field
|
|
586
|
-
* "(from env)" / "(from admin panel)" so operators aren't confused
|
|
587
|
-
* about why their `.env` change didn't appear to take effect (or did).
|
|
588
|
-
*/
|
|
589
|
-
letta_api_key_source: "db" | "env" | "none";
|
|
590
564
|
/** Theme settings, stored as separate columns server-side. */
|
|
591
565
|
theme: {
|
|
592
566
|
default: "light" | "dark";
|
|
@@ -616,12 +590,6 @@ export interface AdminSettingsView {
|
|
|
616
590
|
|
|
617
591
|
/** Body for `patchAdminSettings`. Each field independently optional. */
|
|
618
592
|
export interface PatchAdminSettingsBody {
|
|
619
|
-
/** Letta base URL. Pass `null` to clear (the schema accepts null + URL). */
|
|
620
|
-
lettaBaseUrl?: string | null;
|
|
621
|
-
/** Letta ADE URL. Pass `null` to clear. */
|
|
622
|
-
lettaAdeUrl?: string | null;
|
|
623
|
-
/** New Letta API key (plaintext over HTTPS; encrypted server-side at rest). */
|
|
624
|
-
lettaApiKey?: string;
|
|
625
593
|
/** Theme partial — either or both fields. */
|
|
626
594
|
theme?: {
|
|
627
595
|
default?: "light" | "dark";
|
|
@@ -1492,10 +1460,6 @@ export class AIHubClient {
|
|
|
1492
1460
|
|
|
1493
1461
|
/**
|
|
1494
1462
|
* `GET /admin/settings` — deployment-wide configuration (super_admin only).
|
|
1495
|
-
*
|
|
1496
|
-
* The Letta API key is never returned in plaintext; the response carries
|
|
1497
|
-
* `letta_api_key_set` + `letta_api_key_masked` so the UI can render
|
|
1498
|
-
* "configured / not configured" affordances.
|
|
1499
1463
|
*/
|
|
1500
1464
|
async getAdminSettings(): Promise<AdminSettingsView> {
|
|
1501
1465
|
return this.requestJson<AdminSettingsView>("GET", "/admin/settings");
|
|
@@ -1504,9 +1468,8 @@ export class AIHubClient {
|
|
|
1504
1468
|
/**
|
|
1505
1469
|
* `PATCH /admin/settings` — update one or more deployment settings.
|
|
1506
1470
|
*
|
|
1507
|
-
*
|
|
1508
|
-
*
|
|
1509
|
-
* precedence as the React props (server > prop > built-in default).
|
|
1471
|
+
* Theme fields live as separate columns and follow the same precedence
|
|
1472
|
+
* as the React props (server > prop > built-in default).
|
|
1510
1473
|
*
|
|
1511
1474
|
* @param body - the patch. Each field independent.
|
|
1512
1475
|
* @returns the refreshed settings view.
|
|
@@ -1515,9 +1478,6 @@ export class AIHubClient {
|
|
|
1515
1478
|
body: PatchAdminSettingsBody,
|
|
1516
1479
|
): Promise<AdminSettingsView> {
|
|
1517
1480
|
const wire: Record<string, unknown> = {};
|
|
1518
|
-
if (body.lettaBaseUrl !== undefined) wire.letta_base_url = body.lettaBaseUrl;
|
|
1519
|
-
if (body.lettaAdeUrl !== undefined) wire.letta_ade_url = body.lettaAdeUrl;
|
|
1520
|
-
if (body.lettaApiKey !== undefined) wire.letta_api_key = body.lettaApiKey;
|
|
1521
1481
|
if (body.theme !== undefined) {
|
|
1522
1482
|
const themeWire: Record<string, unknown> = {};
|
|
1523
1483
|
if (body.theme.default !== undefined) themeWire.default = body.theme.default;
|
|
@@ -4,14 +4,14 @@
|
|
|
4
4
|
*
|
|
5
5
|
* Lives in both the chat shell AND the admin shell — Step 11 split it
|
|
6
6
|
* out of `<ChatShell />` so the admin view doesn't lose the user-menu /
|
|
7
|
-
* log-out / theme toggle
|
|
8
|
-
*
|
|
7
|
+
* log-out / theme toggle affordances when the user navigates from chat
|
|
8
|
+
* to admin.
|
|
9
9
|
*
|
|
10
10
|
* Left side: wrapper-supplied slot (`customShellHeaderLeft`) or default
|
|
11
11
|
* gradient text logo derived from `productName`. **Right side:
|
|
12
12
|
* library-owned** — the `<UserMenu />` is non-customizable per
|
|
13
|
-
* [00-shell.md] because it carries session
|
|
14
|
-
*
|
|
13
|
+
* [00-shell.md] because it carries session and role affordances ai-hub
|
|
14
|
+
* controls.
|
|
15
15
|
*
|
|
16
16
|
* @see ui-sketches/00-shell.md
|
|
17
17
|
*/
|
|
@@ -4,22 +4,16 @@
|
|
|
4
4
|
*
|
|
5
5
|
* Step 9 ships the minimal version: avatar circle + username, click
|
|
6
6
|
* opens a dropdown with the role label and a `Sign out` item. Step 10
|
|
7
|
-
* adds the `Theme: Light ↔ Dark` item. **Step 11 adds the `Admin`
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* `Open Letta ADE` opens the deployment's ADE in a new tab
|
|
13
|
-
* (`target="_blank" rel="noopener noreferrer"`); the URL comes from the
|
|
14
|
-
* `deployment.letta_ade_url` field on `/auth/me` (only present for
|
|
15
|
-
* `power_user` and above by design — see `AIHubDeployment` JSDoc).
|
|
7
|
+
* adds the `Theme: Light ↔ Dark` item. **Step 11 adds the `Admin`
|
|
8
|
+
* item**, gated to `role >= power_user` per §8.3 / [00-shell.md].
|
|
9
|
+
* Step 12 wires the voluntary `Change Password` item via the shell's
|
|
10
|
+
* shell-aware framing.
|
|
16
11
|
*
|
|
17
12
|
* The right side of the shell header is **library-owned** and not
|
|
18
13
|
* customizable — per-customer wrappers can theme via CSS but cannot
|
|
19
14
|
* replace this component.
|
|
20
15
|
*
|
|
21
16
|
* @see ui-sketches/00-shell.md — user_menu_button + user_menu_dropdown
|
|
22
|
-
* @see SPECIFICATIONS.md §8.3 — Open Letta ADE link
|
|
23
17
|
*/
|
|
24
18
|
|
|
25
19
|
import {
|
|
@@ -37,11 +31,11 @@ import type { AIHubRole } from "../../types.js";
|
|
|
37
31
|
import { ThemeSwitcher } from "../ThemeSwitcher/index.js";
|
|
38
32
|
|
|
39
33
|
/**
|
|
40
|
-
* Returns true when the given role can see the admin-only menu
|
|
41
|
-
*
|
|
34
|
+
* Returns true when the given role can see the admin-only `Admin` menu
|
|
35
|
+
* item. Mirrors the §8.2 matrix.
|
|
42
36
|
*
|
|
43
37
|
* @param role - the caller's role, or `null` when not authenticated.
|
|
44
|
-
* @returns whether the
|
|
38
|
+
* @returns whether the item should render.
|
|
45
39
|
*/
|
|
46
40
|
function canSeeAdminItems(role: AIHubRole | null): boolean {
|
|
47
41
|
return role === "power_user" || role === "admin" || role === "super_admin";
|
|
@@ -76,7 +70,6 @@ export function UserMenu(props: UserMenuProps): ReactNode {
|
|
|
76
70
|
const [open, setOpen] = useState(false);
|
|
77
71
|
const wrapRef = useRef<HTMLDivElement | null>(null);
|
|
78
72
|
const showAdminItems = canSeeAdminItems(auth.role);
|
|
79
|
-
const lettaAdeUrl = auth.deployment?.letta_ade_url ?? null;
|
|
80
73
|
|
|
81
74
|
// Close on outside-click + Escape so the menu can't be left open
|
|
82
75
|
// accidentally over the chat below.
|
|
@@ -168,19 +161,6 @@ export function UserMenu(props: UserMenuProps): ReactNode {
|
|
|
168
161
|
⚙ {texts.adminMenuItem}
|
|
169
162
|
</button>
|
|
170
163
|
) : null}
|
|
171
|
-
{showAdminItems && lettaAdeUrl !== null && lettaAdeUrl.length > 0 ? (
|
|
172
|
-
<a
|
|
173
|
-
role="menuitem"
|
|
174
|
-
className="data-club-ai-hub__user-menu__item data-club-ai-hub__user-menu__item--link"
|
|
175
|
-
data-testid="user-menu-open-letta-ade"
|
|
176
|
-
href={lettaAdeUrl}
|
|
177
|
-
target="_blank"
|
|
178
|
-
rel="noopener noreferrer"
|
|
179
|
-
onClick={() => setOpen(false)}
|
|
180
|
-
>
|
|
181
|
-
↗ {texts.openLettaAdeMenuItem}
|
|
182
|
-
</a>
|
|
183
|
-
) : null}
|
|
184
164
|
{themeSwitcherEnabled ? (
|
|
185
165
|
<div
|
|
186
166
|
className="data-club-ai-hub__user-menu__item"
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* `<DataClubAIHubAdmin />` ([06-admin-agents.md]).
|
|
4
4
|
*
|
|
5
5
|
* Lists the ai-hub agents catalog with per-row `[Edit]` + `[Archive]` /
|
|
6
|
-
* `[Unarchive]` actions, top-right `[+ Create agent]`
|
|
6
|
+
* `[Unarchive]` actions, a top-right `[+ Create agent]` button,
|
|
7
7
|
* and a `[☐ Show archived]` toggle. **No TPM⚙ button** — TPM-recovery was
|
|
8
8
|
* removed in Step 11.5 (§6.5); the column is retained on the DB schema but
|
|
9
9
|
* the UI doesn't surface it. **No 🗑 button** — agents cannot be hard-deleted
|
|
@@ -21,7 +21,6 @@ import { useEffect, useMemo, useState, type ReactNode } from "react";
|
|
|
21
21
|
import type { AIHubAdminTexts } from "../../auth/texts.js";
|
|
22
22
|
import type { AdminAgentView } from "../../client/AIHubClient.js";
|
|
23
23
|
import { useAIHub } from "../../context/useAIHub.js";
|
|
24
|
-
import { useAIHubAuth } from "../../context/useAIHubAuth.js";
|
|
25
24
|
|
|
26
25
|
import {
|
|
27
26
|
AgentEditorModal,
|
|
@@ -35,12 +34,6 @@ type EditorState =
|
|
|
35
34
|
| { kind: "create" }
|
|
36
35
|
| { kind: "edit"; agent: AdminAgentView };
|
|
37
36
|
|
|
38
|
-
/** Resolves the deployment's ADE URL or derives one from the base URL. */
|
|
39
|
-
function deriveAdeUrl(adeUrl: string | undefined): string | null {
|
|
40
|
-
if (!adeUrl) return null;
|
|
41
|
-
return adeUrl.replace(/\/$/, "");
|
|
42
|
-
}
|
|
43
|
-
|
|
44
37
|
/** Sort comparator — alphabetical by display_name, stable. */
|
|
45
38
|
function byDisplayName(a: AdminAgentView, b: AdminAgentView): number {
|
|
46
39
|
return a.display_name.localeCompare(b.display_name);
|
|
@@ -60,8 +53,6 @@ export interface AdminAgentsPageProps {
|
|
|
60
53
|
*/
|
|
61
54
|
export function AdminAgentsPage(props: AdminAgentsPageProps): ReactNode {
|
|
62
55
|
const { client } = useAIHub();
|
|
63
|
-
const auth = useAIHubAuth();
|
|
64
|
-
const adeUrl = deriveAdeUrl(auth.deployment?.letta_ade_url);
|
|
65
56
|
|
|
66
57
|
const [agents, setAgents] = useState<AdminAgentView[] | null>(null);
|
|
67
58
|
const [loadError, setLoadError] = useState<string | null>(null);
|
|
@@ -171,17 +162,6 @@ export function AdminAgentsPage(props: AdminAgentsPageProps): ReactNode {
|
|
|
171
162
|
{props.texts.agentsHeading}
|
|
172
163
|
</h1>
|
|
173
164
|
<div className="data-club-ai-hub-admin__page-header-actions">
|
|
174
|
-
{adeUrl !== null ? (
|
|
175
|
-
<a
|
|
176
|
-
className="data-club-ai-hub-admin__button"
|
|
177
|
-
data-testid="admin-agents-open-ade"
|
|
178
|
-
href={adeUrl}
|
|
179
|
-
target="_blank"
|
|
180
|
-
rel="noopener noreferrer"
|
|
181
|
-
>
|
|
182
|
-
{props.texts.openLettaAdeButton}
|
|
183
|
-
</a>
|
|
184
|
-
) : null}
|
|
185
165
|
<button
|
|
186
166
|
type="button"
|
|
187
167
|
className="data-club-ai-hub-admin__button data-club-ai-hub-admin__button--primary"
|