@samanhappy/mcphub 1.0.40 → 1.0.41
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/controllers/mcpbController.js +8 -0
- package/dist/controllers/mcpbController.js.map +1 -1
- package/dist/controllers/oauthCallbackController.js +85 -43
- package/dist/controllers/oauthCallbackController.js.map +1 -1
- package/dist/controllers/serverController.js +52 -7
- package/dist/controllers/serverController.js.map +1 -1
- package/dist/middlewares/index.js +10 -7
- package/dist/middlewares/index.js.map +1 -1
- package/dist/routes/index.js +8 -2
- package/dist/routes/index.js.map +1 -1
- package/dist/services/betterAuthConfig.js +19 -0
- package/dist/services/betterAuthConfig.js.map +1 -1
- package/dist/services/mcpService.js +6 -0
- package/dist/services/mcpService.js.map +1 -1
- package/dist/services/vectorSearchService.js +24 -11
- package/dist/services/vectorSearchService.js.map +1 -1
- package/dist/utils/oauthIssuer.js +15 -1
- package/dist/utils/oauthIssuer.js.map +1 -1
- package/dist/utils/rateLimit.js +20 -2
- package/dist/utils/rateLimit.js.map +1 -1
- package/dist/utils/requireAdmin.js +8 -0
- package/dist/utils/requireAdmin.js.map +1 -1
- package/dist/utils/smartRouting.js +69 -27
- package/dist/utils/smartRouting.js.map +1 -1
- package/frontend/dist/assets/{ActivityPage-B5DanW8q.js → ActivityPage-adLbSuxT.js} +2 -2
- package/frontend/dist/assets/{ActivityPage-B5DanW8q.js.map → ActivityPage-adLbSuxT.js.map} +1 -1
- package/frontend/dist/assets/{CopyClientConfigDialog-C6U6_eyy.js → CopyClientConfigDialog-hRNdG_Hz.js} +2 -2
- package/frontend/dist/assets/{CopyClientConfigDialog-C6U6_eyy.js.map → CopyClientConfigDialog-hRNdG_Hz.js.map} +1 -1
- package/frontend/dist/assets/{CredentialsPage-CXK8Xkao.js → CredentialsPage-BSogppb6.js} +2 -2
- package/frontend/dist/assets/{CredentialsPage-CXK8Xkao.js.map → CredentialsPage-BSogppb6.js.map} +1 -1
- package/frontend/dist/assets/Dashboard-BttcAnP2.js +2 -0
- package/frontend/dist/assets/{Dashboard-LIC6BqIA.js.map → Dashboard-BttcAnP2.js.map} +1 -1
- package/frontend/dist/assets/{EndpointCopy-CeZbEsF2.js → EndpointCopy-CNhtxQdx.js} +2 -2
- package/frontend/dist/assets/{EndpointCopy-CeZbEsF2.js.map → EndpointCopy-CNhtxQdx.js.map} +1 -1
- package/frontend/dist/assets/GroupsPage-CQA7x2cz.js +33 -0
- package/frontend/dist/assets/{GroupsPage-DwVaRIap.js.map → GroupsPage-CQA7x2cz.js.map} +1 -1
- package/frontend/dist/assets/{LoginPage-CPqSMwWO.js → LoginPage-C4qBJzYk.js} +2 -2
- package/frontend/dist/assets/{LoginPage-CPqSMwWO.js.map → LoginPage-C4qBJzYk.js.map} +1 -1
- package/frontend/dist/assets/{LogsPage-eCHGem9T.js → LogsPage-BXHqsBa0.js} +2 -2
- package/frontend/dist/assets/{LogsPage-eCHGem9T.js.map → LogsPage-BXHqsBa0.js.map} +1 -1
- package/frontend/dist/assets/MarketPage-C2q7W2an.js +2 -0
- package/frontend/dist/assets/MarketPage-C2q7W2an.js.map +1 -0
- package/frontend/dist/assets/{OAuthConsentPage-DJITYpCM.js → OAuthConsentPage-D-UU5XNF.js} +2 -2
- package/frontend/dist/assets/{OAuthConsentPage-DJITYpCM.js.map → OAuthConsentPage-D-UU5XNF.js.map} +1 -1
- package/frontend/dist/assets/{PromptsPage-DQ02iDOJ.js → PromptsPage-2BBvSosU.js} +2 -2
- package/frontend/dist/assets/{PromptsPage-DQ02iDOJ.js.map → PromptsPage-2BBvSosU.js.map} +1 -1
- package/frontend/dist/assets/{ResourcesPage-mUU0DVus.js → ResourcesPage-DLVYyIm0.js} +2 -2
- package/frontend/dist/assets/{ResourcesPage-mUU0DVus.js.map → ResourcesPage-DLVYyIm0.js.map} +1 -1
- package/frontend/dist/assets/{ServersPage-DsS8j6tl.js → ServersPage-Cx9zIvKw.js} +5 -5
- package/frontend/dist/assets/{ServersPage-DsS8j6tl.js.map → ServersPage-Cx9zIvKw.js.map} +1 -1
- package/frontend/dist/assets/SettingsPage-pZCOi8NF.js +12 -0
- package/frontend/dist/assets/SettingsPage-pZCOi8NF.js.map +1 -0
- package/frontend/dist/assets/{StatusDot-Bcv2BwIL.js → StatusDot-CAv_zsld.js} +2 -2
- package/frontend/dist/assets/{StatusDot-Bcv2BwIL.js.map → StatusDot-CAv_zsld.js.map} +1 -1
- package/frontend/dist/assets/{ToggleGroup-C_7sDUlr.js → ToggleGroup-ffEOMWal.js} +2 -2
- package/frontend/dist/assets/{ToggleGroup-C_7sDUlr.js.map → ToggleGroup-ffEOMWal.js.map} +1 -1
- package/frontend/dist/assets/{UsersPage-ufaG2-Ag.js → UsersPage-Cx6EDM_s.js} +2 -2
- package/frontend/dist/assets/{UsersPage-ufaG2-Ag.js.map → UsersPage-Cx6EDM_s.js.map} +1 -1
- package/frontend/dist/assets/clipboard-_snued0J.js +2 -0
- package/frontend/dist/assets/clipboard-_snued0J.js.map +1 -0
- package/frontend/dist/assets/index-Dt8f_hd5.js +3 -0
- package/frontend/dist/assets/index-Dt8f_hd5.js.map +1 -0
- package/frontend/dist/assets/index-ru-OAIcF.css +1 -0
- package/frontend/dist/assets/{resourceService-CN5cMjQ0.js → resourceService-BCl2XrNf.js} +2 -2
- package/frontend/dist/assets/{resourceService-CN5cMjQ0.js.map → resourceService-BCl2XrNf.js.map} +1 -1
- package/frontend/dist/assets/{useCostData-B9XzWVsV.js → useCostData-D3JNFGsT.js} +2 -2
- package/frontend/dist/assets/{useCostData-B9XzWVsV.js.map → useCostData-D3JNFGsT.js.map} +1 -1
- package/frontend/dist/assets/{variableDetection-Dxw0g2ON.js → variableDetection-CGuC1br1.js} +2 -2
- package/frontend/dist/assets/{variableDetection-Dxw0g2ON.js.map → variableDetection-CGuC1br1.js.map} +1 -1
- package/frontend/dist/index.html +2 -2
- package/package.json +4 -1
- package/frontend/dist/assets/Dashboard-LIC6BqIA.js +0 -2
- package/frontend/dist/assets/GroupsPage-DwVaRIap.js +0 -33
- package/frontend/dist/assets/MarketPage-RqD2-rxq.js +0 -3
- package/frontend/dist/assets/MarketPage-RqD2-rxq.js.map +0 -1
- package/frontend/dist/assets/SettingsPage-CIeF1sDE.js +0 -12
- package/frontend/dist/assets/SettingsPage-CIeF1sDE.js.map +0 -1
- package/frontend/dist/assets/clipboard-BukcCPLt.js +0 -2
- package/frontend/dist/assets/clipboard-BukcCPLt.js.map +0 -1
- package/frontend/dist/assets/index-C8aAOWR7.js +0 -3
- package/frontend/dist/assets/index-C8aAOWR7.js.map +0 -1
- package/frontend/dist/assets/index-D4Vy78bV.css +0 -1
- package/frontend/dist/assets/useSettingsData-J_hwKZA6.js +0 -2
- package/frontend/dist/assets/useSettingsData-J_hwKZA6.js.map +0 -1
|
@@ -12,7 +12,9 @@ import { logger } from './logger.js';
|
|
|
12
12
|
* 3. Settings configuration (systemConfig.smartRouting)
|
|
13
13
|
* 4. Default values
|
|
14
14
|
*
|
|
15
|
-
* @returns {SmartRoutingConfig} Complete smart routing configuration
|
|
15
|
+
* @returns {SmartRoutingConfig} Complete smart routing configuration, including
|
|
16
|
+
* `envOverriddenFields` — the display-only list of fields whose value came from
|
|
17
|
+
* an environment variable and therefore shadows the dashboard setting.
|
|
16
18
|
*/
|
|
17
19
|
export async function getSmartRoutingConfig() {
|
|
18
20
|
// Get system config from DAO
|
|
@@ -23,16 +25,38 @@ export async function getSmartRoutingConfig() {
|
|
|
23
25
|
await systemConfigDao.update({ smartRouting: smartRouting });
|
|
24
26
|
}
|
|
25
27
|
const smartRoutingSettings = smartRouting || {};
|
|
28
|
+
// Collect which fields are currently supplied by an environment variable
|
|
29
|
+
// rather than by the persisted (dashboard) setting, so the settings API can warn
|
|
30
|
+
// that a value typed into the UI is being shadowed (issue #642). The `cfg` helper
|
|
31
|
+
// wraps resolveConfigValue, and each call site names its env vars inline (object
|
|
32
|
+
// shorthand, e.g. `{ OPENAI_API_KEY }`) so there is exactly one place that knows
|
|
33
|
+
// them — no second, drift-prone list to keep in sync.
|
|
34
|
+
const envOverriddenFields = [];
|
|
35
|
+
const cfg = (field, envVars, settingsValue, defaultValue, transformer) => {
|
|
36
|
+
const entries = Object.entries(envVars);
|
|
37
|
+
const { value, source, envVarIndex } = resolveConfigValue(entries.map(([, envValue]) => envValue), settingsValue, defaultValue, transformer);
|
|
38
|
+
const envVar = envVarIndex === undefined ? undefined : entries[envVarIndex][0];
|
|
39
|
+
// `enabled` and `dbUrl` are excluded: the dashboard already reflects
|
|
40
|
+
// env-derived enablement (#1179) and renders a `${DB_URL}` placeholder, so a
|
|
41
|
+
// generic "shadowed by env" warning for them would just be noise.
|
|
42
|
+
if (source === 'env' && envVar && field !== 'enabled' && field !== 'dbUrl') {
|
|
43
|
+
envOverriddenFields.push({ field, envVar });
|
|
44
|
+
}
|
|
45
|
+
return value;
|
|
46
|
+
};
|
|
26
47
|
return {
|
|
27
48
|
// Enabled status - prefer the canonical variable but keep the legacy alias
|
|
28
|
-
enabled:
|
|
49
|
+
enabled: cfg('enabled', {
|
|
50
|
+
SMART_ROUTING_ENABLED: process.env.SMART_ROUTING_ENABLED,
|
|
51
|
+
ENABLE_SMART_ROUTING: process.env.ENABLE_SMART_ROUTING,
|
|
52
|
+
}, smartRoutingSettings.enabled, false, parseBooleanEnvVar),
|
|
29
53
|
// Database configuration
|
|
30
|
-
dbUrl:
|
|
31
|
-
basePacingDelayMs:
|
|
54
|
+
dbUrl: cfg('dbUrl', { DB_URL: process.env.DB_URL }, smartRoutingSettings.dbUrl, '', expandEnvVars),
|
|
55
|
+
basePacingDelayMs: cfg('basePacingDelayMs', { SMART_ROUTING_BASE_PACING_DELAY_MS: process.env.SMART_ROUTING_BASE_PACING_DELAY_MS }, smartRoutingSettings.basePacingDelayMs, 0, (value) => {
|
|
32
56
|
const parsed = parseInt(String(value), 10);
|
|
33
57
|
return Number.isNaN(parsed) || parsed < 0 ? 0 : parsed;
|
|
34
58
|
}),
|
|
35
|
-
embeddingProvider:
|
|
59
|
+
embeddingProvider: cfg('embeddingProvider', { SMART_ROUTING_EMBEDDING_PROVIDER: process.env.SMART_ROUTING_EMBEDDING_PROVIDER }, smartRoutingSettings.embeddingProvider, 'openai', (value) => {
|
|
36
60
|
const normalized = String(value || '')
|
|
37
61
|
.trim()
|
|
38
62
|
.toLowerCase();
|
|
@@ -41,7 +65,9 @@ export async function getSmartRoutingConfig() {
|
|
|
41
65
|
}
|
|
42
66
|
return 'openai';
|
|
43
67
|
}),
|
|
44
|
-
embeddingEncodingFormat:
|
|
68
|
+
embeddingEncodingFormat: cfg('embeddingEncodingFormat', {
|
|
69
|
+
SMART_ROUTING_EMBEDDING_ENCODING_FORMAT: process.env.SMART_ROUTING_EMBEDDING_ENCODING_FORMAT,
|
|
70
|
+
}, smartRoutingSettings.embeddingEncodingFormat, 'auto', (value) => {
|
|
45
71
|
const normalized = String(value || '')
|
|
46
72
|
.trim()
|
|
47
73
|
.toLowerCase();
|
|
@@ -50,24 +76,27 @@ export async function getSmartRoutingConfig() {
|
|
|
50
76
|
}
|
|
51
77
|
return 'auto';
|
|
52
78
|
}),
|
|
53
|
-
embeddingDimensions:
|
|
79
|
+
embeddingDimensions: cfg('embeddingDimensions', { EMBEDDING_DIMENSIONS: process.env.EMBEDDING_DIMENSIONS }, smartRoutingSettings.embeddingDimensions, undefined, (value) => {
|
|
54
80
|
const parsed = Number(value);
|
|
55
81
|
return Number.isSafeInteger(parsed) && parsed > 0 ? parsed : undefined;
|
|
56
82
|
}),
|
|
57
|
-
embeddingDimensionsApiPassthrough:
|
|
83
|
+
embeddingDimensionsApiPassthrough: cfg('embeddingDimensionsApiPassthrough', { EMBEDDING_DIMENSIONS_API_PASSTHROUGH: process.env.EMBEDDING_DIMENSIONS_API_PASSTHROUGH }, smartRoutingSettings.embeddingDimensionsApiPassthrough, false, parseBooleanEnvVar),
|
|
58
84
|
// OpenAI API configuration
|
|
59
|
-
llmProviderBaseUrl:
|
|
60
|
-
llmProviderApiKey:
|
|
61
|
-
embeddingModel:
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
85
|
+
llmProviderBaseUrl: cfg('llmProviderBaseUrl', { OPENAI_API_BASE_URL: process.env.OPENAI_API_BASE_URL }, smartRoutingSettings.llmProviderBaseUrl, 'https://api.openai.com/v1', expandEnvVars),
|
|
86
|
+
llmProviderApiKey: cfg('llmProviderApiKey', { OPENAI_API_KEY: process.env.OPENAI_API_KEY }, smartRoutingSettings.llmProviderApiKey, '', expandEnvVars),
|
|
87
|
+
embeddingModel: cfg('embeddingModel', {
|
|
88
|
+
EMBEDDING_MODEL: process.env.EMBEDDING_MODEL,
|
|
89
|
+
OPENAI_API_EMBEDDING_MODEL: process.env.OPENAI_API_EMBEDDING_MODEL,
|
|
90
|
+
}, smartRoutingSettings.embeddingModel, 'text-embedding-3-small', expandEnvVars),
|
|
91
|
+
azureOpenaiEndpoint: cfg('azureOpenaiEndpoint', { AZURE_OPENAI_ENDPOINT: process.env.AZURE_OPENAI_ENDPOINT }, smartRoutingSettings.azureOpenaiEndpoint, '', expandEnvVars),
|
|
92
|
+
azureOpenaiApiKey: cfg('azureOpenaiApiKey', { AZURE_OPENAI_API_KEY: process.env.AZURE_OPENAI_API_KEY }, smartRoutingSettings.azureOpenaiApiKey, '', expandEnvVars),
|
|
93
|
+
azureOpenaiApiVersion: cfg('azureOpenaiApiVersion', { AZURE_OPENAI_API_VERSION: process.env.AZURE_OPENAI_API_VERSION }, smartRoutingSettings.azureOpenaiApiVersion, '2024-02-15-preview', expandEnvVars),
|
|
94
|
+
azureOpenaiEmbeddingDeployment: cfg('azureOpenaiEmbeddingDeployment', { AZURE_OPENAI_EMBEDDING_DEPLOYMENT: process.env.AZURE_OPENAI_EMBEDDING_DEPLOYMENT }, smartRoutingSettings.azureOpenaiEmbeddingDeployment, '', expandEnvVars),
|
|
95
|
+
azureOpenaiEmbeddingModel: cfg('azureOpenaiEmbeddingModel', { AZURE_OPENAI_EMBEDDING_MODEL: process.env.AZURE_OPENAI_EMBEDDING_MODEL }, smartRoutingSettings.azureOpenaiEmbeddingModel, '', expandEnvVars),
|
|
67
96
|
// Progressive disclosure - when enabled, search_tools returns minimal info
|
|
68
97
|
// and describe_tool is used to get full schema
|
|
69
|
-
progressiveDisclosure:
|
|
70
|
-
serverDescriptionMode:
|
|
98
|
+
progressiveDisclosure: cfg('progressiveDisclosure', { SMART_ROUTING_PROGRESSIVE_DISCLOSURE: process.env.SMART_ROUTING_PROGRESSIVE_DISCLOSURE }, smartRoutingSettings.progressiveDisclosure, false, parseBooleanEnvVar),
|
|
99
|
+
serverDescriptionMode: cfg('serverDescriptionMode', { SMART_ROUTING_SERVER_DESCRIPTION_MODE: process.env.SMART_ROUTING_SERVER_DESCRIPTION_MODE }, smartRoutingSettings.serverDescriptionMode, 'names', (value) => {
|
|
71
100
|
const normalized = String(value || '')
|
|
72
101
|
.trim()
|
|
73
102
|
.toLowerCase();
|
|
@@ -75,27 +104,40 @@ export async function getSmartRoutingConfig() {
|
|
|
75
104
|
}),
|
|
76
105
|
// Maximum tokens for text truncation before generating embeddings.
|
|
77
106
|
// undefined means "use the per-model default" (see getModelDefaultTokenLimit).
|
|
78
|
-
embeddingMaxTokens:
|
|
107
|
+
embeddingMaxTokens: cfg('embeddingMaxTokens', { EMBEDDING_MAX_TOKENS: process.env.EMBEDDING_MAX_TOKENS }, smartRoutingSettings.embeddingMaxTokens, undefined, (value) => {
|
|
79
108
|
const parsed = parseInt(String(value), 10);
|
|
80
109
|
return Number.isNaN(parsed) || parsed <= 0 ? undefined : parsed;
|
|
81
110
|
}),
|
|
111
|
+
// Task prefixes for asymmetric embedding models. Kept verbatim (no trim):
|
|
112
|
+
// the trailing space is part of the prefix.
|
|
113
|
+
embeddingQueryPrefix: cfg('embeddingQueryPrefix', { SMART_ROUTING_EMBEDDING_QUERY_PREFIX: process.env.SMART_ROUTING_EMBEDDING_QUERY_PREFIX }, smartRoutingSettings.embeddingQueryPrefix, '', String),
|
|
114
|
+
embeddingDocumentPrefix: cfg('embeddingDocumentPrefix', {
|
|
115
|
+
SMART_ROUTING_EMBEDDING_DOCUMENT_PREFIX: process.env.SMART_ROUTING_EMBEDDING_DOCUMENT_PREFIX,
|
|
116
|
+
}, smartRoutingSettings.embeddingDocumentPrefix, '', String),
|
|
117
|
+
envOverriddenFields,
|
|
82
118
|
};
|
|
83
119
|
}
|
|
84
120
|
/**
|
|
85
|
-
*
|
|
121
|
+
* Resolves a configuration value with priority order: environment variables >
|
|
122
|
+
* settings > default, and reports which of the three actually won.
|
|
123
|
+
*
|
|
124
|
+
* The source is what lets the dashboard warn about a value the user typed being
|
|
125
|
+
* shadowed by an env var (issue #642) without duplicating the env-var lookup list.
|
|
86
126
|
*
|
|
87
|
-
* @param {(string | undefined)[]} envVars - Array of environment variable
|
|
127
|
+
* @param {(string | undefined)[]} envVars - Array of environment variable values to check in order
|
|
88
128
|
* @param {any} settingsValue - Value from settings configuration
|
|
89
129
|
* @param {any} defaultValue - Default value to use if no other value is found
|
|
90
130
|
* @param {Function} transformer - Function to transform the final value to the correct type
|
|
91
|
-
* @returns {
|
|
131
|
+
* @returns {{ value: T; source: ConfigValueSource; envVarIndex?: number }} The transformed
|
|
132
|
+
* value, where it came from, and (when source is `env`) the index in `envVars` that won
|
|
92
133
|
*/
|
|
93
|
-
function
|
|
134
|
+
function resolveConfigValue(envVars, settingsValue, defaultValue, transformer) {
|
|
94
135
|
// Check environment variables in order
|
|
95
|
-
for (
|
|
136
|
+
for (let index = 0; index < envVars.length; index++) {
|
|
137
|
+
const envVar = envVars[index];
|
|
96
138
|
if (envVar !== undefined && envVar !== null && envVar !== '') {
|
|
97
139
|
try {
|
|
98
|
-
return transformer(envVar);
|
|
140
|
+
return { value: transformer(envVar), source: 'env', envVarIndex: index };
|
|
99
141
|
}
|
|
100
142
|
catch (error) {
|
|
101
143
|
logger.warn(`Failed to transform environment variable "${envVar}":`, error);
|
|
@@ -106,14 +148,14 @@ function getConfigValue(envVars, settingsValue, defaultValue, transformer) {
|
|
|
106
148
|
// Check settings value
|
|
107
149
|
if (settingsValue !== undefined && settingsValue !== null) {
|
|
108
150
|
try {
|
|
109
|
-
return transformer(settingsValue);
|
|
151
|
+
return { value: transformer(settingsValue), source: 'settings' };
|
|
110
152
|
}
|
|
111
153
|
catch (error) {
|
|
112
154
|
logger.warn('Failed to transform settings value:', error);
|
|
113
155
|
}
|
|
114
156
|
}
|
|
115
157
|
// Return default value
|
|
116
|
-
return defaultValue;
|
|
158
|
+
return { value: defaultValue, source: 'default' };
|
|
117
159
|
}
|
|
118
160
|
/**
|
|
119
161
|
* Parses a string environment variable value to a boolean.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smartRouting.js","sourceRoot":"","sources":["../../src/utils/smartRouting.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,+BAA+B,EAAE,MAAM,2BAA2B,CAAC;AAC5E,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"smartRouting.js","sourceRoot":"","sources":["../../src/utils/smartRouting.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{r,j as e}from"./framework-vendor-_YL27Pfc.js";import{t as ee,v as te,w as ae,x as se,y as le}from"./index-C8aAOWR7.js";import{P as re}from"./Pagination-CLUvn47x.js";import{u as ie}from"./i18n-vendor-BMaj5qV8.js";import"./icons-vendor-CNEaJWqW.js";const I=["success","error"],ce=a=>I.includes(a),he=()=>{const{t:a}=ie(),[m,V]=r.useState([]),[n,$]=r.useState(null),[l,J]=r.useState(null),[i,U]=r.useState(null),[o,d]=r.useState(1),[j,G]=r.useState(10),[f,A]=r.useState(!0),[F,N]=r.useState(null),[c,H]=r.useState(null),[K,R]=r.useState(!1),[B,D]=r.useState({}),[p,w]=r.useState(""),[v,k]=r.useState(""),[x,S]=r.useState(""),[g,C]=r.useState(""),[y,L]=r.useState(""),[b,P]=r.useState(""),z=r.useCallback(async()=>{A(!0),N(null);try{const t={...B},[s,u,h]=await Promise.all([ee(o,j,t),te(t),ae()]);s!=null&&s.success&&Array.isArray(s.data)&&(V(s.data),s.pagination&&U(s.pagination)),u!=null&&u.success&&u.data&&$(u.data),h!=null&&h.success&&h.data&&J(h.data)}catch(t){console.error("Error fetching activity data:",t),N(a("activity.fetchError"))}finally{A(!1)}},[o,j,B,a]);r.useEffect(()=>{z()},[z]),r.useEffect(()=>{if(!i)return;const t=Math.max(1,i.totalPages||1);o>t&&d(t)},[i,o]);const W=async t=>{try{const s=await le(t.id);s!=null&&s.success&&s.data&&(H(s.data),R(!0))}catch(s){console.error("Error fetching activity details:",s)}},_=async()=>{var t;if(window.confirm(a("activity.confirmCleanup")))try{const s=await se(30);s!=null&&s.success&&(alert(a("activity.cleanupSuccess",{count:((t=s.data)==null?void 0:t.deletedCount)||0})),z())}catch(s){console.error("Error cleaning up activities:",s),alert(a("activity.cleanupError"))}},q=()=>{const t={};p&&(t.server=p),v&&(t.tool=v),x&&ce(x)&&(t.status=x),g&&(t.group=g),y&&(t.username=y),b&&(t.keyName=b),D(t),d(1)},O=()=>{w(""),k(""),S(""),C(""),L(""),P(""),D({}),d(1)},M=t=>t<1e3?`${t}ms`:t<6e4?`${(t/1e3).toFixed(2)}s`:`${(t/6e4).toFixed(2)}m`,E=t=>new Date(t).toLocaleString(),T=t=>{if(!t)return null;try{return JSON.parse(t)}catch{return t}},Q=()=>n?e.jsx("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-3 mb-4",children:[{label:a("activity.totalCalls"),value:n.totalCalls,tone:"default"},{label:a("activity.successCount"),value:n.successCount,tone:"ok"},{label:a("activity.errorCount"),value:n.errorCount,tone:"err"},{label:a("activity.avgDuration"),value:M(n.avgDuration),tone:"default"}].map(t=>e.jsxs("div",{className:"hub-card",style:{padding:"12px 14px"},children:[e.jsx("div",{className:"text-[12px]",style:{color:"var(--hub-ink-3)"},children:t.label}),e.jsx("div",{className:"hub-num",style:{fontSize:22,fontWeight:500,lineHeight:1.1,marginTop:6,letterSpacing:"-0.02em",color:t.tone==="ok"?"oklch(0.4 0.13 145)":t.tone==="err"?"oklch(0.45 0.18 25)":"var(--hub-ink)"},children:t.value})]},t.label))}):null,X=()=>e.jsx("div",{className:"hub-card px-4 py-3 mb-4",children:e.jsxs("div",{className:"flex flex-wrap gap-3 items-end",children:[e.jsxs("div",{className:"flex-1 min-w-[140px]",children:[e.jsx("label",{className:"sr-only",htmlFor:"activity-server",children:a("activity.server")}),e.jsxs("div",{className:"relative",children:[e.jsx("input",{id:"activity-server",type:"text",value:p,onChange:t=>w(t.target.value),placeholder:a("activity.searchServer"),className:"hub-input pr-9",list:"server-options"}),p&&e.jsx("button",{onClick:()=>w(""),className:"absolute inset-y-0 right-2 flex items-center text-gray-400 hover:text-gray-600 dark:hover:text-gray-300","aria-label":a("common.clear"),type:"button",children:e.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-4 w-4",viewBox:"0 0 20 20",fill:"currentColor",children:e.jsx("path",{fillRule:"evenodd",d:"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z",clipRule:"evenodd"})})})]}),(l==null?void 0:l.servers)&&e.jsx("datalist",{id:"server-options",children:l.servers.map(t=>e.jsx("option",{value:t},t))})]}),e.jsxs("div",{className:"flex-1 min-w-[140px]",children:[e.jsx("label",{className:"sr-only",htmlFor:"activity-tool",children:a("activity.tool")}),e.jsxs("div",{className:"relative",children:[e.jsx("input",{id:"activity-tool",type:"text",value:v,onChange:t=>k(t.target.value),placeholder:a("activity.searchTool"),className:"hub-input pr-9",list:"tool-options"}),v&&e.jsx("button",{onClick:()=>k(""),className:"absolute inset-y-0 right-2 flex items-center text-gray-400 hover:text-gray-600 dark:hover:text-gray-300","aria-label":a("common.clear"),type:"button",children:e.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-4 w-4",viewBox:"0 0 20 20",fill:"currentColor",children:e.jsx("path",{fillRule:"evenodd",d:"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z",clipRule:"evenodd"})})})]}),(l==null?void 0:l.tools)&&e.jsx("datalist",{id:"tool-options",children:l.tools.map(t=>e.jsx("option",{value:t},t))})]}),e.jsxs("div",{className:"flex-1 min-w-[140px]",children:[e.jsx("label",{className:"sr-only",htmlFor:"activity-status",children:a("activity.status")}),e.jsxs("div",{className:"relative",children:[e.jsx("input",{id:"activity-status",type:"text",value:x,onChange:t=>S(t.target.value.toLowerCase()),placeholder:a("activity.searchStatus"),className:"hub-input pr-9",list:"activity-status-options"}),x&&e.jsx("button",{onClick:()=>S(""),className:"absolute inset-y-0 right-2 flex items-center text-gray-400 hover:text-gray-600 dark:hover:text-gray-300","aria-label":a("common.clear"),type:"button",children:e.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-4 w-4",viewBox:"0 0 20 20",fill:"currentColor",children:e.jsx("path",{fillRule:"evenodd",d:"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z",clipRule:"evenodd"})})})]}),e.jsx("datalist",{id:"activity-status-options",children:I.map(t=>e.jsx("option",{value:t},t))})]}),e.jsxs("div",{className:"flex-1 min-w-[140px]",children:[e.jsx("label",{className:"sr-only",htmlFor:"activity-group",children:a("activity.group")}),e.jsxs("div",{className:"relative",children:[e.jsx("input",{id:"activity-group",type:"text",value:g,onChange:t=>C(t.target.value),placeholder:a("activity.searchGroup"),className:"hub-input pr-9",list:"group-options"}),g&&e.jsx("button",{onClick:()=>C(""),className:"absolute inset-y-0 right-2 flex items-center text-gray-400 hover:text-gray-600 dark:hover:text-gray-300","aria-label":a("common.clear"),type:"button",children:e.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-4 w-4",viewBox:"0 0 20 20",fill:"currentColor",children:e.jsx("path",{fillRule:"evenodd",d:"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z",clipRule:"evenodd"})})})]}),(l==null?void 0:l.groups)&&e.jsx("datalist",{id:"group-options",children:l.groups.map(t=>e.jsx("option",{value:t},t))})]}),e.jsxs("div",{className:"flex-1 min-w-[140px]",children:[e.jsx("label",{className:"sr-only",htmlFor:"activity-username",children:a("activity.user")}),e.jsxs("div",{className:"relative",children:[e.jsx("input",{id:"activity-username",type:"text",value:y,onChange:t=>L(t.target.value),placeholder:a("activity.searchUsername"),className:"hub-input pr-9",list:"username-options"}),y&&e.jsx("button",{onClick:()=>L(""),className:"absolute inset-y-0 right-2 flex items-center text-gray-400 hover:text-gray-600 dark:hover:text-gray-300","aria-label":a("common.clear"),type:"button",children:e.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-4 w-4",viewBox:"0 0 20 20",fill:"currentColor",children:e.jsx("path",{fillRule:"evenodd",d:"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z",clipRule:"evenodd"})})})]}),(l==null?void 0:l.usernames)&&e.jsx("datalist",{id:"username-options",children:l.usernames.map(t=>e.jsx("option",{value:t},t))})]}),e.jsxs("div",{className:"flex-1 min-w-[140px]",children:[e.jsx("label",{className:"sr-only",htmlFor:"activity-keyname",children:a("activity.keyName")}),e.jsxs("div",{className:"relative",children:[e.jsx("input",{id:"activity-keyname",type:"text",value:b,onChange:t=>P(t.target.value),placeholder:a("activity.searchKeyName"),className:"hub-input pr-9",list:"keyname-options"}),b&&e.jsx("button",{onClick:()=>P(""),className:"absolute inset-y-0 right-2 flex items-center text-gray-400 hover:text-gray-600 dark:hover:text-gray-300","aria-label":a("common.clear"),type:"button",children:e.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-4 w-4",viewBox:"0 0 20 20",fill:"currentColor",children:e.jsx("path",{fillRule:"evenodd",d:"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z",clipRule:"evenodd"})})})]}),(l==null?void 0:l.keyNames)&&e.jsx("datalist",{id:"keyname-options",children:l.keyNames.map(t=>e.jsx("option",{value:t},t))})]}),e.jsxs("div",{className:"flex-shrink-0 flex items-center gap-2",children:[e.jsxs("button",{onClick:q,className:"hub-btn primary whitespace-nowrap",children:[e.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-3.5 w-3.5",viewBox:"0 0 20 20",fill:"currentColor",children:e.jsx("path",{fillRule:"evenodd",d:"M8 4a4 4 0 100 8 4 4 0 000-8zM2 8a6 6 0 1110.89 3.476l4.817 4.817a1 1 0 01-1.414 1.414l-4.816-4.816A6 6 0 012 8z",clipRule:"evenodd"})}),a("common.search")]}),e.jsx("button",{onClick:O,className:"hub-btn whitespace-nowrap",children:a("common.clear")})]})]})}),Y=()=>m.length===0?e.jsx("div",{className:"hub-card p-10 text-center",style:{color:"var(--hub-ink-3)"},children:a("activity.noData")}):e.jsx("div",{className:"hub-card overflow-hidden",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"min-w-full",children:[e.jsx("thead",{style:{background:"var(--hub-bg-2)"},children:e.jsx("tr",{children:[a("activity.timestamp"),a("activity.server"),a("activity.tool"),a("activity.duration"),a("activity.status"),a("activity.group"),a("activity.user"),a("activity.key"),a("activity.sourceIp"),a("common.actions")].map(t=>e.jsx("th",{className:"hub-mono",style:{padding:"9px 14px",textAlign:"left",fontSize:11,color:"var(--hub-ink-3)",textTransform:"uppercase",letterSpacing:"0.08em",fontWeight:500},children:t},t))})}),e.jsx("tbody",{children:m.map(t=>e.jsxs("tr",{className:"transition-colors hover:bg-[var(--hub-surface-hover)]",style:{borderTop:"1px solid var(--hub-line-2)"},children:[e.jsx("td",{className:"hub-mono whitespace-nowrap",style:{padding:"10px 14px",fontSize:12,color:"var(--hub-ink-2)"},children:E(t.timestamp)}),e.jsx("td",{style:{padding:"10px 14px"},children:e.jsx("span",{className:"hub-tag",children:t.server})}),e.jsx("td",{style:{padding:"10px 14px"},children:e.jsx("span",{className:"hub-tag accent",children:t.tool})}),e.jsx("td",{className:"hub-mono hub-num whitespace-nowrap",style:{padding:"10px 14px",fontSize:12,color:"var(--hub-ink-2)"},children:M(t.duration)}),e.jsx("td",{style:{padding:"10px 14px"},className:"whitespace-nowrap",children:e.jsxs("span",{className:`hub-status ${t.status==="success"?"ok":"err"}`,children:[e.jsx("span",{className:"hub-dot"}),t.status==="success"?a("activity.statusSuccess"):a("activity.statusError")]})}),e.jsx("td",{style:{padding:"10px 14px",fontSize:12,color:"var(--hub-ink-3)"},children:t.group||"—"}),e.jsx("td",{style:{padding:"10px 14px",fontSize:12,color:"var(--hub-ink-3)"},children:t.username||"—"}),e.jsx("td",{style:{padding:"10px 14px",fontSize:12,color:"var(--hub-ink-3)"},children:t.keyName||"—"}),e.jsx("td",{className:"hub-mono whitespace-nowrap",style:{padding:"10px 14px",fontSize:12,color:"var(--hub-ink-3)"},children:t.sourceIp||"—"}),e.jsx("td",{style:{padding:"10px 14px"},children:e.jsx("button",{onClick:()=>W(t),className:"hub-btn ghost sm",style:{color:"var(--hub-accent)"},children:a("common.view")})})]},t.id))})]})})}),Z=()=>{if(!K||!c)return null;const t=T(c.input),s=T(c.output);return e.jsx("div",{className:"fixed inset-0 bg-black/50 flex items-center justify-center z-50",children:e.jsxs("div",{className:"hub-card max-w-4xl w-full mx-4 max-h-[90vh] overflow-hidden",style:{boxShadow:"0 8px 24px rgba(0,0,0,0.12)"},children:[e.jsxs("div",{className:"flex items-center justify-between px-5 py-3",style:{borderBottom:"1px solid var(--hub-line-2)"},children:[e.jsx("h3",{className:"hub-card-title",children:a("activity.details")}),e.jsx("button",{onClick:()=>R(!1),className:"hub-icon-btn sm","aria-label":"close",children:e.jsx("svg",{className:"h-3.5 w-3.5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})})]}),e.jsxs("div",{className:"px-6 py-4 overflow-y-auto max-h-[calc(90vh-120px)]",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4 mb-4",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-gray-500 dark:text-gray-400",children:a("activity.timestamp")}),e.jsx("p",{className:"text-gray-900 dark:text-white",children:E(c.timestamp)})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-gray-500 dark:text-gray-400",children:a("activity.duration")}),e.jsx("p",{className:"text-gray-900 dark:text-white",children:M(c.duration)})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-gray-500 dark:text-gray-400",children:a("activity.server")}),e.jsx("p",{className:"text-gray-900 dark:text-white font-mono",children:c.server})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-gray-500 dark:text-gray-400",children:a("activity.tool")}),e.jsx("p",{className:"text-gray-900 dark:text-white font-mono",children:c.tool})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-gray-500 dark:text-gray-400",children:a("activity.status")}),e.jsx("span",{className:`px-2 py-1 rounded text-xs font-medium ${c.status==="success"?"bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-200":"bg-red-100 text-red-800 dark:bg-red-900 dark:text-red-200"}`,children:c.status==="success"?a("activity.statusSuccess"):a("activity.statusError")})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-gray-500 dark:text-gray-400",children:a("activity.group")}),e.jsx("p",{className:"text-gray-900 dark:text-white",children:c.group||"-"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-gray-500 dark:text-gray-400",children:a("activity.user")}),e.jsx("p",{className:"text-gray-900 dark:text-white",children:c.username||"-"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-gray-500 dark:text-gray-400",children:a("activity.sourceIp")}),e.jsx("p",{className:"text-gray-900 dark:text-white font-mono",children:c.sourceIp||"-"})]}),c.keyName&&e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-gray-500 dark:text-gray-400",children:a("activity.key")}),e.jsx("p",{className:"text-gray-900 dark:text-white",children:c.keyName})]})]}),c.errorMessage&&e.jsxs("div",{className:"mb-4",children:[e.jsx("label",{className:"block text-sm font-medium text-red-500 mb-1",children:a("activity.errorMessage")}),e.jsx("div",{className:"bg-red-50 dark:bg-red-900/20 rounded p-3 text-sm text-red-800 dark:text-red-200",children:c.errorMessage})]}),t&&e.jsxs("div",{className:"mb-4",children:[e.jsx("label",{className:"block text-sm font-medium text-gray-500 dark:text-gray-400 mb-1",children:a("activity.input")}),e.jsx("pre",{className:"bg-gray-100 dark:bg-gray-700 rounded p-3 text-sm overflow-x-auto max-h-64",children:typeof t=="string"?t:JSON.stringify(t,null,2)})]}),s&&e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-gray-500 dark:text-gray-400 mb-1",children:a("activity.output")}),e.jsx("pre",{className:"bg-gray-100 dark:bg-gray-700 rounded p-3 text-sm overflow-x-auto max-h-64",children:typeof s=="string"?s:JSON.stringify(s,null,2)})]})]})]})})};return e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-end justify-between gap-4 mb-6",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"hub-h1",children:a("activity.title")}),e.jsxs("p",{className:"hub-sub",children:[e.jsx("span",{className:"hub-num",children:(i==null?void 0:i.total)??m.length})," entries"]})]}),e.jsxs("button",{onClick:_,className:"hub-btn danger",children:[e.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-3.5 w-3.5",viewBox:"0 0 20 20",fill:"currentColor",children:e.jsx("path",{fillRule:"evenodd",d:"M9 2a1 1 0 00-.894.553L7.382 4H4a1 1 0 000 2v10a2 2 0 002 2h8a2 2 0 002-2V6a1 1 0 100-2h-3.382l-.724-1.447A1 1 0 0011 2H9zM7 8a1 1 0 012 0v6a1 1 0 11-2 0V8zm5-1a1 1 0 00-1 1v6a1 1 0 102 0V8a1 1 0 00-1-1z",clipRule:"evenodd"})}),a("activity.cleanup")]})]}),F&&e.jsxs("div",{className:"hub-card flex items-center justify-between gap-3 mb-4",style:{padding:"10px 14px",borderColor:"oklch(0.85 0.1 25)",background:"oklch(0.97 0.03 25)",color:"oklch(0.4 0.18 25)"},children:[e.jsx("span",{className:"truncate text-[13px]",children:F}),e.jsx("button",{className:"hub-icon-btn sm",onClick:()=>N(null),"aria-label":"close",children:e.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-3 w-3",viewBox:"0 0 20 20",fill:"currentColor",children:e.jsx("path",{fillRule:"evenodd",d:"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z",clipRule:"evenodd"})})})]}),f&&m.length===0?e.jsx("div",{className:"hub-card p-10 text-center",style:{color:"var(--hub-ink-3)"},children:a("app.loading")}):e.jsxs(e.Fragment,{children:[Q(),X(),Y(),e.jsxs("div",{className:"flex items-center mt-6",children:[e.jsx("div",{className:"flex-[2] text-sm text-gray-500 dark:text-gray-400",children:i&&a("common.showing",{start:(i.page-1)*i.limit+1,end:Math.min(i.page*i.limit,i.total),total:i.total})}),e.jsx("div",{className:"flex-[4] flex justify-center",children:i&&i.totalPages>1&&e.jsx(re,{currentPage:o,totalPages:i.totalPages,onPageChange:d,disabled:f})}),e.jsxs("div",{className:"flex-[2] flex items-center justify-end space-x-2",children:[e.jsxs("label",{htmlFor:"perPage",className:"text-sm text-gray-500 dark:text-gray-400",children:[a("common.itemsPerPage"),":"]}),e.jsxs("select",{id:"perPage",value:j,onChange:t=>{G(Number(t.target.value)),d(1)},disabled:f,className:"border border-gray-300 dark:border-gray-600 rounded p-1 text-sm dark:bg-gray-700 dark:text-white outline-none disabled:opacity-50 disabled:cursor-not-allowed",children:[e.jsx("option",{value:10,children:"10"}),e.jsx("option",{value:20,children:"20"}),e.jsx("option",{value:50,children:"50"}),e.jsx("option",{value:100,children:"100"})]})]})]})]}),Z()]})};export{he as default};
|
|
2
|
-
//# sourceMappingURL=ActivityPage-
|
|
1
|
+
import{r,j as e}from"./framework-vendor-_YL27Pfc.js";import{t as ee,v as te,w as ae,x as se,y as le}from"./index-Dt8f_hd5.js";import{P as re}from"./Pagination-CLUvn47x.js";import{u as ie}from"./i18n-vendor-BMaj5qV8.js";import"./icons-vendor-CNEaJWqW.js";const I=["success","error"],ce=a=>I.includes(a),he=()=>{const{t:a}=ie(),[m,V]=r.useState([]),[n,$]=r.useState(null),[l,J]=r.useState(null),[i,U]=r.useState(null),[o,d]=r.useState(1),[j,G]=r.useState(10),[f,A]=r.useState(!0),[F,N]=r.useState(null),[c,H]=r.useState(null),[K,R]=r.useState(!1),[B,D]=r.useState({}),[p,w]=r.useState(""),[v,k]=r.useState(""),[x,S]=r.useState(""),[g,C]=r.useState(""),[y,L]=r.useState(""),[b,P]=r.useState(""),z=r.useCallback(async()=>{A(!0),N(null);try{const t={...B},[s,u,h]=await Promise.all([ee(o,j,t),te(t),ae()]);s!=null&&s.success&&Array.isArray(s.data)&&(V(s.data),s.pagination&&U(s.pagination)),u!=null&&u.success&&u.data&&$(u.data),h!=null&&h.success&&h.data&&J(h.data)}catch(t){console.error("Error fetching activity data:",t),N(a("activity.fetchError"))}finally{A(!1)}},[o,j,B,a]);r.useEffect(()=>{z()},[z]),r.useEffect(()=>{if(!i)return;const t=Math.max(1,i.totalPages||1);o>t&&d(t)},[i,o]);const W=async t=>{try{const s=await le(t.id);s!=null&&s.success&&s.data&&(H(s.data),R(!0))}catch(s){console.error("Error fetching activity details:",s)}},_=async()=>{var t;if(window.confirm(a("activity.confirmCleanup")))try{const s=await se(30);s!=null&&s.success&&(alert(a("activity.cleanupSuccess",{count:((t=s.data)==null?void 0:t.deletedCount)||0})),z())}catch(s){console.error("Error cleaning up activities:",s),alert(a("activity.cleanupError"))}},q=()=>{const t={};p&&(t.server=p),v&&(t.tool=v),x&&ce(x)&&(t.status=x),g&&(t.group=g),y&&(t.username=y),b&&(t.keyName=b),D(t),d(1)},O=()=>{w(""),k(""),S(""),C(""),L(""),P(""),D({}),d(1)},M=t=>t<1e3?`${t}ms`:t<6e4?`${(t/1e3).toFixed(2)}s`:`${(t/6e4).toFixed(2)}m`,E=t=>new Date(t).toLocaleString(),T=t=>{if(!t)return null;try{return JSON.parse(t)}catch{return t}},Q=()=>n?e.jsx("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-3 mb-4",children:[{label:a("activity.totalCalls"),value:n.totalCalls,tone:"default"},{label:a("activity.successCount"),value:n.successCount,tone:"ok"},{label:a("activity.errorCount"),value:n.errorCount,tone:"err"},{label:a("activity.avgDuration"),value:M(n.avgDuration),tone:"default"}].map(t=>e.jsxs("div",{className:"hub-card",style:{padding:"12px 14px"},children:[e.jsx("div",{className:"text-[12px]",style:{color:"var(--hub-ink-3)"},children:t.label}),e.jsx("div",{className:"hub-num",style:{fontSize:22,fontWeight:500,lineHeight:1.1,marginTop:6,letterSpacing:"-0.02em",color:t.tone==="ok"?"oklch(0.4 0.13 145)":t.tone==="err"?"oklch(0.45 0.18 25)":"var(--hub-ink)"},children:t.value})]},t.label))}):null,X=()=>e.jsx("div",{className:"hub-card px-4 py-3 mb-4",children:e.jsxs("div",{className:"flex flex-wrap gap-3 items-end",children:[e.jsxs("div",{className:"flex-1 min-w-[140px]",children:[e.jsx("label",{className:"sr-only",htmlFor:"activity-server",children:a("activity.server")}),e.jsxs("div",{className:"relative",children:[e.jsx("input",{id:"activity-server",type:"text",value:p,onChange:t=>w(t.target.value),placeholder:a("activity.searchServer"),className:"hub-input pr-9",list:"server-options"}),p&&e.jsx("button",{onClick:()=>w(""),className:"absolute inset-y-0 right-2 flex items-center text-gray-400 hover:text-gray-600 dark:hover:text-gray-300","aria-label":a("common.clear"),type:"button",children:e.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-4 w-4",viewBox:"0 0 20 20",fill:"currentColor",children:e.jsx("path",{fillRule:"evenodd",d:"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z",clipRule:"evenodd"})})})]}),(l==null?void 0:l.servers)&&e.jsx("datalist",{id:"server-options",children:l.servers.map(t=>e.jsx("option",{value:t},t))})]}),e.jsxs("div",{className:"flex-1 min-w-[140px]",children:[e.jsx("label",{className:"sr-only",htmlFor:"activity-tool",children:a("activity.tool")}),e.jsxs("div",{className:"relative",children:[e.jsx("input",{id:"activity-tool",type:"text",value:v,onChange:t=>k(t.target.value),placeholder:a("activity.searchTool"),className:"hub-input pr-9",list:"tool-options"}),v&&e.jsx("button",{onClick:()=>k(""),className:"absolute inset-y-0 right-2 flex items-center text-gray-400 hover:text-gray-600 dark:hover:text-gray-300","aria-label":a("common.clear"),type:"button",children:e.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-4 w-4",viewBox:"0 0 20 20",fill:"currentColor",children:e.jsx("path",{fillRule:"evenodd",d:"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z",clipRule:"evenodd"})})})]}),(l==null?void 0:l.tools)&&e.jsx("datalist",{id:"tool-options",children:l.tools.map(t=>e.jsx("option",{value:t},t))})]}),e.jsxs("div",{className:"flex-1 min-w-[140px]",children:[e.jsx("label",{className:"sr-only",htmlFor:"activity-status",children:a("activity.status")}),e.jsxs("div",{className:"relative",children:[e.jsx("input",{id:"activity-status",type:"text",value:x,onChange:t=>S(t.target.value.toLowerCase()),placeholder:a("activity.searchStatus"),className:"hub-input pr-9",list:"activity-status-options"}),x&&e.jsx("button",{onClick:()=>S(""),className:"absolute inset-y-0 right-2 flex items-center text-gray-400 hover:text-gray-600 dark:hover:text-gray-300","aria-label":a("common.clear"),type:"button",children:e.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-4 w-4",viewBox:"0 0 20 20",fill:"currentColor",children:e.jsx("path",{fillRule:"evenodd",d:"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z",clipRule:"evenodd"})})})]}),e.jsx("datalist",{id:"activity-status-options",children:I.map(t=>e.jsx("option",{value:t},t))})]}),e.jsxs("div",{className:"flex-1 min-w-[140px]",children:[e.jsx("label",{className:"sr-only",htmlFor:"activity-group",children:a("activity.group")}),e.jsxs("div",{className:"relative",children:[e.jsx("input",{id:"activity-group",type:"text",value:g,onChange:t=>C(t.target.value),placeholder:a("activity.searchGroup"),className:"hub-input pr-9",list:"group-options"}),g&&e.jsx("button",{onClick:()=>C(""),className:"absolute inset-y-0 right-2 flex items-center text-gray-400 hover:text-gray-600 dark:hover:text-gray-300","aria-label":a("common.clear"),type:"button",children:e.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-4 w-4",viewBox:"0 0 20 20",fill:"currentColor",children:e.jsx("path",{fillRule:"evenodd",d:"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z",clipRule:"evenodd"})})})]}),(l==null?void 0:l.groups)&&e.jsx("datalist",{id:"group-options",children:l.groups.map(t=>e.jsx("option",{value:t},t))})]}),e.jsxs("div",{className:"flex-1 min-w-[140px]",children:[e.jsx("label",{className:"sr-only",htmlFor:"activity-username",children:a("activity.user")}),e.jsxs("div",{className:"relative",children:[e.jsx("input",{id:"activity-username",type:"text",value:y,onChange:t=>L(t.target.value),placeholder:a("activity.searchUsername"),className:"hub-input pr-9",list:"username-options"}),y&&e.jsx("button",{onClick:()=>L(""),className:"absolute inset-y-0 right-2 flex items-center text-gray-400 hover:text-gray-600 dark:hover:text-gray-300","aria-label":a("common.clear"),type:"button",children:e.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-4 w-4",viewBox:"0 0 20 20",fill:"currentColor",children:e.jsx("path",{fillRule:"evenodd",d:"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z",clipRule:"evenodd"})})})]}),(l==null?void 0:l.usernames)&&e.jsx("datalist",{id:"username-options",children:l.usernames.map(t=>e.jsx("option",{value:t},t))})]}),e.jsxs("div",{className:"flex-1 min-w-[140px]",children:[e.jsx("label",{className:"sr-only",htmlFor:"activity-keyname",children:a("activity.keyName")}),e.jsxs("div",{className:"relative",children:[e.jsx("input",{id:"activity-keyname",type:"text",value:b,onChange:t=>P(t.target.value),placeholder:a("activity.searchKeyName"),className:"hub-input pr-9",list:"keyname-options"}),b&&e.jsx("button",{onClick:()=>P(""),className:"absolute inset-y-0 right-2 flex items-center text-gray-400 hover:text-gray-600 dark:hover:text-gray-300","aria-label":a("common.clear"),type:"button",children:e.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-4 w-4",viewBox:"0 0 20 20",fill:"currentColor",children:e.jsx("path",{fillRule:"evenodd",d:"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z",clipRule:"evenodd"})})})]}),(l==null?void 0:l.keyNames)&&e.jsx("datalist",{id:"keyname-options",children:l.keyNames.map(t=>e.jsx("option",{value:t},t))})]}),e.jsxs("div",{className:"flex-shrink-0 flex items-center gap-2",children:[e.jsxs("button",{onClick:q,className:"hub-btn primary whitespace-nowrap",children:[e.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-3.5 w-3.5",viewBox:"0 0 20 20",fill:"currentColor",children:e.jsx("path",{fillRule:"evenodd",d:"M8 4a4 4 0 100 8 4 4 0 000-8zM2 8a6 6 0 1110.89 3.476l4.817 4.817a1 1 0 01-1.414 1.414l-4.816-4.816A6 6 0 012 8z",clipRule:"evenodd"})}),a("common.search")]}),e.jsx("button",{onClick:O,className:"hub-btn whitespace-nowrap",children:a("common.clear")})]})]})}),Y=()=>m.length===0?e.jsx("div",{className:"hub-card p-10 text-center",style:{color:"var(--hub-ink-3)"},children:a("activity.noData")}):e.jsx("div",{className:"hub-card overflow-hidden",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"min-w-full",children:[e.jsx("thead",{style:{background:"var(--hub-bg-2)"},children:e.jsx("tr",{children:[a("activity.timestamp"),a("activity.server"),a("activity.tool"),a("activity.duration"),a("activity.status"),a("activity.group"),a("activity.user"),a("activity.key"),a("activity.sourceIp"),a("common.actions")].map(t=>e.jsx("th",{className:"hub-mono",style:{padding:"9px 14px",textAlign:"left",fontSize:11,color:"var(--hub-ink-3)",textTransform:"uppercase",letterSpacing:"0.08em",fontWeight:500},children:t},t))})}),e.jsx("tbody",{children:m.map(t=>e.jsxs("tr",{className:"transition-colors hover:bg-[var(--hub-surface-hover)]",style:{borderTop:"1px solid var(--hub-line-2)"},children:[e.jsx("td",{className:"hub-mono whitespace-nowrap",style:{padding:"10px 14px",fontSize:12,color:"var(--hub-ink-2)"},children:E(t.timestamp)}),e.jsx("td",{style:{padding:"10px 14px"},children:e.jsx("span",{className:"hub-tag",children:t.server})}),e.jsx("td",{style:{padding:"10px 14px"},children:e.jsx("span",{className:"hub-tag accent",children:t.tool})}),e.jsx("td",{className:"hub-mono hub-num whitespace-nowrap",style:{padding:"10px 14px",fontSize:12,color:"var(--hub-ink-2)"},children:M(t.duration)}),e.jsx("td",{style:{padding:"10px 14px"},className:"whitespace-nowrap",children:e.jsxs("span",{className:`hub-status ${t.status==="success"?"ok":"err"}`,children:[e.jsx("span",{className:"hub-dot"}),t.status==="success"?a("activity.statusSuccess"):a("activity.statusError")]})}),e.jsx("td",{style:{padding:"10px 14px",fontSize:12,color:"var(--hub-ink-3)"},children:t.group||"—"}),e.jsx("td",{style:{padding:"10px 14px",fontSize:12,color:"var(--hub-ink-3)"},children:t.username||"—"}),e.jsx("td",{style:{padding:"10px 14px",fontSize:12,color:"var(--hub-ink-3)"},children:t.keyName||"—"}),e.jsx("td",{className:"hub-mono whitespace-nowrap",style:{padding:"10px 14px",fontSize:12,color:"var(--hub-ink-3)"},children:t.sourceIp||"—"}),e.jsx("td",{style:{padding:"10px 14px"},children:e.jsx("button",{onClick:()=>W(t),className:"hub-btn ghost sm",style:{color:"var(--hub-accent)"},children:a("common.view")})})]},t.id))})]})})}),Z=()=>{if(!K||!c)return null;const t=T(c.input),s=T(c.output);return e.jsx("div",{className:"fixed inset-0 bg-black/50 flex items-center justify-center z-50",children:e.jsxs("div",{className:"hub-card max-w-4xl w-full mx-4 max-h-[90vh] overflow-hidden",style:{boxShadow:"0 8px 24px rgba(0,0,0,0.12)"},children:[e.jsxs("div",{className:"flex items-center justify-between px-5 py-3",style:{borderBottom:"1px solid var(--hub-line-2)"},children:[e.jsx("h3",{className:"hub-card-title",children:a("activity.details")}),e.jsx("button",{onClick:()=>R(!1),className:"hub-icon-btn sm","aria-label":"close",children:e.jsx("svg",{className:"h-3.5 w-3.5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})})]}),e.jsxs("div",{className:"px-6 py-4 overflow-y-auto max-h-[calc(90vh-120px)]",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4 mb-4",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-gray-500 dark:text-gray-400",children:a("activity.timestamp")}),e.jsx("p",{className:"text-gray-900 dark:text-white",children:E(c.timestamp)})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-gray-500 dark:text-gray-400",children:a("activity.duration")}),e.jsx("p",{className:"text-gray-900 dark:text-white",children:M(c.duration)})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-gray-500 dark:text-gray-400",children:a("activity.server")}),e.jsx("p",{className:"text-gray-900 dark:text-white font-mono",children:c.server})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-gray-500 dark:text-gray-400",children:a("activity.tool")}),e.jsx("p",{className:"text-gray-900 dark:text-white font-mono",children:c.tool})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-gray-500 dark:text-gray-400",children:a("activity.status")}),e.jsx("span",{className:`px-2 py-1 rounded text-xs font-medium ${c.status==="success"?"bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-200":"bg-red-100 text-red-800 dark:bg-red-900 dark:text-red-200"}`,children:c.status==="success"?a("activity.statusSuccess"):a("activity.statusError")})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-gray-500 dark:text-gray-400",children:a("activity.group")}),e.jsx("p",{className:"text-gray-900 dark:text-white",children:c.group||"-"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-gray-500 dark:text-gray-400",children:a("activity.user")}),e.jsx("p",{className:"text-gray-900 dark:text-white",children:c.username||"-"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-gray-500 dark:text-gray-400",children:a("activity.sourceIp")}),e.jsx("p",{className:"text-gray-900 dark:text-white font-mono",children:c.sourceIp||"-"})]}),c.keyName&&e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-gray-500 dark:text-gray-400",children:a("activity.key")}),e.jsx("p",{className:"text-gray-900 dark:text-white",children:c.keyName})]})]}),c.errorMessage&&e.jsxs("div",{className:"mb-4",children:[e.jsx("label",{className:"block text-sm font-medium text-red-500 mb-1",children:a("activity.errorMessage")}),e.jsx("div",{className:"bg-red-50 dark:bg-red-900/20 rounded p-3 text-sm text-red-800 dark:text-red-200",children:c.errorMessage})]}),t&&e.jsxs("div",{className:"mb-4",children:[e.jsx("label",{className:"block text-sm font-medium text-gray-500 dark:text-gray-400 mb-1",children:a("activity.input")}),e.jsx("pre",{className:"bg-gray-100 dark:bg-gray-700 rounded p-3 text-sm overflow-x-auto max-h-64",children:typeof t=="string"?t:JSON.stringify(t,null,2)})]}),s&&e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-gray-500 dark:text-gray-400 mb-1",children:a("activity.output")}),e.jsx("pre",{className:"bg-gray-100 dark:bg-gray-700 rounded p-3 text-sm overflow-x-auto max-h-64",children:typeof s=="string"?s:JSON.stringify(s,null,2)})]})]})]})})};return e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-end justify-between gap-4 mb-6",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"hub-h1",children:a("activity.title")}),e.jsxs("p",{className:"hub-sub",children:[e.jsx("span",{className:"hub-num",children:(i==null?void 0:i.total)??m.length})," entries"]})]}),e.jsxs("button",{onClick:_,className:"hub-btn danger",children:[e.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-3.5 w-3.5",viewBox:"0 0 20 20",fill:"currentColor",children:e.jsx("path",{fillRule:"evenodd",d:"M9 2a1 1 0 00-.894.553L7.382 4H4a1 1 0 000 2v10a2 2 0 002 2h8a2 2 0 002-2V6a1 1 0 100-2h-3.382l-.724-1.447A1 1 0 0011 2H9zM7 8a1 1 0 012 0v6a1 1 0 11-2 0V8zm5-1a1 1 0 00-1 1v6a1 1 0 102 0V8a1 1 0 00-1-1z",clipRule:"evenodd"})}),a("activity.cleanup")]})]}),F&&e.jsxs("div",{className:"hub-card flex items-center justify-between gap-3 mb-4",style:{padding:"10px 14px",borderColor:"oklch(0.85 0.1 25)",background:"oklch(0.97 0.03 25)",color:"oklch(0.4 0.18 25)"},children:[e.jsx("span",{className:"truncate text-[13px]",children:F}),e.jsx("button",{className:"hub-icon-btn sm",onClick:()=>N(null),"aria-label":"close",children:e.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-3 w-3",viewBox:"0 0 20 20",fill:"currentColor",children:e.jsx("path",{fillRule:"evenodd",d:"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z",clipRule:"evenodd"})})})]}),f&&m.length===0?e.jsx("div",{className:"hub-card p-10 text-center",style:{color:"var(--hub-ink-3)"},children:a("app.loading")}):e.jsxs(e.Fragment,{children:[Q(),X(),Y(),e.jsxs("div",{className:"flex items-center mt-6",children:[e.jsx("div",{className:"flex-[2] text-sm text-gray-500 dark:text-gray-400",children:i&&a("common.showing",{start:(i.page-1)*i.limit+1,end:Math.min(i.page*i.limit,i.total),total:i.total})}),e.jsx("div",{className:"flex-[4] flex justify-center",children:i&&i.totalPages>1&&e.jsx(re,{currentPage:o,totalPages:i.totalPages,onPageChange:d,disabled:f})}),e.jsxs("div",{className:"flex-[2] flex items-center justify-end space-x-2",children:[e.jsxs("label",{htmlFor:"perPage",className:"text-sm text-gray-500 dark:text-gray-400",children:[a("common.itemsPerPage"),":"]}),e.jsxs("select",{id:"perPage",value:j,onChange:t=>{G(Number(t.target.value)),d(1)},disabled:f,className:"border border-gray-300 dark:border-gray-600 rounded p-1 text-sm dark:bg-gray-700 dark:text-white outline-none disabled:opacity-50 disabled:cursor-not-allowed",children:[e.jsx("option",{value:10,children:"10"}),e.jsx("option",{value:20,children:"20"}),e.jsx("option",{value:50,children:"50"}),e.jsx("option",{value:100,children:"100"})]})]})]})]}),Z()]})};export{he as default};
|
|
2
|
+
//# sourceMappingURL=ActivityPage-adLbSuxT.js.map
|