@axiom-lattice/gateway 5.0.0 → 6.0.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/README.md +0 -2
- package/dist/{sandboxOpenCredentialProvider-USIU7Z7H.mjs → chunk-GL7RV5L3.mjs} +29 -59
- package/dist/chunk-GL7RV5L3.mjs.map +1 -0
- package/dist/embed/{embed-page-AgentDetailSideApp-XCP4LY7Y.js → embed-page-AgentDetailSideApp-JYVZKSUU.js} +1 -1
- package/dist/embed/embed-page-AgentGovernanceWorkbench-SD2EHW2B.js +1 -0
- package/dist/embed/{embed-page-MessageGraph-D77CYFAG.js → embed-page-MessageGraph-GLQXKAVC.js} +1 -1
- package/dist/embed/{embed-page-ReactChart-TBDJOTZ5.js → embed-page-ReactChart-74MHCE2K.js} +1 -1
- package/dist/embed/{embed-page-TasksSideApp-BVCIAE24.js → embed-page-TasksSideApp-DA4LUTMD.js} +1 -1
- package/dist/embed/{embed-page-TeamWorkspace-JFEKNVFP.js → embed-page-TeamWorkspace-DUB3L6V6.js} +1 -1
- package/dist/embed/{embed-page-TopologyRuntimeView-42TN76MK.js → embed-page-TopologyRuntimeView-NFBHAICN.js} +1 -1
- package/dist/embed/{embed-page-WorkflowAutomationView-JLP4UHPP.js → embed-page-WorkflowAutomationView-43YGTXGF.js} +1 -1
- package/dist/embed/{embed-page-chunk-K2U3JD67.js → embed-page-chunk-BVSC3MSO.js} +1 -1
- package/dist/embed/{embed-page-chunk-5NJ3O2GK.js → embed-page-chunk-C4ZV4IXK.js} +2 -2
- package/dist/embed/{embed-page-chunk-I3OONX3N.js → embed-page-chunk-DWIBLGBW.js} +1 -1
- package/dist/embed/{embed-page-chunk-H64UEFHS.js → embed-page-chunk-GKHIPXZ2.js} +1 -1
- package/dist/embed/{embed-page-chunk-YYDZ6ZBV.js → embed-page-chunk-P477ZTUO.js} +5 -5
- package/dist/embed/{embed-page-chunk-GUSAII2D.js → embed-page-chunk-UHH575CK.js} +1 -1
- package/dist/embed/embed-page.js +1 -1
- package/dist/index.js +426 -621
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +68 -285
- package/dist/index.mjs.map +1 -1
- package/dist/{open-GNBMCHYA.mjs → open-MDC4VCR7.mjs} +18 -1
- package/dist/open-MDC4VCR7.mjs.map +1 -0
- package/dist/{resources-2L3KSUUU.mjs → resources-DAU5ZIPB.mjs} +2 -17
- package/dist/resources-DAU5ZIPB.mjs.map +1 -0
- package/dist/sandboxOpenCredentialProvider-AT227D4N.mjs +66 -0
- package/dist/sandboxOpenCredentialProvider-AT227D4N.mjs.map +1 -0
- package/package.json +4 -4
- package/dist/embed/embed-page-AgentGovernanceWorkbench-BBDKEIBI.js +0 -5
- package/dist/open-GNBMCHYA.mjs.map +0 -1
- package/dist/resources-2L3KSUUU.mjs.map +0 -1
- package/dist/sandboxOpenCredentialProvider-USIU7Z7H.mjs.map +0 -1
package/README.md
CHANGED
|
@@ -64,5 +64,3 @@ LatticeGateway.startAsHttpEndpoint({
|
|
|
64
64
|
- `POST /api/v1/run/stream` — Stream agent execution
|
|
65
65
|
- `GET /api/v1/run/:thread_id` — Get run status
|
|
66
66
|
- `GET /api/v1/run/:thread_id/messages` — Get message history
|
|
67
|
-
- `GET /api/config` — Get gateway configuration
|
|
68
|
-
- `PUT /api/config` — Update gateway configuration
|
|
@@ -1,13 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
init_openToken,
|
|
3
|
-
signOpenToken
|
|
4
|
-
} from "./chunk-EXPERMZR.mjs";
|
|
5
|
-
import "./chunk-NFEGQTCC.mjs";
|
|
6
|
-
|
|
7
|
-
// src/services/open/sandboxOpenCredentialProvider.ts
|
|
8
|
-
init_openToken();
|
|
9
|
-
import { registerSandboxOpenCredentialProvider } from "@axiom-lattice/core";
|
|
10
|
-
|
|
11
1
|
// src/services/open/sandboxOpenReflection.ts
|
|
12
2
|
import {
|
|
13
3
|
PluginRegistry,
|
|
@@ -18,6 +8,20 @@ import {
|
|
|
18
8
|
} from "@axiom-lattice/core";
|
|
19
9
|
var AGENT_REFLECTION_CACHE_TTL_MS = 6e4;
|
|
20
10
|
var cache = /* @__PURE__ */ new Map();
|
|
11
|
+
function invalidateAgentReflectionCache(tenantId, assistantId) {
|
|
12
|
+
if (!tenantId) {
|
|
13
|
+
cache.clear();
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
if (assistantId) {
|
|
17
|
+
cache.delete(`${tenantId}:${assistantId}`);
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
const prefix = `${tenantId}:`;
|
|
21
|
+
for (const key of cache.keys()) {
|
|
22
|
+
if (key.startsWith(prefix)) cache.delete(key);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
21
25
|
function cloneGrants(grants) {
|
|
22
26
|
return grants.map((grant) => ({
|
|
23
27
|
...grant,
|
|
@@ -141,6 +145,13 @@ function createDefaultAgentReflectionDeps(tenantId) {
|
|
|
141
145
|
}
|
|
142
146
|
var PLUGIN_REFLECTION_CACHE_TTL_MS = 6e4;
|
|
143
147
|
var pluginCache = /* @__PURE__ */ new Map();
|
|
148
|
+
function invalidatePluginReflectionCache(tenantId) {
|
|
149
|
+
if (!tenantId) {
|
|
150
|
+
pluginCache.clear();
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
pluginCache.delete(tenantId);
|
|
154
|
+
}
|
|
144
155
|
function mergeGrantsByDomain(grants) {
|
|
145
156
|
const order = [];
|
|
146
157
|
const items = /* @__PURE__ */ new Map();
|
|
@@ -222,54 +233,13 @@ function createDefaultPluginReflectionDeps() {
|
|
|
222
233
|
};
|
|
223
234
|
}
|
|
224
235
|
|
|
225
|
-
// src/services/open/sandboxOpenCredentialProvider.ts
|
|
226
|
-
var DEFAULT_SANDBOX_OPEN_GRANTS = [
|
|
227
|
-
{ domain: "sandbox", items: ["files_read", "files_list", "files_write", "shell_exec"] },
|
|
228
|
-
{ domain: "kb", items: ["search", "entries_read"] }
|
|
229
|
-
];
|
|
230
|
-
var MAX_SANDBOX_OPEN_DEPTH = 5;
|
|
231
|
-
function defaultReflection() {
|
|
232
|
-
return {
|
|
233
|
-
agent: (tenantId, assistantId) => resolveAgentOpenGrants(tenantId, assistantId, createDefaultAgentReflectionDeps(tenantId)),
|
|
234
|
-
plugin: (tenantId) => resolvePluginOpenGrants(tenantId, createDefaultPluginReflectionDeps())
|
|
235
|
-
};
|
|
236
|
-
}
|
|
237
|
-
function createSandboxOpenCredentialProvider(options) {
|
|
238
|
-
const reflection = options.reflection ?? defaultReflection();
|
|
239
|
-
return async (context) => {
|
|
240
|
-
if (!options.gatewayUrl) return void 0;
|
|
241
|
-
const depth = (context.depth ?? 0) + 1;
|
|
242
|
-
if (depth > MAX_SANDBOX_OPEN_DEPTH) {
|
|
243
|
-
options.onError?.(new Error("sandbox open credential depth exceeded"));
|
|
244
|
-
return void 0;
|
|
245
|
-
}
|
|
246
|
-
const reflected = context.assistantId ? await reflection.agent(context.tenantId, context.assistantId) : await reflection.plugin(context.tenantId);
|
|
247
|
-
const grants = mergeGrantsByDomain([...DEFAULT_SANDBOX_OPEN_GRANTS, ...reflected]);
|
|
248
|
-
const token = signOpenToken({
|
|
249
|
-
kind: "sandbox_token",
|
|
250
|
-
tenantId: context.tenantId,
|
|
251
|
-
workspaceId: context.workspaceId ?? "",
|
|
252
|
-
projectId: context.projectId ?? "",
|
|
253
|
-
sandboxName: context.sandboxName,
|
|
254
|
-
grants,
|
|
255
|
-
depth
|
|
256
|
-
});
|
|
257
|
-
return { gatewayUrl: options.gatewayUrl, token };
|
|
258
|
-
};
|
|
259
|
-
}
|
|
260
|
-
function registerGatewaySandboxOpenCredentialProvider(onError) {
|
|
261
|
-
return registerSandboxOpenCredentialProvider(
|
|
262
|
-
createSandboxOpenCredentialProvider({
|
|
263
|
-
gatewayUrl: process.env.PUBLIC_GATEWAY_URL?.trim() || void 0,
|
|
264
|
-
onError
|
|
265
|
-
}),
|
|
266
|
-
{ onError }
|
|
267
|
-
);
|
|
268
|
-
}
|
|
269
236
|
export {
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
237
|
+
invalidateAgentReflectionCache,
|
|
238
|
+
resolveAgentOpenGrants,
|
|
239
|
+
createDefaultAgentReflectionDeps,
|
|
240
|
+
invalidatePluginReflectionCache,
|
|
241
|
+
mergeGrantsByDomain,
|
|
242
|
+
resolvePluginOpenGrants,
|
|
243
|
+
createDefaultPluginReflectionDeps
|
|
274
244
|
};
|
|
275
|
-
//# sourceMappingURL=
|
|
245
|
+
//# sourceMappingURL=chunk-GL7RV5L3.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/services/open/sandboxOpenReflection.ts"],"sourcesContent":["/**\n * Agent Open-grant reflection (B1).\n *\n * Computes the extra Open grants a sandbox caller may use, derived from the\n * caller agent's own configuration (never from author declarations). The\n * invariant is: *what sandbox code can call ⊆ what the caller could already\n * call*. Grants are additive to the conservative B0 defaults and are bounded by\n * tenant-scoped resolution plus depth/rate/audit on the Open door.\n *\n * Mapping (`middleware[].enabled !== false`):\n * - middleware `type` whose plugin declares `meta.openExpose` → same-name domain\n * (identity; covers `task`, `document-parser`, and plugin types);\n * - `subAgents` (DeepAgentConfig) intersected with tenant-resolvable assistants\n * → the `agent` domain;\n * - anything else → ignored.\n *\n * Results are cached per `(tenantId, assistantId)` for\n * {@link AGENT_REFLECTION_CACHE_TTL_MS}. Any resolution error degrades to `[]`\n * so the caller falls back to the default grants rather than failing.\n */\n\nimport type { AssistantStore, OpenGrant } from \"@axiom-lattice/protocols\";\nimport {\n PluginRegistry,\n agentLatticeManager,\n ensureBuiltinAgentsForTenant,\n getSandboxPluginCatalog,\n getStoreLattice,\n} from \"@axiom-lattice/core\";\n\n/** The subset of an agent config relevant to Open-grant reflection. */\nexport interface SandboxOpenReflectionContext {\n middleware?: Array<{ type: string; enabled?: boolean; allowedTools?: string[] }>;\n subAgents?: string[];\n}\n\n/** Injectable sources for {@link resolveAgentOpenGrants}. */\nexport interface AgentReflectionDeps {\n /** Optional: hydrate stored/builtin/plugin agents for the tenant before resolution. */\n ensure?: (tenantId: string) => Promise<void>;\n /** Resolve an agent's config (middleware + subAgents) or undefined. */\n getAgentConfig?: (tenantId: string, assistantId: string) => SandboxOpenReflectionContext | undefined;\n /** Fallback: the assistant's persisted middleware. */\n getAssistantMiddleware?: (tenantId: string, assistantId: string) => Promise<Array<{ type: string; enabled?: boolean; allowedTools?: string[] }> | undefined>;\n /** Normalized exposed action names for a middleware/plugin type, or [] if none. */\n exposedActionsByType: (type: string) => string[];\n /** Assistant ids resolvable in the tenant (for subAgents filtering). */\n resolvableAssistants?: (tenantId: string) => Promise<Set<string>>;\n /** Clock seam for cache TTL tests. */\n now?: () => number;\n}\n\n/** How long a per-agent reflection result is reused. */\nexport const AGENT_REFLECTION_CACHE_TTL_MS = 60_000;\n\ninterface CacheEntry {\n grants: OpenGrant[];\n expiresAt: number;\n}\n\nconst cache = new Map<string, CacheEntry>();\n\n/** Clear the reflection cache. Test-only seam. */\nexport function clearAgentReflectionCacheForTests(): void {\n cache.clear();\n}\n\n/** Drop cached agent grants for a tenant (optionally a single assistant). */\nexport function invalidateAgentReflectionCache(tenantId?: string, assistantId?: string): void {\n if (!tenantId) {\n cache.clear();\n return;\n }\n if (assistantId) {\n cache.delete(`${tenantId}:${assistantId}`);\n return;\n }\n const prefix = `${tenantId}:`;\n for (const key of cache.keys()) {\n if (key.startsWith(prefix)) cache.delete(key);\n }\n}\n\nfunction cloneGrants(grants: OpenGrant[]): OpenGrant[] {\n return grants.map((grant) => ({\n ...grant,\n items: grant.items ? [...grant.items] : undefined,\n }));\n}\n\n/** Normalize `meta.openExpose` (`string[] | {name}[]`) to action names. */\nexport function normalizeOpenExpose(value: unknown): string[] {\n if (!Array.isArray(value)) return [];\n const out: string[] = [];\n for (const entry of value) {\n if (typeof entry === \"string\") {\n if (entry) out.push(entry);\n } else if (entry && typeof entry === \"object\") {\n const name = (entry as { name?: unknown }).name;\n if (typeof name === \"string\" && name) out.push(name);\n }\n }\n return out;\n}\n\n/** Extract middleware type list from an agent config / graphDefinition. */\nfunction extractMiddleware(\n container: unknown,\n): Array<{ type: string; enabled?: boolean; allowedTools?: string[] }> | undefined {\n if (!container || typeof container !== \"object\") return undefined;\n const raw = (container as { middleware?: unknown }).middleware;\n if (!Array.isArray(raw)) return undefined;\n const out: Array<{ type: string; enabled?: boolean; allowedTools?: string[] }> = [];\n for (const entry of raw) {\n if (!entry || typeof entry !== \"object\") continue;\n const type = (entry as { type?: unknown }).type;\n if (typeof type !== \"string\" || type.length === 0) continue;\n const enabled = (entry as { enabled?: unknown }).enabled;\n const rawAllowed = (entry as { allowedTools?: unknown }).allowedTools;\n const allowedTools = Array.isArray(rawAllowed)\n ? rawAllowed.filter((t): t is string => typeof t === \"string\" && t.length > 0)\n : undefined;\n out.push({ type, enabled: typeof enabled === \"boolean\" ? enabled : undefined, allowedTools });\n }\n return out;\n}\n\n/** Extract subAgent ids from an agent config. */\nfunction extractSubAgents(config: unknown): string[] | undefined {\n if (!config || typeof config !== \"object\") return undefined;\n const raw = (config as { subAgents?: unknown }).subAgents;\n if (!Array.isArray(raw)) return undefined;\n const out = raw.filter((id): id is string => typeof id === \"string\" && id.length > 0);\n return out.length > 0 ? out : undefined;\n}\n\nasync function computeGrants(\n tenantId: string,\n assistantId: string,\n deps: AgentReflectionDeps,\n): Promise<OpenGrant[]> {\n await deps.ensure?.(tenantId);\n\n let context = await deps.getAgentConfig?.(tenantId, assistantId);\n if (context === undefined) {\n const middleware = await deps.getAssistantMiddleware?.(tenantId, assistantId);\n if (middleware === undefined) return [];\n context = { middleware };\n }\n\n const byDomain = new Map<string, Set<string>>();\n const add = (domain: string, items: Iterable<string>): void => {\n let bucket = byDomain.get(domain);\n if (!bucket) {\n bucket = new Set<string>();\n byDomain.set(domain, bucket);\n }\n for (const item of items) bucket.add(item);\n };\n\n for (const entry of context.middleware ?? []) {\n if (!entry || entry.enabled === false) continue;\n if (typeof entry.type !== \"string\" || entry.type.length === 0) continue;\n let actions = deps.exposedActionsByType(entry.type);\n if (actions.length === 0) continue;\n const allowedTools = entry.allowedTools;\n if (Array.isArray(allowedTools) && allowedTools.length > 0) {\n const allowed = new Set(allowedTools);\n actions = actions.filter((action) => allowed.has(action));\n if (actions.length === 0) continue;\n }\n add(entry.type, actions);\n }\n\n const subAgents = context.subAgents ?? [];\n if (subAgents.length > 0 && deps.resolvableAssistants) {\n const resolvable = await deps.resolvableAssistants(tenantId);\n const kept = subAgents.filter(\n (id) => typeof id === \"string\" && id.length > 0 && resolvable.has(id),\n );\n if (kept.length > 0) add(\"agent\", kept);\n }\n\n return [...byDomain].map(([domain, items]) => ({ domain, items: [...items] }));\n}\n\n/**\n * Resolve the reflected Open grants for an agent caller.\n *\n * @param tenantId - Tenant scope (grants never cross tenants).\n * @param assistantId - Caller agent id.\n * @param deps - Resolvers; {@link createDefaultAgentReflectionDeps} wires the\n * real registries/store.\n * @returns Reflected grants (possibly `[]`); never throws.\n */\nexport async function resolveAgentOpenGrants(\n tenantId: string,\n assistantId: string,\n deps: AgentReflectionDeps,\n): Promise<OpenGrant[]> {\n try {\n const key = `${tenantId}:${assistantId}`;\n const now = deps.now ? deps.now() : Date.now();\n const hit = cache.get(key);\n if (hit && hit.expiresAt > now) return cloneGrants(hit.grants);\n\n const grants = await computeGrants(tenantId, assistantId, deps);\n cache.set(key, { grants, expiresAt: now + AGENT_REFLECTION_CACHE_TTL_MS });\n return cloneGrants(grants);\n } catch {\n return [];\n }\n}\n\n/**\n * Default reflection deps wired to the live registries.\n *\n * Reads the agent lattice manager (seeded with built-ins for the tenant),\n * falls back to the assistant store, resolves plugin exposes from\n * {@link PluginRegistry}, and filters subAgents against tenant-resolvable\n * assistants.\n *\n * @param tenantId - Tenant whose built-in/plugin agents are ensured.\n * @returns Deps for {@link resolveAgentOpenGrants}.\n */\nexport function createDefaultAgentReflectionDeps(tenantId: string): AgentReflectionDeps {\n ensureBuiltinAgentsForTenant(tenantId);\n return {\n ensure: (t) => agentLatticeManager.initializeStoredAssistantsForTenant(t),\n getAgentConfig: (t, assistantId) => {\n const config = agentLatticeManager.getAgentConfigWithTenant(t, assistantId);\n if (!config) return undefined;\n return {\n middleware: extractMiddleware(config),\n subAgents: extractSubAgents(config),\n };\n },\n getAssistantMiddleware: async (t, assistantId) => {\n const store = getStoreLattice(\"default\", \"assistant\").store as AssistantStore;\n const assistant = await store.getAssistantById(t, assistantId);\n return extractMiddleware(assistant?.graphDefinition);\n },\n exposedActionsByType: (type) => {\n const plugin = PluginRegistry.get(type);\n return plugin ? normalizeOpenExpose(plugin.meta.openExpose) : [];\n },\n resolvableAssistants: async (t) =>\n new Set(\n agentLatticeManager.getAllAgentLatticesByTenant(t).map((lattice) => lattice.config.key),\n ),\n };\n}\n\n/** How long a per-tenant plugin reflection result is reused. */\nexport const PLUGIN_REFLECTION_CACHE_TTL_MS = 60_000;\n\n/**\n * Injectable sources for {@link resolvePluginOpenGrants}.\n *\n * Plugin handlers have no `assistantId`, so reflection targets the tenant's\n * grantable Open catalog instead of a caller's own configuration.\n *\n * @property ensure - Optional: hydrate stored/builtin/plugin agents before reflecting the agent domain.\n * @property globalExposedDomains - Global plugin `openExpose` domains (tenant-agnostic).\n * @property tenantExposedDomains - Tenant sandbox plugin exposed domains.\n * @property resolvableAssistants - Tenant-resolvable assistant ids for the `agent` domain.\n * @property now - Clock seam for cache TTL tests.\n */\nexport interface PluginReflectionDeps {\n /** Optional: hydrate stored/builtin/plugin agents before reflecting the agent domain. */\n ensure?: (tenantId: string) => Promise<void>;\n globalExposedDomains?: () => OpenGrant[];\n tenantExposedDomains?: (tenantId: string) => Promise<OpenGrant[]>;\n resolvableAssistants?: (tenantId: string) => Promise<Set<string>>;\n now?: () => number;\n}\n\ninterface PluginCacheEntry {\n grants: OpenGrant[];\n expiresAt: number;\n}\n\nconst pluginCache = new Map<string, PluginCacheEntry>();\n\n/** Clear the plugin reflection cache. Test-only seam. */\nexport function clearPluginReflectionCacheForTests(): void {\n pluginCache.clear();\n}\n\n/** Drop cached plugin grants for a tenant (or every tenant). */\nexport function invalidatePluginReflectionCache(tenantId?: string): void {\n if (!tenantId) {\n pluginCache.clear();\n return;\n }\n pluginCache.delete(tenantId);\n}\n\n/**\n * Merge grants by domain, preserving first-seen domain order and unioning items.\n *\n * An absent/empty `items` list means \"every action in the domain\" per\n * {@link OpenGrant}, so a domain carrying one collapses to `{ domain }`.\n *\n * @param grants - Raw grants from every reflection source.\n * @returns One normalized grant per domain.\n */\nexport function mergeGrantsByDomain(grants: OpenGrant[]): OpenGrant[] {\n const order: string[] = [];\n const items = new Map<string, Set<string>>();\n const unrestricted = new Set<string>();\n\n for (const grant of grants) {\n if (!grant || typeof grant.domain !== \"string\" || grant.domain.length === 0) continue;\n if (!items.has(grant.domain)) {\n items.set(grant.domain, new Set());\n order.push(grant.domain);\n }\n if (!grant.items || grant.items.length === 0) {\n unrestricted.add(grant.domain);\n continue;\n }\n const bucket = items.get(grant.domain);\n if (!bucket) continue;\n for (const item of grant.items) {\n if (typeof item === \"string\" && item.length > 0) bucket.add(item);\n }\n }\n\n return order.map((domain) => {\n if (unrestricted.has(domain)) return { domain };\n return { domain, items: [...(items.get(domain) ?? [])] };\n });\n}\n\nasync function computePluginGrants(\n tenantId: string,\n deps: PluginReflectionDeps,\n): Promise<OpenGrant[]> {\n const grants: OpenGrant[] = [...(deps.globalExposedDomains?.() ?? [])];\n if (deps.tenantExposedDomains) {\n grants.push(...(await deps.tenantExposedDomains(tenantId)));\n }\n if (deps.resolvableAssistants) {\n const resolvable = await deps.resolvableAssistants(tenantId);\n if (resolvable.size > 0) {\n grants.push({ domain: \"agent\", items: [...resolvable] });\n }\n }\n return mergeGrantsByDomain(grants);\n}\n\n/**\n * Resolve the reflected Open grants for a plugin handler caller.\n *\n * Plugin handlers carry no `assistantId`, so grants come from the tenant's\n * grantable Open catalog (global plugin exposes ∪ tenant sandbox plugin\n * exposes) plus the `agent` domain for tenant-resolvable assistants. Results\n * are cached per tenant for {@link PLUGIN_REFLECTION_CACHE_TTL_MS}; any\n * resolution error degrades to `[]` so the caller falls back to the default\n * grants rather than failing.\n *\n * @param tenantId - Tenant scope (grants never cross tenants).\n * @param deps - Resolvers; {@link createDefaultPluginReflectionDeps} wires the\n * real registries/catalog.\n * @returns Reflected grants (possibly `[]`); never throws.\n */\nexport async function resolvePluginOpenGrants(\n tenantId: string,\n deps: PluginReflectionDeps,\n): Promise<OpenGrant[]> {\n try {\n const now = deps.now ? deps.now() : Date.now();\n const hit = pluginCache.get(tenantId);\n if (hit && hit.expiresAt > now) return cloneGrants(hit.grants);\n\n await deps.ensure?.(tenantId);\n const grants = await computePluginGrants(tenantId, deps);\n pluginCache.set(tenantId, { grants, expiresAt: now + PLUGIN_REFLECTION_CACHE_TTL_MS });\n return cloneGrants(grants);\n } catch {\n return [];\n }\n}\n\n/**\n * Map validated tenant plugin manifests to exposed Open grants.\n *\n * Only tools declaring `expose === true` become grant items; plugins with no\n * exposed tools are skipped. The domain is the plugin `type`.\n *\n * @param manifests - Validated tenant plugin manifests (or any shape with a\n * `type` and `tools[].name`/`tools[].expose`).\n * @returns One grant per plugin that exposes at least one tool.\n */\nexport function buildTenantExposedGrants(\n manifests: Array<{ type: string; tools?: Array<{ name: string; expose?: boolean }> }>,\n): OpenGrant[] {\n const grants: OpenGrant[] = [];\n for (const manifest of manifests) {\n const items = (manifest.tools ?? [])\n .filter((tool) => tool.expose === true)\n .map((tool) => tool.name);\n if (items.length > 0) grants.push({ domain: manifest.type, items });\n }\n return grants;\n}\n\n/**\n * Default plugin reflection deps wired to the live registries.\n *\n * Ensures stored/builtin/plugin agents for the tenant, then reads global plugin\n * exposes from {@link PluginRegistry}, tenant sandbox plugin exposes from\n * {@link getSandboxPluginCatalog} manifests, and tenant-resolvable assistants\n * from the agent lattice manager.\n *\n * @returns Deps for {@link resolvePluginOpenGrants}.\n */\nexport function createDefaultPluginReflectionDeps(): PluginReflectionDeps {\n return {\n ensure: (tenantId) => agentLatticeManager.initializeStoredAssistantsForTenant(tenantId),\n globalExposedDomains: () => {\n const grants: OpenGrant[] = [];\n for (const type of PluginRegistry.list()) {\n const plugin = PluginRegistry.get(type);\n const items = normalizeOpenExpose(plugin?.meta.openExpose);\n if (items.length > 0) grants.push({ domain: type, items });\n }\n return grants;\n },\n tenantExposedDomains: async (tenantId) => {\n const { manifests } = await getSandboxPluginCatalog().ensureLoaded(tenantId);\n return buildTenantExposedGrants(Object.values(manifests));\n },\n resolvableAssistants: async (tenantId) =>\n new Set(\n agentLatticeManager\n .getAllAgentLatticesByTenant(tenantId)\n .map((lattice) => lattice.config.key),\n ),\n };\n}\n"],"mappings":";AAsBA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAyBA,IAAM,gCAAgC;AAO7C,IAAM,QAAQ,oBAAI,IAAwB;AAQnC,SAAS,+BAA+B,UAAmB,aAA4B;AAC5F,MAAI,CAAC,UAAU;AACb,UAAM,MAAM;AACZ;AAAA,EACF;AACA,MAAI,aAAa;AACf,UAAM,OAAO,GAAG,QAAQ,IAAI,WAAW,EAAE;AACzC;AAAA,EACF;AACA,QAAM,SAAS,GAAG,QAAQ;AAC1B,aAAW,OAAO,MAAM,KAAK,GAAG;AAC9B,QAAI,IAAI,WAAW,MAAM,EAAG,OAAM,OAAO,GAAG;AAAA,EAC9C;AACF;AAEA,SAAS,YAAY,QAAkC;AACrD,SAAO,OAAO,IAAI,CAAC,WAAW;AAAA,IAC5B,GAAG;AAAA,IACH,OAAO,MAAM,QAAQ,CAAC,GAAG,MAAM,KAAK,IAAI;AAAA,EAC1C,EAAE;AACJ;AAGO,SAAS,oBAAoB,OAA0B;AAC5D,MAAI,CAAC,MAAM,QAAQ,KAAK,EAAG,QAAO,CAAC;AACnC,QAAM,MAAgB,CAAC;AACvB,aAAW,SAAS,OAAO;AACzB,QAAI,OAAO,UAAU,UAAU;AAC7B,UAAI,MAAO,KAAI,KAAK,KAAK;AAAA,IAC3B,WAAW,SAAS,OAAO,UAAU,UAAU;AAC7C,YAAM,OAAQ,MAA6B;AAC3C,UAAI,OAAO,SAAS,YAAY,KAAM,KAAI,KAAK,IAAI;AAAA,IACrD;AAAA,EACF;AACA,SAAO;AACT;AAGA,SAAS,kBACP,WACiF;AACjF,MAAI,CAAC,aAAa,OAAO,cAAc,SAAU,QAAO;AACxD,QAAM,MAAO,UAAuC;AACpD,MAAI,CAAC,MAAM,QAAQ,GAAG,EAAG,QAAO;AAChC,QAAM,MAA2E,CAAC;AAClF,aAAW,SAAS,KAAK;AACvB,QAAI,CAAC,SAAS,OAAO,UAAU,SAAU;AACzC,UAAM,OAAQ,MAA6B;AAC3C,QAAI,OAAO,SAAS,YAAY,KAAK,WAAW,EAAG;AACnD,UAAM,UAAW,MAAgC;AACjD,UAAM,aAAc,MAAqC;AACzD,UAAM,eAAe,MAAM,QAAQ,UAAU,IACzC,WAAW,OAAO,CAAC,MAAmB,OAAO,MAAM,YAAY,EAAE,SAAS,CAAC,IAC3E;AACJ,QAAI,KAAK,EAAE,MAAM,SAAS,OAAO,YAAY,YAAY,UAAU,QAAW,aAAa,CAAC;AAAA,EAC9F;AACA,SAAO;AACT;AAGA,SAAS,iBAAiB,QAAuC;AAC/D,MAAI,CAAC,UAAU,OAAO,WAAW,SAAU,QAAO;AAClD,QAAM,MAAO,OAAmC;AAChD,MAAI,CAAC,MAAM,QAAQ,GAAG,EAAG,QAAO;AAChC,QAAM,MAAM,IAAI,OAAO,CAAC,OAAqB,OAAO,OAAO,YAAY,GAAG,SAAS,CAAC;AACpF,SAAO,IAAI,SAAS,IAAI,MAAM;AAChC;AAEA,eAAe,cACb,UACA,aACA,MACsB;AACtB,QAAM,KAAK,SAAS,QAAQ;AAE5B,MAAI,UAAU,MAAM,KAAK,iBAAiB,UAAU,WAAW;AAC/D,MAAI,YAAY,QAAW;AACzB,UAAM,aAAa,MAAM,KAAK,yBAAyB,UAAU,WAAW;AAC5E,QAAI,eAAe,OAAW,QAAO,CAAC;AACtC,cAAU,EAAE,WAAW;AAAA,EACzB;AAEA,QAAM,WAAW,oBAAI,IAAyB;AAC9C,QAAM,MAAM,CAAC,QAAgB,UAAkC;AAC7D,QAAI,SAAS,SAAS,IAAI,MAAM;AAChC,QAAI,CAAC,QAAQ;AACX,eAAS,oBAAI,IAAY;AACzB,eAAS,IAAI,QAAQ,MAAM;AAAA,IAC7B;AACA,eAAW,QAAQ,MAAO,QAAO,IAAI,IAAI;AAAA,EAC3C;AAEA,aAAW,SAAS,QAAQ,cAAc,CAAC,GAAG;AAC5C,QAAI,CAAC,SAAS,MAAM,YAAY,MAAO;AACvC,QAAI,OAAO,MAAM,SAAS,YAAY,MAAM,KAAK,WAAW,EAAG;AAC/D,QAAI,UAAU,KAAK,qBAAqB,MAAM,IAAI;AAClD,QAAI,QAAQ,WAAW,EAAG;AAC1B,UAAM,eAAe,MAAM;AAC3B,QAAI,MAAM,QAAQ,YAAY,KAAK,aAAa,SAAS,GAAG;AAC1D,YAAM,UAAU,IAAI,IAAI,YAAY;AACpC,gBAAU,QAAQ,OAAO,CAAC,WAAW,QAAQ,IAAI,MAAM,CAAC;AACxD,UAAI,QAAQ,WAAW,EAAG;AAAA,IAC5B;AACA,QAAI,MAAM,MAAM,OAAO;AAAA,EACzB;AAEA,QAAM,YAAY,QAAQ,aAAa,CAAC;AACxC,MAAI,UAAU,SAAS,KAAK,KAAK,sBAAsB;AACrD,UAAM,aAAa,MAAM,KAAK,qBAAqB,QAAQ;AAC3D,UAAM,OAAO,UAAU;AAAA,MACrB,CAAC,OAAO,OAAO,OAAO,YAAY,GAAG,SAAS,KAAK,WAAW,IAAI,EAAE;AAAA,IACtE;AACA,QAAI,KAAK,SAAS,EAAG,KAAI,SAAS,IAAI;AAAA,EACxC;AAEA,SAAO,CAAC,GAAG,QAAQ,EAAE,IAAI,CAAC,CAAC,QAAQ,KAAK,OAAO,EAAE,QAAQ,OAAO,CAAC,GAAG,KAAK,EAAE,EAAE;AAC/E;AAWA,eAAsB,uBACpB,UACA,aACA,MACsB;AACtB,MAAI;AACF,UAAM,MAAM,GAAG,QAAQ,IAAI,WAAW;AACtC,UAAM,MAAM,KAAK,MAAM,KAAK,IAAI,IAAI,KAAK,IAAI;AAC7C,UAAM,MAAM,MAAM,IAAI,GAAG;AACzB,QAAI,OAAO,IAAI,YAAY,IAAK,QAAO,YAAY,IAAI,MAAM;AAE7D,UAAM,SAAS,MAAM,cAAc,UAAU,aAAa,IAAI;AAC9D,UAAM,IAAI,KAAK,EAAE,QAAQ,WAAW,MAAM,8BAA8B,CAAC;AACzE,WAAO,YAAY,MAAM;AAAA,EAC3B,QAAQ;AACN,WAAO,CAAC;AAAA,EACV;AACF;AAaO,SAAS,iCAAiC,UAAuC;AACtF,+BAA6B,QAAQ;AACrC,SAAO;AAAA,IACL,QAAQ,CAAC,MAAM,oBAAoB,oCAAoC,CAAC;AAAA,IACxE,gBAAgB,CAAC,GAAG,gBAAgB;AAClC,YAAM,SAAS,oBAAoB,yBAAyB,GAAG,WAAW;AAC1E,UAAI,CAAC,OAAQ,QAAO;AACpB,aAAO;AAAA,QACL,YAAY,kBAAkB,MAAM;AAAA,QACpC,WAAW,iBAAiB,MAAM;AAAA,MACpC;AAAA,IACF;AAAA,IACA,wBAAwB,OAAO,GAAG,gBAAgB;AAChD,YAAM,QAAQ,gBAAgB,WAAW,WAAW,EAAE;AACtD,YAAM,YAAY,MAAM,MAAM,iBAAiB,GAAG,WAAW;AAC7D,aAAO,kBAAkB,WAAW,eAAe;AAAA,IACrD;AAAA,IACA,sBAAsB,CAAC,SAAS;AAC9B,YAAM,SAAS,eAAe,IAAI,IAAI;AACtC,aAAO,SAAS,oBAAoB,OAAO,KAAK,UAAU,IAAI,CAAC;AAAA,IACjE;AAAA,IACA,sBAAsB,OAAO,MAC3B,IAAI;AAAA,MACF,oBAAoB,4BAA4B,CAAC,EAAE,IAAI,CAAC,YAAY,QAAQ,OAAO,GAAG;AAAA,IACxF;AAAA,EACJ;AACF;AAGO,IAAM,iCAAiC;AA4B9C,IAAM,cAAc,oBAAI,IAA8B;AAQ/C,SAAS,gCAAgC,UAAyB;AACvE,MAAI,CAAC,UAAU;AACb,gBAAY,MAAM;AAClB;AAAA,EACF;AACA,cAAY,OAAO,QAAQ;AAC7B;AAWO,SAAS,oBAAoB,QAAkC;AACpE,QAAM,QAAkB,CAAC;AACzB,QAAM,QAAQ,oBAAI,IAAyB;AAC3C,QAAM,eAAe,oBAAI,IAAY;AAErC,aAAW,SAAS,QAAQ;AAC1B,QAAI,CAAC,SAAS,OAAO,MAAM,WAAW,YAAY,MAAM,OAAO,WAAW,EAAG;AAC7E,QAAI,CAAC,MAAM,IAAI,MAAM,MAAM,GAAG;AAC5B,YAAM,IAAI,MAAM,QAAQ,oBAAI,IAAI,CAAC;AACjC,YAAM,KAAK,MAAM,MAAM;AAAA,IACzB;AACA,QAAI,CAAC,MAAM,SAAS,MAAM,MAAM,WAAW,GAAG;AAC5C,mBAAa,IAAI,MAAM,MAAM;AAC7B;AAAA,IACF;AACA,UAAM,SAAS,MAAM,IAAI,MAAM,MAAM;AACrC,QAAI,CAAC,OAAQ;AACb,eAAW,QAAQ,MAAM,OAAO;AAC9B,UAAI,OAAO,SAAS,YAAY,KAAK,SAAS,EAAG,QAAO,IAAI,IAAI;AAAA,IAClE;AAAA,EACF;AAEA,SAAO,MAAM,IAAI,CAAC,WAAW;AAC3B,QAAI,aAAa,IAAI,MAAM,EAAG,QAAO,EAAE,OAAO;AAC9C,WAAO,EAAE,QAAQ,OAAO,CAAC,GAAI,MAAM,IAAI,MAAM,KAAK,CAAC,CAAE,EAAE;AAAA,EACzD,CAAC;AACH;AAEA,eAAe,oBACb,UACA,MACsB;AACtB,QAAM,SAAsB,CAAC,GAAI,KAAK,uBAAuB,KAAK,CAAC,CAAE;AACrE,MAAI,KAAK,sBAAsB;AAC7B,WAAO,KAAK,GAAI,MAAM,KAAK,qBAAqB,QAAQ,CAAE;AAAA,EAC5D;AACA,MAAI,KAAK,sBAAsB;AAC7B,UAAM,aAAa,MAAM,KAAK,qBAAqB,QAAQ;AAC3D,QAAI,WAAW,OAAO,GAAG;AACvB,aAAO,KAAK,EAAE,QAAQ,SAAS,OAAO,CAAC,GAAG,UAAU,EAAE,CAAC;AAAA,IACzD;AAAA,EACF;AACA,SAAO,oBAAoB,MAAM;AACnC;AAiBA,eAAsB,wBACpB,UACA,MACsB;AACtB,MAAI;AACF,UAAM,MAAM,KAAK,MAAM,KAAK,IAAI,IAAI,KAAK,IAAI;AAC7C,UAAM,MAAM,YAAY,IAAI,QAAQ;AACpC,QAAI,OAAO,IAAI,YAAY,IAAK,QAAO,YAAY,IAAI,MAAM;AAE7D,UAAM,KAAK,SAAS,QAAQ;AAC5B,UAAM,SAAS,MAAM,oBAAoB,UAAU,IAAI;AACvD,gBAAY,IAAI,UAAU,EAAE,QAAQ,WAAW,MAAM,+BAA+B,CAAC;AACrF,WAAO,YAAY,MAAM;AAAA,EAC3B,QAAQ;AACN,WAAO,CAAC;AAAA,EACV;AACF;AAYO,SAAS,yBACd,WACa;AACb,QAAM,SAAsB,CAAC;AAC7B,aAAW,YAAY,WAAW;AAChC,UAAM,SAAS,SAAS,SAAS,CAAC,GAC/B,OAAO,CAAC,SAAS,KAAK,WAAW,IAAI,EACrC,IAAI,CAAC,SAAS,KAAK,IAAI;AAC1B,QAAI,MAAM,SAAS,EAAG,QAAO,KAAK,EAAE,QAAQ,SAAS,MAAM,MAAM,CAAC;AAAA,EACpE;AACA,SAAO;AACT;AAYO,SAAS,oCAA0D;AACxE,SAAO;AAAA,IACL,QAAQ,CAAC,aAAa,oBAAoB,oCAAoC,QAAQ;AAAA,IACtF,sBAAsB,MAAM;AAC1B,YAAM,SAAsB,CAAC;AAC7B,iBAAW,QAAQ,eAAe,KAAK,GAAG;AACxC,cAAM,SAAS,eAAe,IAAI,IAAI;AACtC,cAAM,QAAQ,oBAAoB,QAAQ,KAAK,UAAU;AACzD,YAAI,MAAM,SAAS,EAAG,QAAO,KAAK,EAAE,QAAQ,MAAM,MAAM,CAAC;AAAA,MAC3D;AACA,aAAO;AAAA,IACT;AAAA,IACA,sBAAsB,OAAO,aAAa;AACxC,YAAM,EAAE,UAAU,IAAI,MAAM,wBAAwB,EAAE,aAAa,QAAQ;AAC3E,aAAO,yBAAyB,OAAO,OAAO,SAAS,CAAC;AAAA,IAC1D;AAAA,IACA,sBAAsB,OAAO,aAC3B,IAAI;AAAA,MACF,oBACG,4BAA4B,QAAQ,EACpC,IAAI,CAAC,YAAY,QAAQ,OAAO,GAAG;AAAA,IACxC;AAAA,EACJ;AACF;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{k as L}from"./embed-page-chunk-C4ZV4IXK.js";import"./embed-page-chunk-BVSC3MSO.js";import"./embed-page-chunk-GKHIPXZ2.js";import"./embed-page-chunk-UHH575CK.js";import"./embed-page-chunk-WTOAQDQN.js";import"./embed-page-chunk-V2GBFWLG.js";import"./embed-page-chunk-S4XZPBRM.js";import"./embed-page-chunk-DWIBLGBW.js";import{Da as P,pb as E}from"./embed-page-chunk-P477ZTUO.js";import{D as F,r as T}from"./embed-page-chunk-2PFKLMTR.js";import{a as C}from"./embed-page-chunk-QV7QAJ4N.js";import"./embed-page-chunk-VW3NF5NT.js";import"./embed-page-chunk-QULNM5O2.js";import{U as p,W as m,oa as b,va as I,xa as c}from"./embed-page-chunk-MHGVD4EV.js";import{a as N}from"./embed-page-chunk-R5QL57JJ.js";import"./embed-page-chunk-QOWM3LMZ.js";import"./embed-page-chunk-EUOOO2LS.js";import"./embed-page-chunk-5JDQ456X.js";import{f as u}from"./embed-page-chunk-QBTAJ2YI.js";var n=u(N());var t=u(C()),O={component_key:"workspace_assistants",data:{}},$=d=>{let i=d;if(typeof d=="string")try{i=JSON.parse(d)}catch{return{}}return i!==null&&typeof i=="object"&&!Array.isArray(i)?i:{}},W=({data:d})=>{let{assistantId:i,initialTab:R}=d??{},{get:f,put:y,del:A}=F(),e=T(),v=P(),[g,w]=(0,n.useState)(null),[B,h]=(0,n.useState)([]),[_,S]=(0,n.useState)(!1),[j,k]=(0,n.useState)(null),l=(0,n.useCallback)(()=>{v({...O,message:e("governance.detail.listCardMessage")})},[v,e]),o=(0,n.useCallback)(async()=>{S(!0),k(null);try{let s=(await f("/api/assistants")).data?.records??[];h(s),w(s.find(r=>r.id===i)??null)}catch{k(e("governance.detail.loadFailed"))}finally{S(!1)}},[f,i,e]);(0,n.useEffect)(()=>{i&&o()},[o,i]);let x=(0,n.useCallback)(async(a,s)=>{let r=$(a.graphDefinition),D;try{D=await y(`/api/assistants/${a.id}`,{name:s.name!==void 0?s.name:a.name,description:s.description!==void 0?s.description:a.description,graphDefinition:{...r,...s}})}catch(G){throw c.error(e("governance.detail.saveFailed")),G}if(!D.success)throw c.error(e("governance.detail.saveFailed")),new Error("Failed to save agent");c.success(e("common.saved")),await o()},[y,o,e]),z=(0,n.useCallback)(a=>{w(s=>s&&s.id===a.id?a:s),h(s=>s.map(r=>r.id===a.id?a:r))},[]),U=(0,n.useCallback)(async a=>{if(!(await A(`/api/assistants/${a}`)).success)throw new Error("Failed to delete agent");c.success(e("governance.detail.deleted")),l()},[A,l,e]);return i?g?(0,t.jsx)("div",{style:{height:"100%",overflow:"auto"},children:(0,t.jsx)(E,{children:(0,t.jsx)(L,{assistant:g,allAssistants:B,onBack:l,onDeleted:U,onSave:x,onAssistantUpdated:z,onAgentListInvalidated:()=>void o(),initialTab:R})},g.id)}):_?(0,t.jsx)("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",height:"100%"},children:(0,t.jsx)(I,{})}):j?(0,t.jsx)("div",{style:{padding:24},children:(0,t.jsx)(p,{type:"error",showIcon:!0,message:e("governance.detail.loadFailed"),"data-testid":"detail-error",action:(0,t.jsxs)(b,{children:[(0,t.jsx)(m,{size:"small",onClick:()=>void o(),children:e("common.retry")}),(0,t.jsx)(m,{size:"small",type:"primary",onClick:l,children:e("governance.detail.backToList")})]})})}):(0,t.jsx)("div",{style:{padding:24},children:(0,t.jsx)(p,{type:"warning",showIcon:!0,message:e("governance.detail.notFound"),"data-testid":"detail-not-found",action:(0,t.jsx)(m,{size:"small",type:"primary",onClick:l,children:e("governance.detail.backToList")})})}):(0,t.jsx)("div",{style:{padding:24},children:(0,t.jsx)(p,{type:"warning",showIcon:!0,message:e("governance.detail.missingId"),"data-testid":"detail-missing-id"})})};export{W as AgentDetailSideApp};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as Ie,b as De,c as kt,d as xt,e as wt,f as Tt,g as It,h as St,i as Ft,j as Rt,k as Dt}from"./embed-page-chunk-C4ZV4IXK.js";import{a as Ve}from"./embed-page-chunk-BVSC3MSO.js";import"./embed-page-chunk-GKHIPXZ2.js";import"./embed-page-chunk-UHH575CK.js";import"./embed-page-chunk-WTOAQDQN.js";import{b as Oe,e as _e,f as ft,g as yt,h as ht,i as Ct,l as At,m as bt}from"./embed-page-chunk-V2GBFWLG.js";import{a as ct,b as dt,c as gt,d as pt,e as mt}from"./embed-page-chunk-SV2BM3WO.js";import"./embed-page-chunk-S4XZPBRM.js";import"./embed-page-chunk-DWIBLGBW.js";import{$ as it,Aa as lt,C as tt,Da as ut,F as nt,L as at,Oa as Ne,X as ot,g as Te,ka as st,pb as vt,s as et,sa as rt}from"./embed-page-chunk-P477ZTUO.js";import{D as me,r as z,y as Ze}from"./embed-page-chunk-2PFKLMTR.js";import{a as E}from"./embed-page-chunk-QV7QAJ4N.js";import"./embed-page-chunk-VW3NF5NT.js";import"./embed-page-chunk-QULNM5O2.js";import{$b as Re,Cb as Je,Fa as $e,Ia as we,Ja as We,La as X,Ua as Ye,W,_ as xe,aa as je,ea as Fe,ka as Be,la as Ue,lc as Qe,ma as qe,oa as He,ra as D,ta as _,wa as Le,xa as w,xc as Xe,ya as pe}from"./embed-page-chunk-MHGVD4EV.js";import{a as ge}from"./embed-page-chunk-R5QL57JJ.js";import"./embed-page-chunk-QOWM3LMZ.js";import"./embed-page-chunk-EUOOO2LS.js";import"./embed-page-chunk-5JDQ456X.js";import{f as I}from"./embed-page-chunk-QBTAJ2YI.js";var h=I(ge());var te=I(ge());var Z=I(ge());var Pt=I(ge());var se=I(E()),Mt=60,Et=72,Ge=(0,Pt.memo)(({data:i})=>{let l=Ie(i.type),f=Math.min(12+Math.sqrt(i.subAgentCount)*10,48);return(0,se.jsxs)("div",{style:{display:"flex",flexDirection:"column",alignItems:"center"},children:[(0,se.jsx)(_e,{type:"target",position:Oe.Top,style:{left:"50%",top:"50%",transform:"translate(-50%, -50%)",background:"transparent",border:"none",width:0,height:0},isConnectable:!1}),(0,se.jsx)("div",{title:i.label,style:{width:f,height:f,borderRadius:"50%",background:De(l.color),display:"flex",alignItems:"center",justifyContent:"center",color:"#fff",fontSize:Math.max(10,f*.4),fontWeight:600,cursor:"pointer",boxShadow:"0 2px 8px rgba(0,0,0,0.15)"},children:i.label.charAt(0).toUpperCase()}),(0,se.jsx)("div",{style:{fontSize:11,maxWidth:120,textAlign:"center",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",marginTop:4},children:i.label}),(0,se.jsx)(_e,{type:"source",position:Oe.Top,style:{left:"50%",top:"50%",transform:"translate(-50%, -50%)",background:"transparent",border:"none",width:0,height:0},isConnectable:!1})]})});Ge.displayName="AgentGraphNode";var ee=I(E()),en=({assistants:i,onNodeClick:l})=>{let[f,c,u]=ht([]),[o,t,C]=Ct([]),[r,m]=(0,Z.useState)(null),S=(0,Z.useMemo)(()=>({agent:Ge}),[]),M=(0,Z.useMemo)(()=>wt(i),[i]);(0,Z.useEffect)(()=>{let k=M.nodes.map(g=>({id:g.id})),R=M.edges.map(g=>({source:g.source,target:g.target})),P=new Map(M.nodes.map(g=>[g.id,g])),$=pt(k).force("link",gt(R).id(g=>g.id).distance(80)).force("charge",mt().strength(-220)).force("center",ct(0,0)).force("collide",dt(45)).stop();for(let g=0;g<300;g++)$.tick();let j=k.map(g=>({id:g.id,type:"agent",data:P.get(g.id),position:{x:g.x-Mt/2,y:g.y-Et/2}})),a=M.edges.map(g=>({id:`e${g.source}-${g.target}`,source:g.source,target:g.target,style:{stroke:"#1677ff",strokeWidth:2},type:"straight"}));c(j),t(a)},[M,c,t]);let H=(0,Z.useMemo)(()=>r===null?f:f.map(k=>{let R=k.id===r||o.some(P=>P.source===r&&P.target===k.id||P.target===r&&P.source===k.id);return{...k,style:{opacity:R?1:.2,transition:"opacity 0.2s ease"}}}),[f,o,r]),d=(0,Z.useMemo)(()=>r===null?o.map(k=>({...k,style:{stroke:"#1677ff",strokeWidth:1.5,opacity:.25,transition:"opacity 0.2s ease"}})):o.map(k=>{let R=k.source===r||k.target===r;return{...k,style:{stroke:"#1677ff",strokeWidth:R?2.5:1,opacity:R?1:.04,transition:"opacity 0.2s ease"}}}),[o,r]);return(0,ee.jsx)("div",{style:{width:"100%",height:"100%",background:"#fafafa",position:"relative"},children:(0,ee.jsxs)(yt,{nodes:H,edges:d,onNodesChange:u,onEdgesChange:C,onNodeMouseEnter:(k,R)=>m(R.id),onNodeMouseLeave:()=>m(null),onNodeClick:(k,R)=>l?.(String(R.id)),nodeTypes:S,fitView:!0,fitViewOptions:{padding:.25},children:[(0,ee.jsx)(At,{color:"#eee",gap:20}),(0,ee.jsx)(bt,{})]})})},Kt=i=>(0,ee.jsx)(ft,{children:(0,ee.jsx)(en,{...i})});var T=I(E()),tn=[{key:"all",labelKey:"governance.list.tab.all"},{key:"capability",labelKey:"governance.list.tab.capability"},{key:"orchestrator",labelKey:"governance.list.tab.orchestrator"},{key:"team",labelKey:"governance.list.tab.team"},{key:"workflow",labelKey:"governance.list.tab.workflow"}],Bt=({items:i,assistants:l=[],loading:f,onItemClick:c,onOpenPlayground:u,onOpenEval:o,onCreate:t,onDelete:C})=>{let r=z(),[m,S]=(0,te.useState)("all"),[M,H]=(0,te.useState)(null),[d,k]=(0,te.useState)(null),R=(0,te.useMemo)(()=>{let a=new Set;return i.forEach(g=>g.tags.forEach(U=>a.add(U))),Array.from(a).map(g=>({value:g,label:g}))},[i]),P=(0,te.useMemo)(()=>i.filter(a=>!(m!=="all"&&a.type!==m||M&&!a.tags.includes(M)||d&&a.status!==d)),[i,m,M,d]),$=[{key:"edit",icon:it,label:r("common.edit"),onClick:a=>c(a.id)},{key:"playground",icon:et,label:r("governance.list.action.playground"),onClick:a=>u(a.id)},{key:"eval",icon:nt,label:r("governance.list.action.eval"),onClick:a=>o(a.id)}];C&&$.push({key:"delete",icon:st,label:r("common.delete"),danger:!0,onClick:a=>C(a.id)});let j=(0,te.useMemo)(()=>[{mode:"graph",icon:ot,label:r("governance.list.viewMode.graph"),render:()=>(0,T.jsx)(Kt,{assistants:l,onNodeClick:c})}],[l,c,r]);return(0,T.jsxs)(T.Fragment,{children:[(0,T.jsx)("span",{"data-testid":"agent-list-state","data-loading":String(f),"data-count":P.length,hidden:!0,"aria-hidden":"true"}),(0,T.jsx)(lt,{title:r("governance.list.title"),itemName:"common.item.agent",items:P,loading:f,keyExtractor:a=>a.id,tabs:tn.map(a=>({key:a.key,label:r(a.labelKey)})),activeTab:m,onTabChange:a=>S(a),headerLeft:(0,T.jsxs)("div",{style:{display:"flex",gap:8,alignItems:"center"},children:[(0,T.jsx)(Ne,{value:M,onChange:H,options:R,placeholder:r("governance.list.filter.domain"),allLabel:r("governance.list.filter.allDomains")}),(0,T.jsx)(Ne,{value:d,onChange:k,options:[{value:"enabled",label:r("governance.list.status.enabled")},{value:"draft",label:r("governance.list.status.draft")},{value:"disabled",label:r("governance.list.status.disabled")}],placeholder:r("governance.list.filter.status"),allLabel:r("governance.list.filter.allStatuses")})]}),renderIcon:a=>{let g=De(Ie(a.type).color);return(0,T.jsx)("div",{title:r("governance.list.typeIconTitle",{type:a.type}),style:{width:32,height:32,borderRadius:8,background:`${g}1A`,color:g,display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0},children:(0,T.jsx)(Te,{size:18})})},renderPrimary:a=>(0,T.jsx)("span",{"data-testid":"agent-name","data-agent-id":a.id,children:a.name}),renderSecondary:a=>a.description||void 0,renderDetails:a=>(0,T.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",gap:8,flexWrap:"wrap"},children:[(0,T.jsxs)("div",{style:{display:"flex",gap:4,flexWrap:"wrap",alignItems:"center"},children:[a.tags.map(g=>(0,T.jsx)(we,{color:"magenta",style:{margin:0,borderRadius:10,border:"none"},children:g},g)),(0,T.jsx)(we,{color:Ie(a.type).color,style:{margin:0,borderRadius:10,border:"none"},children:a.type})]}),(0,T.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,flexShrink:0},children:[(0,T.jsx)(je,{title:r("governance.list.statusTooltip",{status:a.status}),children:(0,T.jsx)("span",{style:{width:8,height:8,borderRadius:"50%",background:kt(a.status),display:"inline-block",cursor:"help"}})}),(0,T.jsx)("span",{style:{fontSize:12,color:"#8c8c8c"},children:a.version})]})]}),itemActions:$,actionsStyle:"icon",actionsPosition:"hover",onItemClick:a=>c(a.id),createLabel:r("governance.list.create"),onCreateClick:t,viewModeExtensions:j,emptyIcon:(0,T.jsx)(Te,{size:48,style:{opacity:.5}}),emptyTitle:r("governance.list.emptyTitle"),emptyDescription:r("governance.list.emptyDescription")})]})};var A=I(ge());var re=I(ge());var ue=I(E()),{Text:nn}=X,Lt=({onSelect:i,value:l,placeholder:f})=>{let c=z(),u=f??c("chatConfig.parentAgent.selectPlaceholder"),[o,t]=(0,re.useState)([]),[C,r]=(0,re.useState)(!1),{get:m}=me(),S=(0,re.useCallback)(async()=>{r(!0);try{let d=await m("/api/assistants");d.success&&t(d.data?.records||[])}catch(d){console.error("Failed to fetch assistants:",d)}finally{r(!1)}},[m]);return(0,re.useEffect)(()=>{S()},[S]),(0,ue.jsx)(xe,{showSearch:!0,allowClear:!0,value:l,placeholder:u,loading:C,onChange:d=>{if(!d){i(null);return}let k=o.find(R=>R.id===d);i(k||null)},onDropdownVisibleChange:d=>{d&&S()},optionFilterProp:"label",style:{width:"100%"},options:o.map(d=>({value:d.id,label:d.name||d.id,description:d.description})),optionRender:d=>(0,ue.jsxs)("div",{children:[(0,ue.jsx)("div",{children:d.label}),d.data.description&&(0,ue.jsx)(nn,{type:"secondary",style:{fontSize:12},children:d.data.description})]})})};var L=I(E()),{Text:Nt}=X,Ot=({subAgentKeys:i,decisions:l,onChange:f})=>{let{token:c}=We.useToken(),u=z(),o=(C,r)=>{let m=l.map(S=>S.originalKey===C?{...S,clone:r,cloneKey:r?`${C}_clone`:void 0}:S);f(m)},t=(C,r)=>{let m=l.map(S=>S.originalKey===C?{...S,cloneKey:r}:S);f(m)};return i.length===0?null:(0,L.jsxs)("div",{children:[(0,L.jsx)(Nt,{type:"secondary",style:{display:"block",marginBottom:8},children:u("chatConfig.subAgentInherit.hint")}),(0,L.jsx)(Le,{size:"small",bordered:!0,dataSource:l,style:{borderRadius:c.borderRadius},renderItem:C=>(0,L.jsxs)(Le.Item,{style:{display:"flex",flexDirection:"column",alignItems:"stretch",gap:8,padding:"8px 16px"},children:[(0,L.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:[(0,L.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8},children:[C.clone?(0,L.jsx)(Re,{style:{color:c.colorPrimary}}):(0,L.jsx)(Qe,{style:{color:c.colorTextSecondary}}),(0,L.jsx)(Nt,{style:{fontFamily:"monospace"},children:C.originalKey})]}),(0,L.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8},children:[(0,L.jsx)(we,{color:C.clone?"blue":"default",children:C.clone?u("chatConfig.subAgentInherit.clone"):u("chatConfig.subAgentInherit.reuse")}),(0,L.jsx)($e,{size:"small",checked:C.clone,onChange:r=>o(C.originalKey,r)})]})]}),C.clone&&(0,L.jsx)(_,{size:"small",placeholder:u("chatConfig.subAgentInherit.cloneKeyPlaceholder"),value:C.cloneKey,onChange:r=>t(C.originalKey,r.target.value),style:{fontFamily:"monospace",fontSize:12},addonBefore:u("chatConfig.keyValue.key")})]})})]})};function _t(i,l){return i.mode!=="local"||i.templateKey||typeof i.executable=="string"&&i.executable.trim().length>0?null:l?l("chat.config.executableRequired"):"Choose a template or enter a custom executable"}var n=I(E()),{TextArea:Vt}=_,{Text:ne}=X,Gt="/.well-known/agent-card.json",an=[{value:"http://",label:"http://"},{value:"https://",label:"https://"}],on={react:"chatConfig.createAssistant.typeDesc.react",deep_agent:"chatConfig.createAssistant.typeDesc.deepAgent",team:"chatConfig.createAssistant.typeDesc.team",processing:"chatConfig.createAssistant.typeDesc.processing",a2a_remote:"chatConfig.createAssistant.typeDesc.a2aRemote"};function zt(i,l,f="https://"){let c=String(i??"").trim();if(!c)return"";let u=l==="http://"||l==="https://"?l:f,t=(/^https?:\/\//i.test(c)?c:`${u}${c.replace(/^\/+/,"")}`).replace(/\/+$/,"");return t.endsWith(Gt)?t:`${t}${Gt}`}function sn(i){try{return new URL(i).port||void 0}catch{return}}function rn(i){return i.some(l=>l==="--port"||l==="-p"||/^--port=/.test(l)||/^-p=/.test(l))}function jt(i,l){let f=[...i.args],c=sn(l);return c&&!rn(f)&&f.push("--port",c),{...i,args:f,...i.env?{env:{...i.env}}:{}}}var Ut=({open:i,onCancel:l,onSuccess:f,initialMode:c,initialValues:u})=>{let[o]=D.useForm(),t=z(),[C,r]=(0,A.useState)(!1),[m,S]=(0,A.useState)("learn"),[M,H]=(0,A.useState)(""),[d,k]=(0,A.useState)(null),[R,P]=(0,A.useState)([]),$=D.useWatch("type",o)||"react",j=$==="a2a_remote",[a,g]=(0,A.useState)("remote"),[U,fe]=(0,A.useState)(void 0),[le,ye]=(0,A.useState)([]),[Se,ce]=(0,A.useState)(!1),ae=(0,A.useRef)(0),[oe,ie]=(0,A.useState)(!1),[Pe,Y]=(0,A.useState)(!1),{get:N,post:J,put:he}=me(),Me=Ze("agent-architect"),{workspaceId:Ce,trainingProjects:Q,loading:de}=rt(),[Ee,Ae]=(0,A.useState)(null),Ke=JSON.stringify(u??null),K=Q.find(e=>e.id===Ee)??Q[0]??null,[be,ve]=(0,A.useState)([]),p=(0,A.useCallback)(()=>{k(null),P([])},[]),b=(0,A.useCallback)(()=>{o.resetFields(),p(),S("learn"),H(""),ve([]),Ae(null),g("remote"),fe(void 0),ye([]),Y(!1),ie(!1)},[o,p]);(0,A.useEffect)(()=>{if(i){b(),S(c??"learn");let e=u?.a2aMode;(e==="remote"||e==="local")&&g(e),o.setFieldsValue({type:"react",agentCardProtocol:"https://",a2aMode:"remote",timeout:3e5,...u})}},[i,o,c,Ke,b]),(0,A.useEffect)(()=>{let e=++ae.current,s=!0;return i&&j?(o.setFieldValue("prompt",""),a==="local"?(ce(!0),N("/api/local-a2a/templates").then(v=>{s&&e===ae.current&&v?.data?.records&&ye(v.data.records)}).catch(()=>{s&&e===ae.current&&ye([])}).finally(()=>{s&&e===ae.current&&ce(!1)})):ce(!1)):ce(!1),()=>{s=!1,ae.current+=1}},[o,j,a,N,i]);let x=le.find(e=>e.key===U),q=(0,A.useCallback)(()=>{let e=_t({mode:a,templateKey:U,executable:o.getFieldValue("commandExecutable")},t);return e?(Y(!0),o.setFields([{name:"commandExecutable",errors:[e]}]),w.warning(e),!1):!0},[a,U,o,t]);(0,A.useEffect)(()=>{x&&o.setFieldsValue({agentCardProtocol:"http://"})},[o,x]);let ke=(0,A.useCallback)(async()=>{if(!q())return;let e=zt(o.getFieldValue("agentCardUrl"),o.getFieldValue("agentCardProtocol"),a==="local"?"http://":"https://");if(!e){w.warning(t("chatConfig.createAssistant.a2aUrlWarning"));return}ie(!0);try{let s={agentCardUrl:e,apiKey:o.getFieldValue("apiKey")};if(a==="local"){let y=x;if(y)s.localRuntime={label:o.getFieldValue("name")||void 0,agentCardUrl:e,command:jt(y.command,e)};else{let B=o.getFieldValue("commandArgs")||"",G=B?B.split(/\s+/).filter(Boolean):[],F=String(o.getFieldValue(["command","cwd"])||"").trim();s.localRuntime={label:o.getFieldValue("name")||void 0,agentCardUrl:e,command:{executable:String(o.getFieldValue("commandExecutable")||"").trim(),args:G,...F?{cwd:F}:{}}}}}let v=await J("/api/a2a/test-connection",s);if(v.data?.reachable){let y=v.data.agentCard;w.success(t("chatConfig.createAssistant.connectedTo",{name:v.data.agentName||e}))}else w.error(v.data?.error||t("chatConfig.createAssistant.connectionFailed"))}catch{w.error(t("chatConfig.createAssistant.connectionTestFailed"))}finally{ie(!1)}},[o,J,a,x,q,t]),$t=(0,A.useCallback)(e=>{if(k(e),!e){o.resetFields(["key","name","description","type","prompt"]),P([]);return}let s=typeof e.graphDefinition=="object"&&e.graphDefinition!==null?e.graphDefinition:{},v=s.key||e.id,y=e.name||s.name||"";o.setFieldsValue({key:`${v}_ext`,name:y?`${y} (Extended)`:"",description:e.description||s.description||"",type:s.type||"react",prompt:s.prompt||""});let B=s.subAgents||[];P(B.map(G=>({originalKey:G,clone:!1})))},[o]),Wt=async(e,s)=>{let v=await N(`/api/assistants/${e}`);if(!v.success)throw new Error(t("chatConfig.createAssistant.cloneFetchFailed",{key:e}));let y=v.data,B=typeof y.graphDefinition=="object"?y.graphDefinition:{},G={id:s,name:`${y.name} (Clone)`,description:y.description||"",graphDefinition:{...B,key:s,name:`${y.name} (Clone)`}},F=await J("/api/assistants",G);if(!F.success)throw new Error(F.message||t("chatConfig.createAssistant.cloneFailed",{key:e}));return F.data},Zt=e=>{let s={id:e.key,name:e.name,description:e.description||"",graphDefinition:{key:e.key,name:e.name,description:e.description||"",type:e.type,prompt:e.prompt||"",tools:[],skills:[],subAgents:e.type==="deep_agent"||e.type==="processing"?[]:void 0,middleware:[]}};if(e.type==="a2a_remote"&&(s.graphDefinition.agentCardUrl=zt(e.agentCardUrl,e.agentCardProtocol,(e.a2aMode||a)==="local"?"http://":"https://"),e.apiKey&&(s.graphDefinition.apiKey=e.apiKey),e.timeout&&(s.graphDefinition.timeout=e.timeout),(e.a2aMode||a)==="local")){let v=x;if(v)s.graphDefinition.localRuntime={label:e.name||void 0,agentCardUrl:s.graphDefinition.agentCardUrl,command:jt(v.command,s.graphDefinition.agentCardUrl)};else{let y=e.commandArgs||"",B=y?y.split(/\s+/).filter(Boolean):[],G=String(e.command?.cwd||"").trim();s.graphDefinition.localRuntime={label:e.name||void 0,agentCardUrl:s.graphDefinition.agentCardUrl,command:{executable:String(e.commandExecutable||"").trim(),args:B,...G?{cwd:G}:{}}}}}return s},Yt=async(e,s)=>{if(!d)throw new Error(t("chatConfig.createAssistant.noParentAgent"));let v=R.filter(F=>F.clone);for(let F of v){if(!F.cloneKey||!F.cloneKey.trim())throw new Error(t("chatConfig.createAssistant.cloneKeyRequired",{key:F.originalKey}));if(!/^[a-zA-Z][a-zA-Z0-9_-]*$/.test(F.cloneKey))throw new Error(t("chatConfig.createAssistant.cloneKeyInvalid",{key:F.cloneKey,originalKey:F.originalKey}))}let y=[];for(let F of R)if(F.clone){let Xt=await Wt(F.originalKey,F.cloneKey);s.push(Xt),y.push(F.cloneKey)}else y.push(F.originalKey);let B=typeof d.graphDefinition=="object"?d.graphDefinition:{},G={key:e.key,name:e.name,description:e.description||"",extendsAgent:d.id,type:e.type||B.type};return e.prompt&&e.prompt!==B.prompt&&(G.prompt=e.prompt),(y.length>0||B.subAgents&&B.subAgents.length>0)&&(G.subAgents=y),{id:e.key,name:e.name,description:e.description||"",graphDefinition:G}},Jt=async()=>{if(m==="learn"){let e=M.trim();if(!e){w.error(t("chatConfig.createAssistant.trainingGoalRequired"));return}if(!K){w.error(t("chatConfig.createAssistant.noTrainingProject"));return}r(!0);try{let s=`agent-${It(e+Date.now())}`,v=await J("/api/assistants",{id:s,name:s,graphDefinition:{key:s,name:s,description:"",type:"react",prompt:"To be trained",metadata:{trainingProjectId:K.id,learningPlaceholder:"true",architectureStatus:"undecided"}}});if(!v.data)throw new Error(t("chatConfig.createAssistant.agentCreateFailed"));let{roundTaskId:y}=await Ft({goal:e,targetAgentId:s,workspaceId:Ce??void 0,projectId:K.id,existingThreadId:St(Me.tenantId,s),files:be,post:J,put:he});w.success(t("chatConfig.createAssistant.agentCreated")),H(""),ve([]),S("learn"),f?.(v.data,{initialMessage:Rt({goal:e,roundTaskId:y,targetAgentId:s,targetMode:"placeholder",files:be,projectId:K.id,workspaceId:K.workspaceId??Ce??void 0}),projectId:K.id,initialMessageCustomRunConfig:{execution:{taskId:y}}}),l()}catch(s){w.error(s instanceof Error?s.message:t("chatConfig.createAssistant.agentCreateFailed"))}finally{r(!1)}return}try{if(m==="scratch"&&j&&!q())return;let e=await o.validateFields();r(!0);let s=[],v=m==="scratch"?Zt(e):await Yt(e,s),y=await J("/api/assistants",v);if(y.success){w.success(m==="extend"?t("chatConfig.createAssistant.createdByExtending",{name:d?.name??""}):t("chatConfig.createAssistant.created")),b();for(let B of s)f?.(B);f?.(y.data),l()}else w.error(y.message||t("chatConfig.createAssistant.createFailed"))}catch(e){if(e?.errorFields){let s={key:t("chatConfig.createAssistant.field.key"),name:t("chatConfig.createAssistant.field.name"),description:t("chatConfig.createAssistant.field.description"),prompt:t("chatConfig.createAssistant.field.systemPrompt")},v=e.errorFields.map(y=>s[String((y.name??[])[0])]??String((y.name??[])[0])).filter(Boolean);w.warning(v.length>0?t("chatConfig.createAssistant.requiredFields",{fields:[...new Set(v)].join(", ")}):t("chatConfig.createAssistant.requiredFieldsGeneric"));return}w.error(e.message||t("chatConfig.createAssistant.createError"))}finally{r(!1)}},ze=d?.graphDefinition?.subAgents||[],Qt=m==="extend"&&d&&ze.length>0;return(0,n.jsxs)(pe,{title:t("chatConfig.createAssistant.title"),open:i,onCancel:()=>{b(),l()},footer:[(0,n.jsx)(W,{onClick:()=>{b(),l()},children:t("common.cancel")},"cancel"),(0,n.jsx)(W,{type:"primary",icon:m==="extend"?(0,n.jsx)(Re,{}):m==="learn"?(0,n.jsx)(Je,{}):(0,n.jsx)(Xe,{}),loading:C,disabled:m==="learn"&&(de||!K),onClick:Jt,children:t(m==="extend"?"chatConfig.createAssistant.createExtend":m==="learn"?"chatConfig.createAssistant.startLearning":"common.create")},"submit")],width:760,children:[m==="extend"&&(0,n.jsxs)("div",{style:{marginBottom:20},children:[(0,n.jsx)(ne,{type:"secondary",style:{display:"block",marginBottom:8},children:t("chatConfig.createAssistant.parentAgent")}),(0,n.jsx)(Lt,{value:d?.id,onSelect:$t}),d&&(0,n.jsx)(ne,{type:"secondary",style:{display:"block",marginTop:4,fontSize:12},children:t("chatConfig.createAssistant.inheritHint")})]}),m==="extend"&&d&&(0,n.jsx)(Be,{style:{margin:"12px 0"}}),m==="learn"&&(0,n.jsxs)("div",{children:[(0,n.jsx)(ne,{style:{display:"block",marginBottom:8},children:t("chatConfig.createAssistant.learnHint")}),(0,n.jsx)(_.TextArea,{rows:3,value:M,onChange:e=>H(e.target.value),placeholder:"e.g. Handle price disputes using the price protection policy"}),K&&(0,n.jsxs)("div",{style:{marginTop:12},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:12,marginBottom:8},children:[(0,n.jsx)(ne,{type:"secondary",children:t("chatConfig.createAssistant.referenceFiles")}),(0,n.jsx)(Ve,{project:K,projects:Q,value:K?.id??null,onChange:Ae,loading:de})]}),(0,n.jsx)(Tt,{projectId:K.id,value:be,onChange:ve}),(0,n.jsx)(ne,{type:"secondary",style:{display:"block",marginTop:6,fontSize:12},children:t("chatConfig.createAssistant.referenceFilesHint")})]}),!K&&!de&&(0,n.jsx)("div",{style:{marginTop:12},children:(0,n.jsx)(Ve,{project:K,projects:Q,value:null,onChange:Ae,loading:de})})]}),m!=="learn"&&(0,n.jsxs)(D,{form:o,layout:"vertical",autoComplete:"off",initialValues:{type:"react",agentCardProtocol:"https://",a2aMode:"remote"},children:[(0,n.jsx)(D.Item,{name:"key",label:t("chatConfig.createAssistant.field.key"),rules:[{required:!0,message:t("chatConfig.createAssistant.validation.keyRequired")},{pattern:/^[a-zA-Z][a-zA-Z0-9_-]*$/,message:t("chatConfig.createAssistant.validation.keyPattern")}],style:{marginBottom:16},children:(0,n.jsx)(_,{placeholder:"e.g., my_assistant"})}),(0,n.jsx)(D.Item,{name:"name",label:t("chatConfig.createAssistant.field.name"),rules:[{required:!0,message:t("chatConfig.createAssistant.validation.nameRequired")}],style:{marginBottom:16},children:(0,n.jsx)(_,{placeholder:"e.g., My Assistant"})}),(0,n.jsx)(D.Item,{name:"description",label:t("chatConfig.createAssistant.field.description"),rules:[{required:!0,message:t("chatConfig.createAssistant.validation.descriptionRequired")}],style:{marginBottom:16},children:(0,n.jsx)(Vt,{placeholder:t("chatConfig.createAssistant.descriptionPlaceholder"),autoSize:{minRows:2,maxRows:4}})}),(0,n.jsx)(D.Item,{name:"type",label:t("chatConfig.createAssistant.field.agentType"),rules:[{required:!0}],style:{marginBottom:16},children:(0,n.jsx)(Ue,{options:[{value:"react",label:t("chatConfig.agentType.executor")},{value:"deep_agent",label:t("chatConfig.agentType.orchestrator")},{value:"team",label:t("chatConfig.agentType.team")},{value:"processing",label:t("chatConfig.agentType.workflow")},{value:"a2a_remote",label:t("chatConfig.agentType.a2aRemote")}],block:!0})}),(0,n.jsx)(ne,{type:"secondary",style:{fontSize:12,display:"block",marginTop:-12,marginBottom:16,lineHeight:1.5},children:t(on[$]??"chatConfig.createAssistant.typeDesc.react")}),j&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(D.Item,{label:t("chatConfig.createAssistant.field.connectionMode"),style:{marginBottom:16},children:(0,n.jsxs)(Fe.Group,{value:a,onChange:e=>{let s=e.target.value;g(s),o.setFieldValue("a2aMode",s),s==="local"&&o.setFieldValue("agentCardProtocol","http://"),fe(void 0)},optionType:"button",buttonStyle:"solid",children:[(0,n.jsx)(Fe.Button,{value:"remote",children:t("chatConfig.createAssistant.mode.remoteUrl")}),(0,n.jsx)(Fe.Button,{value:"local",children:t("chatConfig.createAssistant.mode.localManaged")})]})}),(0,n.jsx)(D.Item,{name:"a2aMode",noStyle:!0,hidden:!0,children:(0,n.jsx)(_,{})}),a==="local"&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(D.Item,{label:t("chatConfig.createAssistant.field.template"),style:{marginBottom:16},children:(0,n.jsx)(xe,{placeholder:t("chatConfig.createAssistant.templatePlaceholder"),allowClear:!0,loading:Se,value:U,onChange:e=>{fe(e),e&&Y(!1)},options:le.map(e=>({value:e.key,label:e.name||e.key})),notFoundContent:Se?void 0:(0,n.jsx)(ne,{type:"secondary",style:{padding:8,display:"block"},children:t("chatConfig.createAssistant.noTemplates")})})}),!U&&(0,n.jsx)(n.Fragment,{children:Pe?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(D.Item,{name:"commandExecutable",label:t("chatConfig.createAssistant.field.executable"),rules:[{required:!0,whitespace:!0,message:t("chatConfig.createAssistant.validation.executableRequired")}],style:{marginBottom:16},children:(0,n.jsx)(_,{placeholder:"e.g. node, opencode, /usr/local/bin/my-server"})}),(0,n.jsx)(D.Item,{name:"commandArgs",label:t("chatConfig.createAssistant.field.arguments"),style:{marginBottom:16},children:(0,n.jsx)(_,{placeholder:"e.g. --serve --port 4301"})}),(0,n.jsx)(D.Item,{name:["command","cwd"],label:t("chatConfig.createAssistant.field.workingDirectory"),style:{marginBottom:16},children:(0,n.jsx)(_,{placeholder:"e.g. /Users/me/project"})}),(0,n.jsx)(W,{type:"link",onClick:()=>{Y(!1),o.setFieldsValue({commandExecutable:"",commandArgs:"",command:{cwd:void 0}})},style:{padding:0,marginBottom:16,display:"block"},children:t("chatConfig.createAssistant.hideCustomCommand")})]}):(0,n.jsx)(W,{type:"link",onClick:()=>Y(!0),style:{padding:0,marginBottom:16,display:"block"},children:t("chatConfig.createAssistant.customCommand")})})]}),(0,n.jsx)(D.Item,{label:t("chatConfig.createAssistant.field.agentCardUrl"),required:!0,style:{marginBottom:16},children:(0,n.jsxs)(He.Compact,{style:{width:"100%"},children:[(0,n.jsx)(D.Item,{name:"agentCardProtocol",noStyle:!0,children:(0,n.jsx)(xe,{style:{width:100},options:an})}),(0,n.jsx)(D.Item,{name:"agentCardUrl",noStyle:!0,rules:[{required:!0,message:t("chatConfig.createAssistant.validation.urlRequired")}],children:(0,n.jsx)(_,{placeholder:a==="local"?"localhost:4301":"host:port or full URL"})}),(0,n.jsx)(W,{icon:(0,n.jsx)(Ye,{}),onClick:ke,loading:oe,children:t("chatConfig.connection.action.test")})]})}),a==="remote"&&(0,n.jsx)(D.Item,{name:"apiKey",label:t("chatConfig.createAssistant.field.apiKeyOptional"),style:{marginBottom:16},children:(0,n.jsx)(_.Password,{placeholder:t("chatConfig.createAssistant.apiKeyPlaceholder")})}),(0,n.jsx)(D.Item,{name:"timeout",label:t("chatConfig.createAssistant.field.timeout"),style:{marginBottom:16},initialValue:3e5,children:(0,n.jsx)(qe,{min:1e3,max:36e5,style:{width:"100%"},placeholder:"300000"})})]}),!j&&(0,n.jsx)(D.Item,{name:"prompt",label:t(m==="extend"&&d?"chatConfig.createAssistant.field.systemPromptInherit":"chatConfig.createAssistant.field.systemPrompt"),rules:m==="scratch"?[{required:!0,message:t("chatConfig.createAssistant.validation.systemPromptRequired")}]:[],children:(0,n.jsx)(Vt,{placeholder:t(m==="extend"&&d?"chatConfig.createAssistant.systemPromptInheritPlaceholder":"chatConfig.createAssistant.systemPromptPlaceholder"),autoSize:{minRows:4,maxRows:8},style:{fontFamily:"monospace",fontSize:13,lineHeight:1.6}})})]}),Qt&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(Be,{style:{margin:"12px 0"}}),(0,n.jsx)(ne,{strong:!0,style:{display:"block",marginBottom:8},children:t("chatConfig.createAssistant.subAgents")}),(0,n.jsx)(Ot,{subAgentKeys:ze,decisions:R,onChange:P})]})]})};var O=I(E()),{Paragraph:ln,Text:qt}=X,cn=[{key:"manual",icon:Te,titleKey:"governance.creation.manual.title",descriptionKey:"governance.creation.manual.description"},{key:"external",icon:tt,titleKey:"governance.creation.external.title",descriptionKey:"governance.creation.external.description"},{key:"learn",icon:at,titleKey:"governance.creation.learn.title",descriptionKey:"governance.creation.learn.description"}],Ht=({open:i,onCancel:l,onSelectMethod:f,focusTriggerAfterClose:c=!0})=>{let u=z();return(0,O.jsx)(pe,{title:u("governance.creation.title"),open:i,onCancel:l,footer:null,width:560,centered:!0,destroyOnHidden:!0,focusTriggerAfterClose:c,children:(0,O.jsxs)("div",{style:{padding:"8px 4px 4px"},children:[(0,O.jsx)(ln,{style:{color:"#595959",fontSize:15,margin:"8px 0 24px"},children:u("governance.creation.subtitle")}),(0,O.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:12},children:cn.map(o=>{let t=o.icon,C=u(o.titleKey);return(0,O.jsxs)(W,{type:"default",onClick:()=>f(o.key),"aria-label":C,style:{display:"flex",flexDirection:"row",alignItems:"center",gap:16,width:"100%",minHeight:88,height:"auto",padding:16,borderRadius:16,textAlign:"left",whiteSpace:"normal"},children:[(0,O.jsx)("div",{style:{width:40,height:40,borderRadius:12,display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0,color:"#6366f1",background:"#eeeeff"},children:(0,O.jsx)(t,{size:19})}),(0,O.jsxs)("div",{style:{minWidth:0},children:[(0,O.jsx)(qt,{strong:!0,style:{display:"block",fontSize:15,marginBottom:3},children:C}),(0,O.jsx)(qt,{style:{color:"#737373",lineHeight:1.5},children:u(o.descriptionKey)})]})]},o.key)})}),(0,O.jsx)("div",{style:{display:"flex",justifyContent:"flex-end",gap:8,flexWrap:"wrap",marginTop:24},children:(0,O.jsx)(W,{onClick:l,children:u("governance.creation.notNow")})})]})})};var V=I(E()),dn=i=>{let l=i;if(typeof i=="string")try{l=JSON.parse(i)}catch{return{}}return l!==null&&typeof l=="object"&&!Array.isArray(l)?l:{}},va=()=>{let{get:i,del:l,put:f}=me(),c=z(),[u,o]=(0,h.useState)([]),[t,C]=(0,h.useState)(!1),[r,m]=(0,h.useState)(null),[S,M]=(0,h.useState)("graph"),[H,d]=(0,h.useState)(null),[k,R]=(0,h.useState)(null),[P,$]=(0,h.useState)(null),[j,a]=(0,h.useState)(!1),[g,U]=(0,h.useState)(!0),[fe,le]=(0,h.useState)(!1),[ye,Se]=(0,h.useState)("learn"),[ce,ae]=(0,h.useState)({}),[oe,ie]=(0,h.useState)(null),[Pe,Y]=(0,h.useState)(!1),N=(0,h.useCallback)(async()=>{C(!0);try{let p=await i("/api/assistants");p.success&&p.data?.records&&o(p.data.records)}catch{w.error(c("governance.workbench.loadFailed"))}finally{C(!1)}},[i,c]);(0,h.useEffect)(()=>{N()},[N]);let J=h.default.useMemo(()=>xt(u),[u]),he=u.find(p=>p.id===r)??null,Me=(0,h.useCallback)((p,b="graph")=>{m(p),M(b),d(null),$(null)},[]),Ce=ut(),Q=(0,h.useCallback)((p,b)=>{let x=u.find(q=>q.id===p)?.name??c("governance.workbench.agentFallback");Ce({component_key:"agent_detail_side_app",data:{assistantId:p,initialTab:b},message:x})},[u,Ce,c]),de=(0,h.useCallback)(()=>{U(!0),a(!0)},[]),Ee=(0,h.useCallback)(p=>{let x={manual:{mode:"scratch",values:{}},external:{mode:"scratch",values:{type:"a2a_remote"}},learn:{mode:"learn",values:{}}}[p];Se(x.mode),ae(x.values),U(!1),a(!1),le(!0)},[]),Ae=(0,h.useCallback)(async(p,b)=>{let x=dn(p.graphDefinition),q;try{q=await f(`/api/assistants/${p.id}`,{name:b.name!==void 0?b.name:p.name,description:b.description!==void 0?b.description:p.description,graphDefinition:{...x,...b}})}catch(ke){throw w.error(c("governance.detail.saveFailed")),ke}if(!q.success)throw w.error(c("governance.detail.saveFailed")),new Error("Failed to save agent");w.success(c("common.saved")),N()},[f,N,c]),Ke=(0,h.useCallback)(p=>{o(b=>b.map(x=>x.id===p.id?p:x))},[]),K=(0,h.useCallback)(p=>{ie(p)},[]),be=(0,h.useCallback)(async()=>{if(oe){Y(!0);try{(await l(`/api/assistants/${oe}`)).success?(w.success(c("governance.detail.deleted")),o(b=>b.filter(x=>x.id!==oe)),N(),ie(null)):w.error(c("governance.detail.deleteFailed"))}catch{w.error(c("governance.detail.deleteFailed"))}finally{Y(!1)}}},[oe,l,N,c]),ve=(0,h.useCallback)(async p=>{if(!(await l(`/api/assistants/${p}`)).success)throw new Error("Failed to delete agent");w.success(c("governance.detail.deleted")),o(x=>x.filter(q=>q.id!==p)),N()},[l,N,c]);return(0,V.jsxs)("div",{style:{height:"100%",background:"#fafafa",overflow:"hidden"},children:[he?(0,V.jsx)(vt,{defaultProjectId:P??void 0,children:(0,V.jsx)(Dt,{assistant:he,allAssistants:u,onBack:()=>m(null),onDeleted:ve,onSave:Ae,onAssistantUpdated:Ke,onAgentListInvalidated:N,initialTab:S,initialMessage:H,initialMessageCustomRunConfig:k,initialProjectId:P})},he.id):(0,V.jsx)(V.Fragment,{children:(0,V.jsx)(Bt,{items:J,assistants:u,loading:t,onItemClick:p=>Q(p,"graph"),onOpenPlayground:p=>Q(p,"playground"),onOpenEval:p=>Q(p,"eval"),onCreate:de,onDelete:K})}),(0,V.jsx)(Ht,{open:j,onCancel:()=>{U(!0),a(!1)},onSelectMethod:Ee,focusTriggerAfterClose:g}),(0,V.jsx)(Ut,{open:fe,initialMode:ye,initialValues:ce,onCancel:()=>le(!1),onSuccess:(p,b)=>{le(!1),o(x=>x.some(ke=>ke.id===p.id)?x:[p,...x]),Me(p.id,"graph"),d(b?.initialMessage??null),R(b?.initialMessageCustomRunConfig??null),$(b?.projectId??null),N()}}),(0,V.jsx)(pe,{title:c("governance.deleteAgent"),open:oe!==null,onCancel:()=>ie(null),onOk:be,okText:c("common.delete"),okButtonProps:{danger:!0,loading:Pe},cancelText:c("common.cancel"),children:(0,V.jsx)("p",{children:c("governance.delete.irreversible")})})]})};export{va as AgentGovernanceWorkbench};
|
package/dist/embed/{embed-page-MessageGraph-D77CYFAG.js → embed-page-MessageGraph-GLQXKAVC.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{c as $,d as J}from"./embed-page-chunk-WTOAQDQN.js";import{b as R,d as V,e as S}from"./embed-page-chunk-V2GBFWLG.js";import"./embed-page-chunk-S4XZPBRM.js";import{Fa as N,Ha as H,Ia as L,Ja as U,Ka as W,Ua as A,Va as K,Wa as Y}from"./embed-page-chunk-
|
|
1
|
+
import{c as $,d as J}from"./embed-page-chunk-WTOAQDQN.js";import{b as R,d as V,e as S}from"./embed-page-chunk-V2GBFWLG.js";import"./embed-page-chunk-S4XZPBRM.js";import{Fa as N,Ha as H,Ia as L,Ja as U,Ka as W,Ua as A,Va as K,Wa as Y}from"./embed-page-chunk-P477ZTUO.js";import{r as w}from"./embed-page-chunk-2PFKLMTR.js";import{a as g}from"./embed-page-chunk-QV7QAJ4N.js";import"./embed-page-chunk-VW3NF5NT.js";import"./embed-page-chunk-QULNM5O2.js";import{Cc as _,Ia as P,Qc as z,Rc as k,Uc as F,W as T,aa as B,fb as E,kb as D,mc as G}from"./embed-page-chunk-MHGVD4EV.js";import{a as b}from"./embed-page-chunk-R5QL57JJ.js";import"./embed-page-chunk-QOWM3LMZ.js";import"./embed-page-chunk-EUOOO2LS.js";import"./embed-page-chunk-5JDQ456X.js";import{f as u}from"./embed-page-chunk-QBTAJ2YI.js";var n=u(b());var I=u(b());var o=u(g());var ae="tracePulse 1.4s ease-in-out infinite",le={running:(0,o.jsx)(G,{style:{color:"#1890ff"}}),success:(0,o.jsx)(E,{style:{color:"#52c41a"}}),error:(0,o.jsx)(D,{style:{color:"#ff4d4f"}})};function de({kind:e}){switch(e){case"human":return(0,o.jsx)(F,{});case"agent":return(0,o.jsx)(z,{});case"tool":return(0,o.jsx)(k,{});case"ai":return(0,o.jsx)(_,{});default:return(0,o.jsx)(k,{})}}var M=I.default.createContext({}),ce=()=>I.default.useContext(M),pe=({data:e,selected:i})=>{let l=w(),{onJumpToMessage:t}=ce(),s=e.isAnswer===!0,a=e.status==="running",p=(e.parallelCount??1)>1,m=!!(t&&e.messageId&&!e.messageId.startsWith("summary:")),v=e.toolCall?L(e.toolCall.name):e.label,y=()=>{if((e.kind==="tool"||e.kind==="agent")&&e.toolCall){let h=U(e.toolCall.response);return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(H,{data:{name:e.toolCall.name,parameters:e.toolCall.args,type:"tool_call"},component_key:`${e.toolCall.id}-params`,interactive:!1}),h&&(0,o.jsx)("div",{style:{marginTop:8},children:(0,o.jsx)(N,{content:h})}),(0,o.jsx)(W,{ui:e.toolCall.ui})]})}return e.content?(0,o.jsx)(N,{content:e.content}):(0,o.jsx)("span",{style:{color:"#8c8c8c"},children:e.label})};return(0,o.jsxs)("div",{"data-testid":"trace-card",style:{height:"100%",display:"flex",flexDirection:"column",border:`1px solid ${s||i?"#6366f1":a?"#91caff":"#e5e7eb"}`,borderRadius:12,background:s?"#eef2ff":"#fff",boxShadow:a?"0 0 0 2px rgba(24,144,255,0.18)":i?"0 0 0 2px rgba(99,102,241,0.2)":"none",animation:a?ae:void 0,overflow:"hidden",fontSize:13},children:[(0,o.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,padding:"8px 12px",borderBottom:"1px solid #f0f0f0",background:"rgba(0,0,0,0.02)"},children:[(0,o.jsx)(de,{kind:e.kind}),(0,o.jsx)("span",{style:{fontWeight:s?700:600,flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:v}),p&&(0,o.jsx)(P,{color:"purple",style:{marginInlineEnd:0,fontSize:10},children:l("chat.trace.parallelBadge",{count:e.parallelCount??1})}),le[e.status],m&&(0,o.jsx)(T,{type:"text",size:"small",onClick:()=>t?.(e.messageId),children:l("chat.trace.jumpToChat")})]}),(0,o.jsx)("div",{style:{flex:1,minHeight:0,overflow:"auto",padding:12},children:y()})]})},ue=({data:e,selected:i})=>(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(S,{type:"target",position:R.Top}),(0,o.jsx)(pe,{data:e,selected:i}),(0,o.jsx)(S,{type:"source",position:R.Bottom})]}),j={trace:ue};var Z=u(b());var f=u(g()),fe={running:"#1890ff",success:"#52c41a",error:"#ff4d4f"},q=({graph:e,activeNodeId:i,onSelectNode:l})=>{let t=Z.default.useMemo(()=>new Map(e.nodes.map(s=>[s.id,s])),[e.nodes]);return(0,f.jsx)("div",{"data-testid":"trace-overview-rail",style:{display:"flex",flexDirection:"column",gap:10,width:160,padding:8,overflowY:"auto",borderRight:"1px solid #f0f0f0"},children:e.phases.map(s=>(0,f.jsxs)("div",{"data-testid":"trace-rail-phase",children:[(0,f.jsx)("div",{style:{fontSize:12,color:"#8c8c8c",marginBottom:4},children:s.title}),(0,f.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:4},children:s.nodeIds.map(a=>{let p=t.get(a);if(!p)return null;let m=a===i;return(0,f.jsx)(B,{title:p.data.label,children:(0,f.jsx)("button",{type:"button","data-testid":"trace-rail-tick",onClick:()=>l?.(a),style:{width:m?12:8,height:m?12:8,borderRadius:"50%",border:"none",padding:0,cursor:"pointer",background:fe[p.data.status],outline:m?"2px solid #6366f1":"none"}})},a)})})]},s.id))})};var d=u(g()),Q=3,X=()=>{},me=`
|
|
2
2
|
@keyframes tracePulse {
|
|
3
3
|
0%, 100% { box-shadow: 0 0 0 2px rgba(24,144,255,0.18); }
|
|
4
4
|
50% { box-shadow: 0 0 0 6px rgba(24,144,255,0.05); }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{s as D}from"./embed-page-chunk-UDSGGVJH.js";import{Ea as E}from"./embed-page-chunk-
|
|
1
|
+
import{s as D}from"./embed-page-chunk-UDSGGVJH.js";import{Ea as E}from"./embed-page-chunk-P477ZTUO.js";import{i as T,r as v}from"./embed-page-chunk-2PFKLMTR.js";import{a as C}from"./embed-page-chunk-QV7QAJ4N.js";import"./embed-page-chunk-VW3NF5NT.js";import"./embed-page-chunk-QULNM5O2.js";import{ga as x}from"./embed-page-chunk-MHGVD4EV.js";import{a as w}from"./embed-page-chunk-R5QL57JJ.js";import"./embed-page-chunk-QOWM3LMZ.js";import"./embed-page-chunk-EUOOO2LS.js";import"./embed-page-chunk-5JDQ456X.js";import{f as p}from"./embed-page-chunk-QBTAJ2YI.js";var u=p(w());var R=p(T());var y=p(C());function g(l,i){if(!l||l.length===0)return{title:{text:i("genui.chart.title"),left:"left"},tooltip:{trigger:"axis"},legend:{right:0,orient:"vertical"},xAxis:{type:"category",data:[]},yAxis:{type:"value"},series:[{type:"line",name:i("genui.chart.seriesDefault",{n:1}),data:[]}],grid:{left:"3%",right:"4%",bottom:"3%",containLabel:!0}};let s=l[0],t=Object.keys(s);if(t.length===0)return g([],i);let r=t.filter(e=>{let n=s[e];return typeof n=="number"||!isNaN(Number(n))});if(r.length>0){let e=r[0],n=t.find(a=>!r.includes(a))||t[0],o=l.map((a,c)=>a[n]!==void 0?String(a[n]):i("genui.chart.itemDefault",{n:c+1})),f=l.map(a=>{let c=a[e];return typeof c=="number"?c:Number(c)||0});return{title:{text:i("genui.chart.title"),left:"left"},tooltip:{trigger:"axis"},legend:{right:0,orient:"vertical",data:[e]},xAxis:{type:"category",data:o},yAxis:{type:"value"},series:[{type:"line",name:e,data:f}],grid:{left:"3%",right:"4%",bottom:"3%",containLabel:!0}}}return{title:{text:i("genui.chart.title"),left:"left"},tooltip:{trigger:"axis"},legend:{right:0,orient:"vertical"},xAxis:{type:"category",data:l.map((e,n)=>i("genui.chart.itemDefault",{n:n+1}))},yAxis:{type:"value"},series:[{type:"bar",name:i("genui.chart.countSeries"),data:l.map(()=>1)}],grid:{left:"3%",right:"4%",bottom:"3%",containLabel:!0}}}function j(l,i){if(!l||typeof l!="object"||!l.series||!Array.isArray(l.series)||l.series.length===0)return null;let s=l.series.map((e,n)=>{if(!e||typeof e!="object"||!e.type||!e.data||!Array.isArray(e.data)||e.data.length===0)return null;let o={...e,name:e.name||i("genui.chart.seriesDefault",{n:n+1})};if(e.type==="pie"){let f=e.data.map((a,c)=>typeof a=="object"&&a!==null&&"value"in a?{value:a.value,name:a.name||i("genui.chart.itemDefault",{n:c+1})}:typeof a=="number"?{value:a,name:i("genui.chart.itemDefault",{n:c+1})}:null).filter(a=>a!==null);return f.length===0?null:{...o,data:f}}return o}).filter(e=>e!==null);if(s.length===0)return null;let t={...l,series:s},r=s[0].type;if(r!=="pie"){if(!t.xAxis)t.xAxis={type:"category",data:[]};else if(typeof t.xAxis=="object"&&!Array.isArray(t.xAxis)){let e=t.xAxis;if(e.type||(e.type="category"),e.type==="category"&&!e.data){let n=s[0].data;Array.isArray(n)&&n.length>0?Array.isArray(n[0])?e.data=n.map(o=>o[0]):e.data=n.map((o,f)=>i("genui.chart.itemDefault",{n:f+1})):e.data=[]}t.xAxis=e}t.yAxis?typeof t.yAxis=="object"&&!Array.isArray(t.yAxis)&&(t.yAxis.type||(t.yAxis.type="value")):t.yAxis={type:"value"}}if(!t.title)t.title={text:i("genui.chart.title"),left:"left"};else if(typeof t.title=="object"){let e=t.title;e.left||(e.left="left"),e.text||(e.text=i("genui.chart.title")),t.title=e}if(t.tooltip||(t.tooltip={trigger:r==="pie"?"item":"axis"}),!t.legend)s.length>1&&(t.legend={right:0,orient:"vertical"});else if(typeof t.legend=="object"){let e=t.legend;t.legend=e}return r!=="pie"&&!t.grid&&(t.grid={left:"3%",right:"4%",bottom:"3%",containLabel:!0}),t}function O(l,i){let s=null;try{let n=typeof l=="string"?l:l.join("");s=(0,R.parse)(n)}catch(n){return{data:null,error:`Failed to parse JSON: ${n instanceof Error?n.message:String(n)}`}}if(!s||typeof s!="object")return{data:null,error:"Parsed data is not an object"};let t=s.series&&Array.isArray(s.series)&&s.series.length>0,r={table:Array.isArray(s.table)?s.table:void 0},e=null;if(s.echarts?e=s.echarts:t&&(e=s),e){let n=j(e,i);if(n)r.echarts=n;else if(r.table&&r.table.length>0)r.echarts=g(r.table,i);else return{data:null,error:"ECharts configuration is invalid or incomplete. Required: series array with at least one series containing type and data."}}else r.table&&r.table.length>0?r.echarts=g(r.table,i):r.echarts=g([],i);return{data:r,error:null}}var K=l=>{let{children:i}=l,s=v(),t=(0,u.useRef)(null),r=(0,u.useRef)(null),e=(0,u.useRef)(null),[n,o]=(0,u.useState)(null);(0,u.useEffect)(()=>{if(!t.current)return;r.current||(r.current=D(t.current));let a=null;if((typeof i=="string"||Array.isArray(i))&&(a=i),!a){r.current&&r.current.clear(),o(null);return}let{data:c,error:m}=O(a,s);if(m||!c){console.warn("ReactChart failed to parse chart data:",m||"Unknown parse error"),r.current&&r.current.clear(),o(null);return}if(c.table&&Array.isArray(c.table)&&o(c.table),c.echarts)try{r.current.setOption(c.echarts,!0)}catch(d){let A=d instanceof Error?d.message:"Failed to render chart";console.error("Failed to set ECharts option:",d),r.current&&r.current.clear(),o(null)}let h=()=>{r.current&&r.current.resize()};return e.current&&(e.current.disconnect(),e.current=null),t.current&&typeof ResizeObserver<"u"&&(e.current=new ResizeObserver(d=>{requestAnimationFrame(()=>{h()})}),e.current.observe(t.current)),window.addEventListener("resize",h),()=>{e.current&&(e.current.disconnect(),e.current=null),window.removeEventListener("resize",h)}},[i,s]),(0,u.useEffect)(()=>()=>{e.current&&(e.current.disconnect(),e.current=null),r.current&&(r.current.dispose(),r.current=null)},[]);let f=a=>{if(!a||a.length===0)return[];if(Array.isArray(a[0])){let c=a[0];return a.slice(1).map((h,d)=>{let A={};return h.forEach((S,b)=>{A[c[b]||`col_${b}`]=S}),A})}return a};return(0,y.jsxs)(x,{children:[(0,y.jsx)("div",{ref:t,style:{width:"100%",height:"400px",minHeight:"300px"}}),n&&n.length>0&&(0,y.jsx)("div",{style:{marginTop:16},children:(0,y.jsx)(E,{component_key:"chart_table_data",data:{dataSource:f(n),message:s("genui.chart.dataDetails")},interactive:!0,default_open_in_side_app:!0})})]})};export{K as ReactChart};
|
package/dist/embed/{embed-page-TasksSideApp-BVCIAE24.js → embed-page-TasksSideApp-DA4LUTMD.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as Ze}from"./embed-page-chunk-
|
|
1
|
+
import{a as Ze}from"./embed-page-chunk-UHH575CK.js";import{c as qe,d as Ke}from"./embed-page-chunk-WTOAQDQN.js";import{b as Ne,e as Ie,h as He,i as We}from"./embed-page-chunk-V2GBFWLG.js";import"./embed-page-chunk-S4XZPBRM.js";import{$a as Ue,Oa as Ge,_a as Ve,ab as ue,bb as Re,ca as pe,cb as Ye,db as Qe,eb as Je,g as ce,gb as Xe,hb as et,ib as tt,jb as ot,ma as me,ra as q,sa as _e,y as Fe}from"./embed-page-chunk-P477ZTUO.js";import{r as j,v as Ee,y as Oe}from"./embed-page-chunk-2PFKLMTR.js";import{a as A}from"./embed-page-chunk-QV7QAJ4N.js";import"./embed-page-chunk-VW3NF5NT.js";import"./embed-page-chunk-QULNM5O2.js";import{Fa as le,Ia as Me,La as de,W as ae,Y as Be,Z as Le,_ as be,la as De,ra as W,ta as Ce,va as J,ya as ze}from"./embed-page-chunk-MHGVD4EV.js";import{a as se}from"./embed-page-chunk-R5QL57JJ.js";import"./embed-page-chunk-QOWM3LMZ.js";import"./embed-page-chunk-EUOOO2LS.js";import"./embed-page-chunk-5JDQ456X.js";import{f as T}from"./embed-page-chunk-QBTAJ2YI.js";var n=T(se());var it=T(se());var s=T(A()),Tt=[{key:"pending",color:"#7A7A7A"},{key:"in_progress",color:"#3b82f6"},{key:"failed",color:"#ef4444"},{key:"interrupted",color:"#8b5cf6"},{key:"completed",color:"#22c55e"}],rt={high:"#ef4444",medium:"#f59e0b",low:"#22c55e"};function bt(e){return e==="high"||e==="low"?e:"medium"}function Ct(e,i){let f=typeof e=="string"?new Date(e):e,a=new Date().getTime()-f.getTime(),k=Math.floor(a/1e3),o=Math.floor(k/60),r=Math.floor(o/60),l=Math.floor(r/24);return k<60?i("common.time.justNow"):o<60?i("common.time.minutesAgo",{count:o}):r<24?i("common.time.hoursAgo",{count:r}):l<30?i("common.time.daysAgo",{count:l}):f.toLocaleDateString(i.locale)}var Nt=q(({css:e,token:i})=>({container:e`
|
|
2
2
|
display: flex;
|
|
3
3
|
flex-direction: column;
|
|
4
4
|
height: 100%;
|
package/dist/embed/{embed-page-TeamWorkspace-JFEKNVFP.js → embed-page-TeamWorkspace-DUB3L6V6.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{d as Be,f as ke,g as _e,h as Fe,i as Oe,l as We,m as je}from"./embed-page-chunk-V2GBFWLG.js";import"./embed-page-chunk-S4XZPBRM.js";import{E as $e,Ga as Ge,J as Ne,N as we,P as Ie,Q as Me,S as De,T as Ae,U as k,V as ne,W as Le,X as Re,Ya as He,Za as Xe,c as Te,ea as ze,j as Z,k as be,l as ye,m as ee,ma as le,n as H,na as Ee,p as B,ra as M,v as Se,va as Pe,w as Ce,y as te}from"./embed-page-chunk-
|
|
1
|
+
import{d as Be,f as ke,g as _e,h as Fe,i as Oe,l as We,m as je}from"./embed-page-chunk-V2GBFWLG.js";import"./embed-page-chunk-S4XZPBRM.js";import{E as $e,Ga as Ge,J as Ne,N as we,P as Ie,Q as Me,S as De,T as Ae,U as k,V as ne,W as Le,X as Re,Ya as He,Za as Xe,c as Te,ea as ze,j as Z,k as be,l as ye,m as ee,ma as le,n as H,na as Ee,p as B,ra as M,v as Se,va as Pe,w as Ce,y as te}from"./embed-page-chunk-P477ZTUO.js";import{r as T}from"./embed-page-chunk-2PFKLMTR.js";import{a as I}from"./embed-page-chunk-QV7QAJ4N.js";import"./embed-page-chunk-VW3NF5NT.js";import"./embed-page-chunk-QULNM5O2.js";import{Da as se,Ea as U,Ia as P,Ka as ve,La as z,W as pe,Z as V,aa as E,da as J,fa as ge,ga as W,ja as j,ka as ue,oa as Q,ua as fe,va as xe,ya as he}from"./embed-page-chunk-MHGVD4EV.js";import{a as X}from"./embed-page-chunk-R5QL57JJ.js";import"./embed-page-chunk-QOWM3LMZ.js";import"./embed-page-chunk-EUOOO2LS.js";import"./embed-page-chunk-5JDQ456X.js";import{f as v}from"./embed-page-chunk-QBTAJ2YI.js";var oe=v(X());var ae=v(X());var x=v(I()),ut=M(({token:e,css:t})=>({container:t`
|
|
2
2
|
display: flex;
|
|
3
3
|
flex-direction: column;
|
|
4
4
|
height: 100%;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as ue,c as fe}from"./embed-page-chunk-
|
|
1
|
+
import{a as ue,c as fe}from"./embed-page-chunk-GKHIPXZ2.js";import{a as xe}from"./embed-page-chunk-WTOAQDQN.js";import{a as ie,b as G,e as V,f as U,g as re,h as se,i as ae,k as le,l as de,m as ce,n as pe}from"./embed-page-chunk-V2GBFWLG.js";import"./embed-page-chunk-S4XZPBRM.js";import{Fa as O,U as H,d as te,la as ne,o as L,q as oe,u as $}from"./embed-page-chunk-P477ZTUO.js";import{D as j,r as N}from"./embed-page-chunk-2PFKLMTR.js";import{a as D}from"./embed-page-chunk-QV7QAJ4N.js";import"./embed-page-chunk-VW3NF5NT.js";import"./embed-page-chunk-QULNM5O2.js";import{Aa as Z,Ac as ee,Fa as X,Ia as I,La as q,Z as P,aa as B,na as J,oa as F,sb as Q,va as M,wa as K}from"./embed-page-chunk-MHGVD4EV.js";import{a as Y}from"./embed-page-chunk-R5QL57JJ.js";import"./embed-page-chunk-QOWM3LMZ.js";import"./embed-page-chunk-EUOOO2LS.js";import"./embed-page-chunk-5JDQ456X.js";import{f as T}from"./embed-page-chunk-QBTAJ2YI.js";var s=T(Y());var _=T(xe());var ge=T(Y());var ye=T(D()),me=({steps:t,graphDefinition:o,assistantId:r})=>{let n=(0,ge.useMemo)(()=>fe(o),[o]);return(0,ye.jsx)(ue,{dsl:n,steps:t,assistantId:r})};var e=T(D()),ve=`
|
|
2
2
|
@keyframes spin {
|
|
3
3
|
from { transform: rotate(0deg); }
|
|
4
4
|
to { transform: rotate(360deg); }
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{a as $e,b as Ge}from"./embed-page-chunk-
|
|
1
|
+
import{a as $e,b as Ge}from"./embed-page-chunk-BVSC3MSO.js";import{b as Ue,c as be}from"./embed-page-chunk-GKHIPXZ2.js";import"./embed-page-chunk-WTOAQDQN.js";import{f as Ye}from"./embed-page-chunk-V2GBFWLG.js";import"./embed-page-chunk-S4XZPBRM.js";import{B as pe,Fa as He,G as je,I as ge,K as fe,O as Ee,S as _e,W as Fe,da as Be,e as Oe,h as de,ha as q,i as Pe,ia as ue,ja as Ne,na as me,oa as Z,ob as Ke,pa as qe,sa as ee,y as ce}from"./embed-page-chunk-P477ZTUO.js";import{D as te,r as P}from"./embed-page-chunk-2PFKLMTR.js";import{a as E}from"./embed-page-chunk-QV7QAJ4N.js";import"./embed-page-chunk-VW3NF5NT.js";import"./embed-page-chunk-QULNM5O2.js";import{Aa as Ae,Fc as Le,La as Q,W as $,Z as G,aa as U,ec as Me,ga as Ie,oc as De,ra as X,sb as Te,ta as J,va as ae,xc as le,ya as V}from"./embed-page-chunk-MHGVD4EV.js";import{a as se}from"./embed-page-chunk-R5QL57JJ.js";import"./embed-page-chunk-QOWM3LMZ.js";import"./embed-page-chunk-EUOOO2LS.js";import"./embed-page-chunk-5JDQ456X.js";import{f as A}from"./embed-page-chunk-QBTAJ2YI.js";var i=A(se());var oe=A(se());var j=A(E());function gt(r){let n=r.split(/[\n\r.。;;!!??]+/).filter(Boolean)[0]?.trim()||"";return n=n.replace(/[,,]+$/,"").trim(),n.length>50&&(n=n.slice(0,50)),n||(n=r.slice(0,50).trim()),n}function ft(r){let t=5381;for(let n=0;n<r.length;n++)t=(t<<5)+t+r.charCodeAt(n)>>>0;return t.toString(36).slice(0,6)}var we=({open:r,onCancel:t,onCreated:n,type:f="processing"})=>{let{post:D}=te(),l=P(),{trainingProjects:u,loading:w}=ee(),[g,m]=(0,oe.useState)(null),[y]=X.useForm(),b=u.find(h=>h.id===g)??u[0]??null;(0,oe.useEffect)(()=>{r&&(y.resetFields(),m(null))},[r,y]);let S=async()=>{if(f==="workflow"&&!b)return;let k=((await y.validateFields()).purpose||"").trim(),z=gt(k),I=`wf-${ft(k+Date.now())}`,p=f==="workflow"?{key:I,name:z,description:k,type:"workflow",prompt:"Complete the assigned task accurately and concisely.",metadata:{trainingProjectId:b?.id},workflowYaml:`name: ${I}
|
|
2
2
|
steps: []
|
|
3
3
|
`}:{key:I,name:z,description:k,type:"processing",prompt:`You are the orchestrator for workflow "${z}". Purpose: ${k}. Follow the topology to delegate tasks to sub-agents.`,tools:[],skills:[],subAgents:[],middleware:[{id:"topology",type:"topology",name:l("chatConfig.workflow.middleware.topologyName"),description:l("chatConfig.workflow.middleware.topologyDescription"),enabled:!0,config:{edges:[]}}]};await D("/api/assistants",{id:I,name:z,description:k,graphDefinition:p}),y.resetFields(),n(I,k,f==="workflow"?b?.id:void 0)};return(0,j.jsx)(V,{title:l(f==="workflow"?"chatConfig.workflow.create.title":"chatConfig.workflow.create.titleProcessing"),open:r,onCancel:t,onOk:S,okText:l("common.create"),okButtonProps:{disabled:f==="workflow"&&(w||!b)},destroyOnClose:!0,children:(0,j.jsxs)(X,{form:y,layout:"vertical",initialValues:{purpose:""},children:[(0,j.jsx)(X.Item,{name:"purpose",label:l("chatConfig.workflow.field.purpose"),rules:[{required:!0,message:l("chatConfig.workflow.validation.purposeRequired")}],children:(0,j.jsx)(J.TextArea,{placeholder:l("chatConfig.workflow.field.purposePlaceholder"),rows:4})}),f==="workflow"&&(0,j.jsx)($e,{project:b,projects:u,value:b?.id??null,onChange:m,loading:w})]})})};var Ve=A(se());var e=A(E()),{Text:ye}=Q;function ut(r){if(!r||typeof r!="object")return null;let t=r;return{modelKey:t.modelKey||t.model||void 0,tools:Array.isArray(t.tools)?t.tools:[],middleware:Array.isArray(t.middleware)?t.middleware.filter(n=>n&&typeof n=="object"&&n.type):[],subAgents:Array.isArray(t.subAgents)?t.subAgents:[],skillCategories:Array.isArray(t.skillCategories)?t.skillCategories:[],runConfig:t.runConfig&&typeof t.runConfig=="object"?t.runConfig:void 0}}var mt={filesystem:(0,e.jsx)(je,{size:12}),code_eval:(0,e.jsx)(Ne,{size:12}),browser:(0,e.jsx)(fe,{size:12}),sql:(0,e.jsx)(pe,{size:12}),skill:(0,e.jsx)(ue,{size:12}),http:(0,e.jsx)(_e,{size:12}),scheduler:(0,e.jsx)(ce,{size:12}),metrics:(0,e.jsx)(Oe,{size:12}),topology:(0,e.jsx)(ge,{size:12}),ask_user_to_clarify:(0,e.jsx)(Fe,{size:12}),widget:(0,e.jsx)(de,{size:12}),date:(0,e.jsx)(Pe,{size:12}),task:(0,e.jsx)(ge,{size:12}),custom:(0,e.jsx)(Be,{size:12}),claw:(0,e.jsx)(q,{size:12}),collection:(0,e.jsx)(Ee,{size:12})},bt={filesystem:{bg:"rgba(34,197,94,0.08)",text:"#16a34a",border:"rgba(34,197,94,0.2)"},code_eval:{bg:"rgba(99,102,241,0.08)",text:"#4f46e5",border:"rgba(99,102,241,0.2)"},browser:{bg:"rgba(59,130,246,0.08)",text:"#2563eb",border:"rgba(59,130,246,0.2)"},sql:{bg:"rgba(249,115,22,0.08)",text:"#ea580c",border:"rgba(249,115,22,0.2)"},skill:{bg:"rgba(168,85,247,0.08)",text:"#9333ea",border:"rgba(168,85,247,0.2)"},http:{bg:"rgba(20,184,166,0.08)",text:"#0d9488",border:"rgba(20,184,166,0.2)"},scheduler:{bg:"rgba(245,158,11,0.08)",text:"#d97706",border:"rgba(245,158,11,0.2)"},metrics:{bg:"rgba(236,72,153,0.08)",text:"#db2777",border:"rgba(236,72,153,0.2)"},topology:{bg:"rgba(99,102,241,0.08)",text:"#4f46e5",border:"rgba(99,102,241,0.2)"},ask_user_to_clarify:{bg:"rgba(245,158,11,0.08)",text:"#d97706",border:"rgba(245,158,11,0.2)"},widget:{bg:"rgba(20,184,166,0.08)",text:"#0d9488",border:"rgba(20,184,166,0.2)"},date:{bg:"rgba(139,92,246,0.08)",text:"#7c3aed",border:"rgba(139,92,246,0.2)"},task:{bg:"rgba(99,102,241,0.08)",text:"#4f46e5",border:"rgba(99,102,241,0.2)"},custom:{bg:"rgba(107,114,128,0.08)",text:"#4b5563",border:"rgba(107,114,128,0.2)"},claw:{bg:"rgba(107,114,128,0.08)",text:"#4b5563",border:"rgba(107,114,128,0.2)"},collection:{bg:"rgba(6,182,212,0.08)",text:"#0891b2",border:"rgba(6,182,212,0.2)"}},wt={bg:"rgba(107,114,128,0.08)",text:"#4b5563",border:"rgba(107,114,128,0.2)"};function yt(r){let t=r.split(/[_-]+/).filter(Boolean);return t.length===1?t[0].slice(0,2).toUpperCase():t.map(n=>n[0]).join("").toUpperCase().slice(0,2)}var Xe=[{bg:"rgba(99,102,241,0.1)",text:"#6366f1"},{bg:"rgba(34,197,94,0.1)",text:"#22c55e"},{bg:"rgba(245,158,11,0.1)",text:"#f59e0b"},{bg:"rgba(59,130,246,0.1)",text:"#3b82f6"},{bg:"rgba(239,68,68,0.1)",text:"#ef4444"},{bg:"rgba(168,85,247,0.1)",text:"#a855f7"},{bg:"rgba(20,184,166,0.1)",text:"#14b8a6"},{bg:"rgba(236,72,153,0.1)",text:"#ec4899"}];function Je(r){return Xe[r%Xe.length]}var H=({icon:r,label:t,count:n,children:f})=>(0,e.jsxs)("div",{style:{marginBottom:10},children:[(0,e.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6,marginBottom:6},children:[(0,e.jsx)("span",{style:{color:"#6366f1",display:"flex",alignItems:"center"},children:r}),(0,e.jsx)(ye,{strong:!0,style:{fontSize:11,color:"#52525b",textTransform:"uppercase",letterSpacing:"0.3px"},children:t}),(0,e.jsx)("span",{style:{fontSize:9,fontWeight:600,color:"#a1a1aa",background:"rgba(0,0,0,0.04)",borderRadius:8,padding:"1px 6px",lineHeight:"16px"},children:n})]}),f]}),Qe=({graphDef:r})=>{let t=P(),n=(0,Ve.useMemo)(()=>ut(r),[r]);if(!n)return null;let f=n.middleware.filter(l=>l.enabled!==!1),D=!1;return n.tools.length===0&&f.length===0&&n.subAgents.length===0?null:(0,e.jsx)("div",{style:{pointerEvents:"auto"},children:(0,e.jsxs)("div",{style:{background:"rgba(255,255,255,0.5)",borderRadius:8,width:250,transition:"all 0.25s ease",overflow:"hidden"},children:[(0,e.jsx)("div",{style:{display:"flex",alignItems:"center",gap:8,padding:"8px 12px",background:"rgba(99,102,241,0.02)",borderBottom:"1px solid rgba(0,0,0,0.03)"},children:(0,e.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8},children:[(0,e.jsx)("div",{style:{width:24,height:24,borderRadius:6,background:"rgba(99,102,241,0.05)",display:"flex",alignItems:"center",justifyContent:"center",color:"#6366f1"},children:(0,e.jsx)(q,{size:13})}),(0,e.jsx)(ye,{strong:!0,style:{fontSize:12,color:"#1a1a1a"},children:t("chat.environment.title")})]})}),(0,e.jsxs)("div",{style:{padding:"10px 12px 12px",maxHeight:"calc(60vh - 48px)",overflowY:"auto"},children:[n.tools.length>0&&(0,e.jsx)(H,{icon:(0,e.jsx)(qe,{size:12}),label:t("chat.environment.tools"),count:n.tools.length,children:(0,e.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:4},children:n.tools.map((l,u)=>{let w=Je(u);return(0,e.jsx)(U,{title:l,placement:"top",children:(0,e.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:4,padding:"3px 8px",borderRadius:6,fontSize:10,fontWeight:500,color:w.text,background:w.bg,cursor:"default",whiteSpace:"nowrap",lineHeight:"16px"},children:[(0,e.jsx)("span",{style:{fontWeight:700,fontSize:9,opacity:.7},children:yt(l)}),(0,e.jsx)("span",{children:l})]})},l)})})}),f.length>0&&(0,e.jsx)(H,{icon:(0,e.jsx)(de,{size:12}),label:t("chat.environment.capabilities"),count:f.length,children:(0,e.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:4},children:f.map(l=>{let u=bt[l.type]||wt,w=mt[l.type]||(0,e.jsx)(q,{size:12});return(0,e.jsx)(U,{title:l.name||l.type,placement:"top",children:(0,e.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:4,padding:"3px 8px",borderRadius:6,fontSize:10,fontWeight:500,color:u.text,background:u.bg,border:`1px solid ${u.border}`,cursor:"default",whiteSpace:"nowrap",lineHeight:"16px"},children:[w,(0,e.jsx)("span",{children:l.name||l.type})]})},l.type)})})}),n.subAgents.length>0&&(0,e.jsx)(H,{icon:(0,e.jsx)(me,{size:12}),label:t("chat.environment.subAgents"),count:n.subAgents.length,children:(0,e.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:4},children:n.subAgents.map((l,u)=>{let w=Je(u+3);return(0,e.jsx)(U,{title:l,placement:"top",children:(0,e.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:4,padding:"3px 8px",borderRadius:6,fontSize:10,fontWeight:500,color:w.text,background:w.bg,cursor:"default",whiteSpace:"nowrap",lineHeight:"16px"},children:[(0,e.jsx)(me,{size:10}),(0,e.jsx)("span",{children:l})]})},l)})})}),(n.modelKey||n.runConfig)&&(0,e.jsx)(H,{icon:(0,e.jsx)(ce,{size:12}),label:t("chat.environment.runtime"),count:n.modelKey?1:0,children:(0,e.jsxs)("div",{style:{display:"flex",flexWrap:"wrap",gap:4},children:[n.modelKey&&(0,e.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:4,padding:"3px 8px",borderRadius:6,fontSize:10,fontWeight:500,color:"#4f46e5",background:"rgba(99,102,241,0.08)",border:"1px solid rgba(99,102,241,0.2)",cursor:"default",whiteSpace:"nowrap",lineHeight:"16px"},children:[(0,e.jsx)(q,{size:10}),(0,e.jsx)("span",{children:t("chat.environment.model",{model:n.modelKey})})]}),!!n.runConfig?.databaseKey&&(0,e.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:4,padding:"3px 8px",borderRadius:6,fontSize:10,fontWeight:500,color:"#ea580c",background:"rgba(249,115,22,0.08)",border:"1px solid rgba(249,115,22,0.2)",cursor:"default",whiteSpace:"nowrap",lineHeight:"16px"},children:[(0,e.jsx)(pe,{size:10}),(0,e.jsx)("span",{children:t("chat.environment.db",{db:String(n.runConfig?.databaseKey)})})]}),n.skillCategories&&n.skillCategories.length>0&&(0,e.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:4,padding:"3px 8px",borderRadius:6,fontSize:10,fontWeight:500,color:"#9333ea",background:"rgba(168,85,247,0.08)",border:"1px solid rgba(168,85,247,0.2)",cursor:"default",whiteSpace:"nowrap",lineHeight:"16px"},children:[(0,e.jsx)(ue,{size:10}),(0,e.jsx)("span",{children:t("chat.environment.skills",{skills:n.skillCategories.join(", ")})})]})]})}),D&&(0,e.jsx)(H,{icon:(0,e.jsx)(fe,{size:12}),label:t("chat.environment.channels"),count:0,children:(0,e.jsx)(ye,{type:"secondary",style:{fontSize:10,fontStyle:"italic"},children:t("chat.environment.noChannels")})})]})]})})};var o=A(E()),{Text:Y}=Q,ht=300;function Ze(r){if(typeof r=="string")try{let t=JSON.parse(r);return t&&typeof t=="object"&&!Array.isArray(t)?t:null}catch{return null}return r&&typeof r=="object"&&!Array.isArray(r)?r:null}function kt(r){let t=null;if(typeof r=="string")try{t=JSON.parse(r)}catch{return null}else r&&typeof r=="object"&&(t=r);if(!t)return null;if(t.type!=="workflow")return console.warn("[extractDSL] type is not 'workflow':",t.type),null;if(typeof t.workflowYaml!="string")return console.warn("[extractDSL] workflowYaml not found or not a string, keys:",Object.keys(t)),null;try{return be(t.workflowYaml)}catch(n){return console.error("[extractDSL] expandWorkflow failed:",n.message,n),null}}function xt({workflows:r,selectedId:t,onSelect:n,onCreate:f,onDelete:D,dsl:l,agentNameMap:u,onSpecClick:w,environmentConfig:g}){let m=P(),y=r.find(p=>p.id===t),[b,S]=(0,i.useState)(!0),[h,k]=(0,i.useState)(""),z=(0,i.useMemo)(()=>{let p=h.trim().toLowerCase();return p?r.filter(x=>x.name.toLowerCase().includes(p)||x.description.toLowerCase().includes(p)):r},[r,h]);(0,i.useEffect)(()=>{t?S(!1):(S(!0),k(""))},[t]);let I=p=>{n(p),S(!1)};return(0,o.jsx)("div",{style:{display:"flex",height:"100%",width:"100%"},children:(0,o.jsxs)("div",{style:{flex:1,position:"relative"},children:[y?(0,o.jsxs)(o.Fragment,{children:[l?(0,o.jsx)(Ue,{dsl:l,agentNameMap:u}):(0,o.jsx)("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100%"},children:(0,o.jsx)(ae,{tip:m("chatWorkspace.workflowAutomation.loadingDsl")})}),!b&&(0,o.jsx)("div",{style:{position:"absolute",top:12,left:12,zIndex:10},children:(0,o.jsx)($,{type:"default",icon:(0,o.jsx)(De,{}),onClick:()=>S(!0),style:{width:32,height:32,borderRadius:10,boxShadow:"0 2px 12px rgba(0,0,0,0.08)",border:"1px solid #f0f0f0",background:"rgba(255,255,255,0.95)",color:"#6366f1",display:"flex",alignItems:"center",justifyContent:"center"}})}),(0,o.jsxs)("div",{style:{position:"absolute",top:12,left:b?12:56,zIndex:10,display:"flex",alignItems:"center",gap:6,height:32,padding:"0 14px",background:"rgba(255,255,255,0.95)",borderRadius:10,boxShadow:"0 2px 12px rgba(0,0,0,0.08)",border:"1px solid #f0f0f0"},children:[(0,o.jsx)(Z,{size:16,color:"#6366f1"}),(0,o.jsx)(Y,{strong:!0,style:{fontSize:13},children:y.name}),(0,o.jsx)(Me,{style:{color:"#6366f1",cursor:"pointer",fontSize:15},onClick:w})]}),(0,o.jsx)("div",{style:{position:"absolute",top:12,right:12,zIndex:10,display:"flex",alignItems:"center",height:32,padding:"0 14px",background:"rgba(255,255,255,0.95)",borderRadius:10,boxShadow:"0 2px 12px rgba(0,0,0,0.08)",border:"1px solid #f0f0f0"},children:(0,o.jsx)(Ae,{title:m("chatWorkspace.workflowAutomation.deleteTitle"),description:m("chatWorkspace.workflowAutomation.deleteBody"),onConfirm:()=>D(y.id),okText:m("common.delete"),cancelText:m("common.cancel"),okButtonProps:{danger:!0},children:(0,o.jsx)(Te,{style:{color:"#ff4d4f",cursor:"pointer",fontSize:15}})})}),!b&&(0,o.jsx)("div",{style:{position:"absolute",top:52,left:b?12:56,zIndex:20},children:(0,o.jsx)(Qe,{graphDef:g},y.id)})]}):(0,o.jsx)("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100%"},children:(0,o.jsx)(G,{description:m("chatWorkspace.workflowAutomation.selectWorkflow")})}),b&&(0,o.jsxs)(o.Fragment,{children:[t&&(0,o.jsx)("div",{onClick:()=>S(!1),style:{position:"absolute",inset:0,zIndex:25,background:"transparent"}}),(0,o.jsxs)(Ie,{size:"small",title:(0,o.jsx)(Y,{strong:!0,style:{fontSize:15,color:"#1a1a1a"},children:m("chatWorkspace.workflowAutomation.title")}),extra:(0,o.jsx)($,{type:"text",size:"small",icon:(0,o.jsx)(le,{}),onClick:f,style:{color:"#6366f1"}}),styles:{body:{padding:"12px 16px 16px"},header:{padding:"14px 16px 10px",borderBottom:"1px solid rgba(0,0,0,0.04)"}},style:{position:"absolute",left:16,top:t?56:48,bottom:16,width:300,zIndex:30,borderRadius:16,boxShadow:"0 4px 24px rgba(0,0,0,0.12)",border:"1px solid #f0f0f0",overflow:"auto",background:"rgba(255, 255, 255, 0.92)"},children:[(0,o.jsx)("div",{style:{marginBottom:12},children:(0,o.jsx)(J,{prefix:(0,o.jsx)(Le,{style:{color:"#bbb"}}),placeholder:m("chatWorkspace.workflowAutomation.filterPlaceholder"),value:h,onChange:p=>k(p.target.value),allowClear:!0,size:"small",style:{borderRadius:10,border:"1px solid rgba(0,0,0,0.06)"}})}),z.length===0?(0,o.jsxs)("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",padding:"32px 16px",color:"#bbb"},children:[(0,o.jsx)(Z,{size:28,style:{marginBottom:10,opacity:.4}}),(0,o.jsx)(Y,{type:"secondary",style:{fontSize:13},children:h.trim()?m("chatWorkspace.workflowAutomation.noMatch"):m("chatWorkspace.workflowAutomation.emptyTitle")})]}):z.map(p=>{let x=t===p.id;return(0,o.jsxs)("div",{onClick:()=>I(p.id),style:{display:"flex",alignItems:"center",gap:12,padding:"13px 15px",borderRadius:12,cursor:"pointer",transition:"all 0.2s ease",background:x?"rgba(99, 102, 241, 0.07)":"rgba(255, 255, 255, 0.5)",border:x?"1px solid rgba(99, 102, 241, 0.25)":"1px solid transparent",marginBottom:6},onMouseEnter:R=>{x||(R.currentTarget.style.background="rgba(255, 255, 255, 0.92)",R.currentTarget.style.boxShadow="0 2px 8px rgba(0,0,0,0.05)",R.currentTarget.style.transform="translateY(-1px)",R.currentTarget.style.borderColor="rgba(0,0,0,0.06)")},onMouseLeave:R=>{x||(R.currentTarget.style.background="rgba(255, 255, 255, 0.5)",R.currentTarget.style.boxShadow="none",R.currentTarget.style.transform="translateY(0)",R.currentTarget.style.borderColor="transparent")},children:[(0,o.jsx)("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",width:38,height:38,borderRadius:10,background:x?"rgba(99, 102, 241, 0.12)":"rgba(0, 0, 0, 0.04)",flexShrink:0,transition:"background 0.2s ease"},children:(0,o.jsx)(Z,{size:18,color:x?"#6366f1":"#888"})}),(0,o.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,o.jsx)(Y,{strong:!0,ellipsis:{tooltip:p.name},style:{fontSize:14,color:x?"#6366f1":"#1a1a1a",transition:"color 0.2s ease"},children:p.name}),p.description&&(0,o.jsx)("div",{style:{fontSize:12,color:"#999",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",marginTop:3,lineHeight:"18px"},children:p.description})]})]},p.id)})]})]})]})})}var vt=()=>{let r=P(),{get:t,del:n}=te(),{workspaceId:f,trainingProjects:D,loading:l}=ee(),[u,w]=(0,i.useState)([]),[g,m]=(0,i.useState)(null),[y,b]=(0,i.useState)(null),[S,h]=(0,i.useState)(null),[k,z]=(0,i.useState)([]),[I,p]=(0,i.useState)(new Map),x=(0,i.useCallback)(async()=>{try{let s=await t("/api/assistants");if(s.success&&s.data?.records){let c=[],a=new Map;for(let d of s.data.records){if(d.id&&d.name){let v=typeof d.graphDefinition=="object"&&d.graphDefinition!==null?d.graphDefinition:void 0;a.set(d.id,{name:d.name,type:v?.type??"unknown"})}if(d.graphDefinition)if(typeof d.graphDefinition=="string")try{c.push(JSON.parse(d.graphDefinition))}catch{}else typeof d.graphDefinition=="object"&&c.push(d.graphDefinition)}z(c),p(a)}}catch{}},[t]),[R,he]=(0,i.useState)(!0),[ne,et]=(0,i.useState)(420),_=(0,i.useRef)(null),[tt,ot]=(0,i.useState)(!0),[ke,xe]=(0,i.useState)(null),[nt,ve]=(0,i.useState)(!1),[Ce,F]=(0,i.useState)(!1),[rt,Se]=(0,i.useState)(null),it=(0,i.useMemo)(()=>["create_workflow","update_workflow","validate_workflow","create_agent","update_agent","delete_agent"],[]),T=(0,i.useCallback)(async()=>{let s=await t("/api/assistants");if(s.success&&s.data?.records){let c=s.data.records.filter(a=>(Ze(a.graphDefinition)??void 0)?.type==="workflow").map(a=>{let d=Ze(a.graphDefinition)??void 0,v=typeof d?.workflowYaml=="string"?d.workflowYaml:"",B=d?.metadata,N=0;try{N=be(v).nodes.filter(W=>W.type!=="terminal").length}catch{}return{id:a.id,name:a.name,description:a.description||"",type:"workflow",stepCount:N,trainingProjectId:typeof B?.trainingProjectId=="string"?B.trainingProjectId:void 0}});w(c)}xe(null)},[t]),K=(0,i.useCallback)(async s=>{try{let c=await t(`/api/assistants/${s}`);if(c.success&&c.data){let a=c.data.graphDefinition,d=kt(a);if(b(d),!a)h(null);else if(typeof a=="string")try{h(JSON.parse(a))}catch{h(null)}else h(typeof a=="object"?a:null)}}catch{b(null),h(null)}},[t]);(0,i.useEffect)(()=>{let s=!1;return(async()=>{try{await T(),await x()}catch(a){s||xe(a instanceof Error?a.message:r("chatWorkspace.workflowAutomation.loadFailed"))}finally{s||ot(!1)}})(),()=>{s=!0}},[T]),(0,i.useEffect)(()=>{g?K(g):b(null)},[g,K]);let st=(0,i.useCallback)(s=>{s.preventDefault(),_.current={startX:s.clientX,startWidth:ne}},[ne]);(0,i.useEffect)(()=>{let s=a=>{if(!_.current)return;let d=_.current.startX-a.clientX,v=Math.min(900,Math.max(400,_.current.startWidth+d));et(v)},c=()=>{_.current=null};return window.addEventListener("mousemove",s),window.addEventListener("mouseup",c),()=>{window.removeEventListener("mousemove",s),window.removeEventListener("mouseup",c)}},[]);let L=(0,i.useRef)(null),Re=(0,i.useRef)({fetchWorkflows:T,fetchDSL:K});Re.current={fetchWorkflows:T,fetchDSL:K};let We=(0,i.useRef)(g);We.current=g;let at=(0,i.useCallback)(()=>{L.current&&clearTimeout(L.current),L.current=setTimeout(()=>{L.current=null;let{fetchWorkflows:s,fetchDSL:c}=Re.current;s().catch(d=>{console.warn("Failed to refresh workflows:",d)});let a=We.current;a&&c(a).catch(d=>{console.warn("Failed to refresh workflow DSL:",d)})},ht)},[]);(0,i.useEffect)(()=>()=>{L.current&&(clearTimeout(L.current),L.current=null)},[]);let lt=(0,i.useCallback)(s=>{m(s)},[]),ze=(0,i.useCallback)((s,c,a)=>{F(!1),T().then(()=>{m(s),a&&w(d=>d.map(v=>v.id===s?{...v,trainingProjectId:a}:v)),c&&Se({requestId:s,content:c})})},[T]),dt=(0,i.useCallback)(async s=>{await n(`/api/assistants/${s}`),g===s&&m(null),await T()},[n,T,g]),O=(0,i.useMemo)(()=>u.find(s=>s.id===g)||null,[u,g]),re=O?.trainingProjectId??D[0]?.id??null,ct=(0,i.useMemo)(()=>g&&O?{id:g,name:O.name,type:"workflow"}:null,[g,O]),pt=(0,i.useMemo)(()=>{let s=y?.nodes.filter(C=>C.type!=="terminal"&&C.ref).map(C=>C.ref).filter((C,W,M)=>M.indexOf(C)===W)??[];if(s.length===0)return S;let c=k.filter(C=>{let W=C.key;return W&&s.includes(W)});if(c.length===0)return S;let a={...S??{}},d=new Set(a.tools??[]),v=[...a.middleware??[]],B=new Set(a.subAgents??[]),N=new Set(v.map(C=>C.type).filter(Boolean));for(let C of c){let W=C;for(let M of W.tools??[])d.add(M);for(let M of W.middleware??[]){let ie=M.type;ie&&!N.has(ie)&&(v.push(M),N.add(ie))}for(let M of W.subAgents??[])B.add(M)}return a.tools=Array.from(d),a.middleware=v,a.subAgents=Array.from(B),a},[y,S,k]);return tt?(0,o.jsx)("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100%"},children:(0,o.jsx)(ae,{size:"large",tip:r("chatWorkspace.workflowAutomation.loading")})}):ke?(0,o.jsx)(G,{description:ke}):u.length===0?(0,o.jsxs)("div",{style:{width:"100%",height:"100%"},children:[(0,o.jsx)(we,{open:Ce,onCancel:()=>F(!1),onCreated:ze,type:"workflow"}),(0,o.jsx)(G,{description:r("chatWorkspace.workflowAutomation.noDefinitions"),children:(0,o.jsx)($,{type:"primary",icon:(0,o.jsx)(le,{}),onClick:()=>F(!0),children:r("chatWorkspace.workflowAutomation.createWorkflow")})})]}):(0,o.jsxs)("div",{style:{width:"100%",height:"100%"},children:[(0,o.jsx)(we,{open:Ce,onCancel:()=>F(!1),onCreated:ze,type:"workflow"}),(0,o.jsx)(V,{title:O?.name,open:nt,onCancel:()=>ve(!1),footer:null,width:"85vw",centered:!0,styles:{body:{maxHeight:"calc(85vh - 120px)",overflow:"auto",padding:"12px 24px 24px"}},children:O?.description?(0,o.jsx)(He,{content:O.description}):(0,o.jsx)(Y,{type:"secondary",children:r("chatWorkspace.workflowAutomation.noDescription")})}),(0,o.jsx)(Ye,{children:(0,o.jsxs)("div",{style:{height:"100%",width:"100%",position:"relative",overflow:"hidden"},children:[(0,o.jsx)(xt,{workflows:u,selectedId:g,onSelect:lt,onCreate:()=>F(!0),onDelete:dt,dsl:y,agentNameMap:I,onSpecClick:()=>ve(!0),environmentConfig:pt}),!R&&g&&(0,o.jsx)("div",{style:{position:"absolute",right:0,top:"50%",transform:"translateY(-50%)",zIndex:20},children:(0,o.jsx)("div",{onClick:()=>he(!0),style:{writingMode:"vertical-rl",textOrientation:"mixed",padding:"16px 8px",background:"#6366f1",color:"#fff",borderRadius:"8px 0 0 8px",cursor:"pointer",fontSize:12,fontWeight:500,userSelect:"none"},children:r("chatWorkspace.workflowAutomation.copilot")})}),R&&g&&re&&!l&&(0,o.jsxs)("div",{style:{position:"absolute",right:16,top:48,bottom:12,zIndex:15,width:ne,borderRadius:16,overflow:"hidden",boxShadow:"0 4px 24px rgba(0,0,0,0.12)"},children:[(0,o.jsx)("div",{onMouseDown:st,style:{position:"absolute",left:0,top:0,bottom:0,width:6,cursor:"ew-resize",zIndex:2,background:"transparent"}}),(0,o.jsx)(Ke,{defaultWorkspaceId:f??void 0,defaultProjectId:re??void 0,children:(0,o.jsx)(Ge,{workflowContext:ct,onClose:()=>he(!1),onToolCompleted:s=>{it.includes(s)&&at()},initialMessageRequest:rt,onInitialMessageSubmitted:s=>Se(c=>c?.requestId===s?null:c)})},`${f??"default"}:${re??"default"}`)]})]})})]})},Qt=vt;export{vt as WorkflowAutomationView,Qt as default};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{Pa as T,Xa as C,Ya as j,va as S}from"./embed-page-chunk-
|
|
1
|
+
import{Pa as T,Xa as C,Ya as j,va as S}from"./embed-page-chunk-P477ZTUO.js";import{r as d,y as x}from"./embed-page-chunk-2PFKLMTR.js";import{a as p}from"./embed-page-chunk-QV7QAJ4N.js";import{La as I,U as v,W as b,lb as P}from"./embed-page-chunk-MHGVD4EV.js";import{a as M}from"./embed-page-chunk-R5QL57JJ.js";import{f as a}from"./embed-page-chunk-QBTAJ2YI.js";var h=a(M());var t=a(p()),{Text:c}=I,_=({workflowContext:e,onClose:g,onToolCompleted:m,initialMessageRequest:n,onInitialMessageSubmitted:u,attemptedInitialMessageRequestIdsRef:f,rawInitialMessage:o,showHeader:s=!0})=>{let r=d(),$=x("agent-architect"),y=e?.id?`${$.tenantId}:${e.id}`:null,A=(0,h.useMemo)(()=>{if(e?.id&&e?.name)return e.type==="agent"?`[Context: You're viewing agent "${e.name}" (assistant: ${e.id})]`:`[Context: You're viewing workflow "${e.name}" (agent: ${e.id})]`},[e]),L=(0,h.useMemo)(()=>{if(!n||!e?.id)return null;if(o)return n;let l;return e.type==="workflow"?l=[`Purpose: ${n.content.trim()}`,"",`Workflow "${e.id}" has been created with an empty YAML DSL. Based on the purpose above, load the 'create-workflow' skill, design the workflow using the YAML needs+if DSL, and update it via update_workflow. Make sure to include a descriptive name.`].join(`
|
|
2
2
|
`):l=[`Purpose: ${n.content.trim()}`,"",`Configure the topology for workflow "${e.id}" based on this purpose. Create sub-agents, set up the processing pipeline, and wire them together with topology edges.`,"The current name is a placeholder \u2014 feel free to update it via update_processing_agent if you have a better one."].join(`
|
|
3
3
|
`),{...n,content:l}},[n?.requestId,n?.content,e?.id,e?.type,o]);return(0,t.jsxs)("div",{style:{height:"100%",display:"flex",flexDirection:"column",borderLeft:"1px solid #f0f0f0",background:"rgba(255, 255, 255, 0.92)"},children:[s&&(0,t.jsxs)("div",{style:{padding:"12px 12px",borderBottom:"1px solid #f0f0f0",display:"flex",justifyContent:"space-between",alignItems:"flex-start"},children:[(0,t.jsxs)("div",{children:[(0,t.jsx)(c,{strong:!0,children:r("chat.copilot.agentBuilder")}),e&&(0,t.jsx)("div",{children:(0,t.jsx)(c,{type:"secondary",style:{fontSize:12},children:r("chat.copilot.viewing",{name:e.name})})})]}),g&&(0,t.jsx)(b,{type:"text",size:"small","aria-label":r("chat.copilot.close"),icon:(0,t.jsx)(P,{}),onClick:g})]}),y?(0,t.jsxs)(S,{threadId:y,assistantId:"agent-architect",options:{streaming:!0},onToolCompleted:m,children:[(0,t.jsx)(C,{request:L,onSubmitted:u,attemptedRequestIdsRef:f}),(0,t.jsx)(j,{showHeader:!1,showEmptyState:!1,showDatabaseSlot:!1,showSkillSlot:!1,showAgentSlot:!1,showMetricsDataSourceSlot:!1,systemContext:A})]}):(0,t.jsxs)("div",{style:{flex:1,minHeight:0,display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",height:"100%",textAlign:"center",gap:4,padding:"0 8px"},children:[(0,t.jsx)(c,{strong:!0,children:r("chat.copilot.agentBuilder")}),(0,t.jsx)(c,{type:"secondary",children:r("chat.copilot.selectWorkflow")})]})]})};var i=a(p()),O=({project:e,projects:g,value:m,onChange:n,selectable:u=!0,loading:f})=>{let o=d();return e?(0,i.jsxs)("div",{"data-testid":"training-context-card",style:{display:"flex",alignItems:"center",gap:8},children:[(0,i.jsx)("span",{style:{fontSize:12,color:"rgba(0,0,0,0.45)",flexShrink:0},children:o("governance.learning.projectLabel")}),u?(0,i.jsx)(T,{kind:"training",value:m??e.id,onChange:s=>{s&&n?.(s)},style:{minWidth:0}}):(0,i.jsx)("span",{style:{fontSize:12,fontWeight:500},children:e.name})]}):f?null:(0,i.jsx)(v,{type:"warning",showIcon:!0,message:o("governance.learning.noProject"),description:o("governance.learning.noProjectDescription")})};export{O as a,_ as b};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as fr,b as An}from"./embed-page-chunk-
|
|
1
|
+
import{a as fr,b as An}from"./embed-page-chunk-BVSC3MSO.js";import{b as $i,c as Hi}from"./embed-page-chunk-GKHIPXZ2.js";import{a as Co}from"./embed-page-chunk-UHH575CK.js";import{c as To,d as Ro}from"./embed-page-chunk-WTOAQDQN.js";import{b as st,c as Ni,d as wo,e as Rt,f as xo,g as Oi,h as In,i as Cn,j as Fi,l as _i,m as zi}from"./embed-page-chunk-V2GBFWLG.js";import{a as qi,b as Ui}from"./embed-page-chunk-DWIBLGBW.js";import{A as fi,Aa as Pi,Ba as vo,C as mi,Ca as ho,D as yi,F as fo,Fa as Tn,L as vi,La as Rn,Ma as bo,Na as Ei,Qa as Di,Ra as Li,Sa as Mi,Ta as ko,Y as hi,Z as bi,_ as ki,aa as wi,ba as xi,d as di,f as ci,fb as Wi,g as Kn,ga as Ti,gb as Io,hb as So,ib as Ao,jb as Bi,ka as Ri,kb as Po,lb as ji,mb as Gi,nb as Eo,oa as mo,ob as Sn,p as ui,pa as Ii,qa as Ci,qb as gr,ra as Si,rb as Ki,sa as Nt,x as pi,xa as Ai,z as gi,za as yo}from"./embed-page-chunk-P477ZTUO.js";import{C as uo,D as et,j as Jr,q as ei,r as z,v as ti,y as vt}from"./embed-page-chunk-2PFKLMTR.js";import{a as W}from"./embed-page-chunk-QV7QAJ4N.js";import{Bb as xn,Cb as ii,Cc as ai,Ec as si,Fc as ur,Gc as pr,Ha as co,Ia as He,Ja as Yr,La as Be,Ma as Xr,Rc as li,Sb as cr,U as Yt,W as U,Wa as ni,Y as wn,Z as Gt,_ as it,aa as Xt,ca as lr,da as dr,eb as oi,ec as go,fa as Zr,ia as cn,la as Vr,lb as Gn,na as Qr,nb as ri,oa as Lt,ra as ge,sb as po,ta as Me,va as Tt,xa as at,xc as Mt,ya as ze}from"./embed-page-chunk-MHGVD4EV.js";import{a as Ie}from"./embed-page-chunk-R5QL57JJ.js";import{f as R}from"./embed-page-chunk-QBTAJ2YI.js";var Zs={react:{label:"capability",color:"blue"},capability:{label:"capability",color:"blue"},deep_agent:{label:"orchestrator",color:"orange"},orchestrator:{label:"orchestrator",color:"orange"},team:{label:"team",color:"green"},processing:{label:"workflow",color:"purple"},workflow:{label:"workflow",color:"purple"},a2a_remote:{label:"remote",color:"cyan"},remote:{label:"remote",color:"cyan"}};function Pn(e){return Zs[e]??{label:"capability",color:"blue"}}var Vs={enabled:"green",draft:"orange",disabled:"default"};function Vi(e){return Vs[e]??"default"}var Zi={blue:"#3b82f6",orange:"#f59e0b",green:"#22c55e",purple:"#a855f7",cyan:"#06b6d4"};function qn(e){return Zi[e]??Zi.cyan}function Jd(e){let t={enabled:"#22c55e",draft:"#f59e0b",disabled:"#d9d9d9"};return t[e]??t.disabled}function En(e){return typeof e.graphDefinition=="object"&&e.graphDefinition!==null?e.graphDefinition:{}}function yr(e){return((En(e).metadata??{}).tags??"").split(",").map(r=>r.trim()).filter(Boolean)}function vr(e){let o=(En(e).metadata??{}).version;return o?o.startsWith("v")?o:`v${o}`:"v1"}function hr(e){let o=(En(e).metadata??{}).status??"enabled";return o==="draft"||o==="disabled"?o:"enabled"}function mr(e){let n=En(e).subAgents??[],o=Array.isArray(n)?n.filter(Boolean):[];return Array.from(new Set(o))}function ec(e){return e.map(t=>{let n=En(t),o=String(n.type??"react");return{id:t.id,name:t.name,description:t.description,type:Pn(o).label,tags:yr(t),version:vr(t),status:hr(t),subAgents:mr(t)}})}function tc(e){let t=new Set(e.map(r=>r.id)),n=e.map(r=>({id:r.id,label:r.name,type:Pn(String(En(r).type??"react")).label,subAgentCount:mr(r).length})),o=[];for(let r of e)for(let i of mr(r))t.has(i)&&o.push({source:r.id,target:i});return{nodes:n,edges:o}}var Se=R(Ie());var te=R(Ie());var b=R(W()),{TextArea:Qs}=Me,{Text:It}=Be,Qi=["data","execution","workflow","assistant"],Yi={data:"chatConfig.agentPanel.category.data",execution:"chatConfig.agentPanel.category.execution",workflow:"chatConfig.agentPanel.category.workflow",assistant:"chatConfig.agentPanel.category.assistant",other:"chatConfig.agentPanel.category.other"},Ys={react:"chatConfig.agentPanel.typeDesc.react",deep_agent:"chatConfig.agentPanel.typeDesc.deepAgent",team:"chatConfig.agentPanel.typeDesc.team",processing:"chatConfig.agentPanel.typeDesc.processing"},$n=(e,t)=>{if(Array.isArray(e)){let n=e.map(o=>$n(o));return(t==="tools"||t==="subAgents")&&n.every(o=>typeof o=="string")?[...n].sort():n}return e!==null&&typeof e=="object"?Object.fromEntries(Object.entries(e).sort(([n],[o])=>n.localeCompare(o)).map(([n,o])=>[n,$n(o,n)])):e},Xi=e=>{if(typeof e!="string")return $n(e??null);try{return $n(JSON.parse(e))}catch{return e}},Ji=e=>JSON.stringify($n({...e,tools:[...e.tools].sort(),subAgents:[...e.subAgents].sort()})),Xs=Si(({token:e,css:t})=>({modalBody:t`
|
|
2
2
|
padding: 0;
|
|
3
3
|
height: 92vh;
|
|
4
4
|
width: 100%;
|
|
@@ -239,4 +239,4 @@ export function HooksExample({ currentUser }: ExampleProps) {
|
|
|
239
239
|
.agent-detail__identity-pill { max-width: calc(100% - 24px) !important; right: 12px; }
|
|
240
240
|
.agent-detail__actions-pill { top: 52px !important; left: 12px; right: auto !important; }
|
|
241
241
|
}
|
|
242
|
-
`,Yd=e=>e==="configuration"?{kind:"configuration"}:e==="playground"?{kind:"playground"}:e==="eval"?{kind:"eval",initial:{page:"suites"},navigationKey:0}:e==="web-apps"?{kind:"web-apps"}:null,Xd=e=>{let t=e;if(typeof e=="string")try{t=JSON.parse(e)}catch{return{}}return t!==null&&typeof t=="object"&&!Array.isArray(t)?t:{}},iy=({assistant:e,allAssistants:t,onBack:n,onDeleted:o,initialTab:r="graph",onSave:i,onAssistantUpdated:l,onAgentListInvalidated:c,initialMessage:d=null,initialMessageCustomRunConfig:a=null,initialProjectId:y=null})=>{let g=z(),[u,f]=(0,Se.useState)(()=>Yd(r)),[s,v]=(0,Se.useState)(!1),[k,h]=(0,Se.useState)(!1),[m,w]=(0,Se.useState)(null),[C,P]=(0,Se.useState)(0),S=(0,Se.useRef)(null),$=(0,Se.useRef)(()=>{}),E=(0,Se.useRef)(0),x=(0,Se.useRef)(null),M=(0,Se.useRef)(null),de=(0,Se.useRef)(null),X=(0,Se.useRef)(null),V=(0,Se.useRef)(null),pe=(0,Se.useRef)(null),A=(0,Se.useRef)(null),[G,F]=(0,Se.useState)(()=>d?{requestId:`initial:${e.id}`,content:d,...a?{customRunConfig:a}:{}}:null),{workspaceId:Q,trainingProjects:oe}=Nt(),N=Gs(e.graphDefinition),[B,me]=(0,Se.useState)(y??N??oe[0]?.id??null),ee=K=>{me(K)},ke=(K,ye,Xe)=>{let Je=oe.find(Ke=>Ke.id===B)??null;F({requestId:ye,content:Ia({goal:K,roundTaskId:ye,targetAgentId:e.id,targetMode:Ra(e),files:Xe,projectId:B??void 0,workspaceId:Je?.workspaceId??Q??void 0}),customRunConfig:{execution:{taskId:ye}}})},he=K=>{F(ye=>ye?.requestId===K?null:ye)};(0,Se.useEffect)(()=>{!B&&oe.length>0&&me(oe[0].id)},[B,oe]);let[O,ne]=(0,Se.useState)(!1),[De,j]=(0,Se.useState)(!1),[_,ie]=(0,Se.useState)(!1),[le,L]=(0,Se.useState)(e.graphDefinition),{handleToolCompleted:Le,learningTasks:be,refreshLearningTasks:Ce,evalTick:Ee}=$s({agentId:e.id,projectId:B,onAssistantUpdated:l,onAgentListInvalidated:c});(0,Se.useEffect)(()=>{L(e.graphDefinition)},[e]);let Ne=typeof e.graphDefinition=="object"?e.graphDefinition:{},rt=String(Ne.type??"react"),We=Pn(rt),tt=rt==="workflow"?mo:Kn,Oe=yr(e),mt=hr(e),kt=Vi(mt),At=K=>{K.kind==="back"?n():K.kind==="close"?f(null):K.kind==="architect"?(f(null),P(ye=>ye+1)):f(K.view)},Ge=K=>{if(!S.current&&!(K.kind==="dock"&&K.view.kind!=="node"&&u?.kind===K.view.kind&&K.view.kind!=="eval")){if(u?.kind==="configuration"&&s){S.current=K,w(K);return}At(K)}};$.current=Ge;let sn=K=>{let ye=K??(document.activeElement instanceof HTMLElement?document.activeElement:void 0);return ye?{current:ye}:void 0},ln=(0,Se.useCallback)(K=>{let ye=++E.current;$.current({kind:"dock",view:{kind:"eval",initial:{page:"suites"},navigationKey:ye,restoreFocusRef:sn(K)}})},[]),dn=()=>{S.current=null,w(null),requestAnimationFrame(()=>A.current?.())},Bt=()=>{let K=S.current;K&&(S.current=null,w(null),v(!1),At(K))},wt=()=>{j(!0)},Ze=async()=>{ne(!0);try{await o(e.id),j(!1)}finally{ne(!1)}},xt=K=>(L(K),i?.(e,K)),kn=i?async(K,ye)=>{await i(K,ye),L({...Xd(K.graphDefinition),...ye})}:void 0,Vt=K=>{let ye=typeof le=="object"&&le!==null?le:{},Xe={...ye};if(K.type==="tool"&&K.id.startsWith("tool:"))Xe.tools=(ye.tools??[]).filter(Je=>Je!==K.id.slice(5));else if(K.type==="subagent"&&K.id.startsWith("sub:"))Xe.subAgents=(ye.subAgents??[]).filter(Je=>Je!==K.id.slice(4));else if(K.type==="skill"&&K.id.startsWith("skill:")){let Je=K.id.slice(6);Xe.skills=(ye.skills??[]).filter(Ke=>Ke!==Je),Array.isArray(ye.middleware)&&(Xe.middleware=ye.middleware.map(Ke=>{if(Ke.type!=="skill")return Ke;let Pt=typeof Ke.config=="object"&&Ke.config!==null?Ke.config:{};return K.id===br?{...Ke,config:{...Pt,readAll:!1}}:!Array.isArray(Pt.skills)||!Pt.skills.includes(Je)?Ke:{...Ke,config:{...Pt,skills:Pt.skills.filter(nt=>nt!==Je)}}}))}else if(K.type==="capability"&&K.id.startsWith("cap:")){let Je=K.id.slice(4);Xe.middleware=(ye.middleware??[]).filter(Ke=>Ke.type!==Je)}else return;L(Xe),i?.(e,Xe).catch(()=>at.error(g("governance.detail.removeNodeSaveFailed")))};return(0,Y.jsxs)("div",{style:{height:"100%",display:"flex",flexDirection:"column",background:"#fff"},children:[(0,Y.jsx)("style",{"data-agent-detail-responsive":!0,children:Qd}),(0,Y.jsxs)("div",{style:{flex:1,minHeight:0,position:"relative"},children:[(0,Y.jsxs)("div",{"data-testid":"agent-header-pill",className:"agent-detail__identity-pill",style:{position:"absolute",top:12,left:12,zIndex:12,display:"flex",alignItems:"center",gap:8,height:32,padding:"0 10px 0 4px",background:"rgba(255,255,255,0.95)",borderRadius:10,boxShadow:"0 2px 12px rgba(0,0,0,0.08)",border:"1px solid #f0f0f0",maxWidth:"calc(100% - 176px)",minWidth:0},children:[(0,Y.jsx)(U,{type:"text",size:"small",icon:(0,Y.jsx)(ni,{}),onClick:()=>Ge({kind:"back"}),"aria-label":g("common.back")}),(0,Y.jsx)(tt,{size:15,color:qn(We.color)}),(0,Y.jsx)(Hs,{strong:!0,style:{fontSize:13,maxWidth:220,minWidth:0,flex:"1 1 auto",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.name}),(0,Y.jsx)("span",{"data-testid":"agent-status-dot",title:mt,style:{width:8,height:8,borderRadius:"50%",background:qn(kt),flexShrink:0}}),(0,Y.jsx)(U,{type:"text",size:"small","aria-label":g("governance.detail.viewDescription"),icon:(0,Y.jsx)(go,{}),style:{color:"#6366f1"},onClick:()=>ie(!0)})]}),(0,Y.jsxs)("div",{"data-testid":"agent-actions-pill",className:"agent-detail__actions-pill",style:{position:"absolute",top:12,right:12,zIndex:12,display:"flex",alignItems:"center",gap:2,height:32,padding:"0 6px",background:"rgba(255,255,255,0.95)",borderRadius:10,boxShadow:"0 2px 12px rgba(0,0,0,0.08)",border:"1px solid #f0f0f0"},children:[(0,Y.jsx)(Xt,{title:g("governance.detail.testInPlayground"),children:(0,Y.jsx)(U,{ref:x,type:"text",size:"small",icon:(0,Y.jsx)(xi,{size:14}),onClick:()=>Ge({kind:"dock",view:{kind:"playground"}}),"aria-label":g("governance.detail.testInPlayground"),"aria-pressed":u?.kind==="playground",style:u?.kind==="playground"?rr:void 0})}),(0,Y.jsx)(Xt,{title:g("governance.detail.evalSuite"),children:(0,Y.jsx)(U,{ref:M,type:"text",size:"small",icon:(0,Y.jsx)(fo,{size:14}),onClick:()=>ln(M.current??void 0),"aria-label":g("governance.detail.evalSuite"),"aria-pressed":u?.kind==="eval",style:u?.kind==="eval"?rr:void 0})}),(0,Y.jsx)(Xt,{title:g("governance.detail.webApps"),children:(0,Y.jsx)(U,{ref:de,type:"text",size:"small",icon:(0,Y.jsx)(bi,{size:14}),onClick:()=>Ge({kind:"dock",view:{kind:"web-apps"}}),"aria-label":g("governance.detail.webApps"),"aria-pressed":u?.kind==="web-apps",style:u?.kind==="web-apps"?rr:void 0})}),(0,Y.jsx)(Xt,{title:g("governance.detail.configuration"),children:(0,Y.jsx)(U,{ref:X,type:"text",size:"small",icon:(0,Y.jsx)(Ti,{size:14}),onClick:()=>Ge({kind:"dock",view:{kind:"configuration"}}),"aria-label":g("governance.detail.configuration"),"aria-pressed":u?.kind==="configuration",style:u?.kind==="configuration"?rr:void 0})}),(0,Y.jsx)(Xt,{title:g("governance.deleteAgent"),children:(0,Y.jsx)(U,{type:"text",size:"small",danger:!0,icon:(0,Y.jsx)(po,{}),loading:O,onClick:wt,"aria-label":g("governance.deleteAgent")})})]}),rt==="workflow"?(0,Y.jsx)(zs,{graphDefinition:le,assistantId:e.id,assistantName:e.name,workspaceId:Q,description:e.description,hideTitleBar:!0,hudTopOffset:56,initialMessageRequest:G,onInitialMessageSubmitted:he,projectId:B,onProjectChange:ee,onLearningStarted:ke,onToolActivity:Le,learningTasks:be,onLearningRefresh:Ce,evalTick:Ee,architectOpenSignal:C,architectRestoreFocusRef:pe,copilotTemporarilyHidden:u!==null}):(0,Y.jsx)(_s,{graphDefinition:le,assistantId:e.id,assistantName:e.name,workspaceId:Q,hudTopOffset:56,onSelectNode:K=>{K?Ge({kind:"dock",view:{kind:"node",node:K}}):u?.kind==="node"&&Ge({kind:"close"})},onRemoveNode:Vt,initialMessageRequest:G,onInitialMessageSubmitted:he,projectId:B,onProjectChange:ee,onLearningStarted:ke,onToolActivity:Le,learningTasks:be,onLearningRefresh:Ce,evalTick:Ee,architectOpenSignal:C,architectRestoreFocusRef:pe,copilotTemporarilyHidden:u!==null}),u?.kind==="node"&&(0,Y.jsx)(ct,{open:!0,width:Ws(u.node),title:Bs(u.node),onClose:()=>f(null),children:(0,Y.jsx)(js,{node:u.node,graphDefinition:le,assistantId:e.id,onRemoveNode:K=>{Vt(K),f(null)},onSaveGraph:xt})}),u?.kind==="playground"&&(0,Y.jsx)(ct,{open:!0,width:720,title:g("governance.detail.playground"),onClose:()=>Ge({kind:"close"}),restoreFocusRef:x,children:(0,Y.jsx)(Ki,{assistant_id:e.id})}),u?.kind==="eval"&&(0,Y.jsx)(ct,{open:!0,width:860,title:u.initial?.page==="run"?g("governance.detail.runResults"):g("governance.detail.evalSuite"),onClose:()=>Ge({kind:"close"}),restoreFocusRef:u.restoreFocusRef??M,children:(0,Y.jsx)(Lo,{assistantId:e.id,initial:u.initial,navigationKey:u.navigationKey})},u.navigationKey),u?.kind==="web-apps"&&(0,Y.jsx)(ct,{open:!0,width:960,title:g("governance.detail.webApps"),onClose:()=>Ge({kind:"close"}),restoreFocusRef:de,bodyStyle:{padding:0,overflow:"hidden"},children:(0,Y.jsx)(ra,{assistant:e})}),u?.kind==="configuration"&&(0,Y.jsx)(ct,{open:!0,width:"80%",mobileWidth:"calc(100% - 24px)",title:g("governance.detail.configuration"),onClose:()=>Ge({kind:"close"}),bodyStyle:{padding:0,overflow:"hidden"},restoreFocusRef:V,focusControlRef:A,escapeEnabled:!k&&!_&&!De&&m===null,children:(0,Y.jsx)(ta,{assistant:{...e,graphDefinition:le},allAssistants:t,visible:!0,onClose:()=>Ge({kind:"close"}),onSave:kn,onDirtyChange:v,onOverlayOpenChange:h,embedded:!0})})]}),(0,Y.jsx)(ze,{title:g("governance.detail.discardTitle"),open:m!==null,onCancel:dn,onOk:Bt,okText:g("governance.detail.discard"),okButtonProps:{danger:!0},cancelText:g("governance.detail.continueEditing"),children:(0,Y.jsx)("p",{children:g("governance.detail.discardBody")})}),(0,Y.jsxs)(ze,{title:e.name,open:_,onCancel:()=>ie(!1),footer:null,width:640,centered:!0,children:[(0,Y.jsxs)("div",{style:{display:"flex",gap:6,flexWrap:"wrap",marginBottom:12},children:[(0,Y.jsx)(He,{color:We.color,style:{margin:0},children:We.label}),Oe.map(K=>(0,Y.jsx)(He,{color:"magenta",style:{margin:0},children:K},K)),(0,Y.jsx)(He,{style:{margin:0},children:vr(e)}),(0,Y.jsx)(He,{color:kt,style:{margin:0},children:mt})]}),e.description?(0,Y.jsx)(Tn,{content:e.description}):(0,Y.jsx)(Hs,{type:"secondary",children:g("governance.detail.noDescription")})]}),(0,Y.jsx)(ze,{title:g("governance.deleteAgent"),open:De,onCancel:()=>j(!1),onOk:Ze,okText:g("common.delete"),okButtonProps:{danger:!0,loading:O},cancelText:g("common.cancel"),children:(0,Y.jsx)("p",{children:g("governance.detail.deleteConfirm",{name:e.name})})})]})};export{Pn as a,qn as b,Jd as c,ec as d,tc as e,ba as f,wa as g,Zu as h,xa as i,Ta as j,Ia as k,iy as l};
|
|
242
|
+
`,Yd=e=>e==="configuration"?{kind:"configuration"}:e==="playground"?{kind:"playground"}:e==="eval"?{kind:"eval",initial:{page:"suites"},navigationKey:0}:e==="web-apps"?{kind:"web-apps"}:null,Xd=e=>{let t=e;if(typeof e=="string")try{t=JSON.parse(e)}catch{return{}}return t!==null&&typeof t=="object"&&!Array.isArray(t)?t:{}},iy=({assistant:e,allAssistants:t,onBack:n,onDeleted:o,initialTab:r="graph",onSave:i,onAssistantUpdated:l,onAgentListInvalidated:c,initialMessage:d=null,initialMessageCustomRunConfig:a=null,initialProjectId:y=null})=>{let g=z(),[u,f]=(0,Se.useState)(()=>Yd(r)),[s,v]=(0,Se.useState)(!1),[k,h]=(0,Se.useState)(!1),[m,w]=(0,Se.useState)(null),[C,P]=(0,Se.useState)(0),S=(0,Se.useRef)(null),$=(0,Se.useRef)(()=>{}),E=(0,Se.useRef)(0),x=(0,Se.useRef)(null),M=(0,Se.useRef)(null),de=(0,Se.useRef)(null),X=(0,Se.useRef)(null),V=(0,Se.useRef)(null),pe=(0,Se.useRef)(null),A=(0,Se.useRef)(null),[G,F]=(0,Se.useState)(()=>d?{requestId:`initial:${e.id}`,content:d,...a?{customRunConfig:a}:{}}:null),{workspaceId:Q,trainingProjects:oe}=Nt(),N=Gs(e.graphDefinition),[B,me]=(0,Se.useState)(y??N??oe[0]?.id??null),ee=K=>{me(K)},ke=(K,ye,Xe)=>{let Je=oe.find(Ke=>Ke.id===B)??null;F({requestId:ye,content:Ia({goal:K,roundTaskId:ye,targetAgentId:e.id,targetMode:Ra(e),files:Xe,projectId:B??void 0,workspaceId:Je?.workspaceId??Q??void 0}),customRunConfig:{execution:{taskId:ye}}})},he=K=>{F(ye=>ye?.requestId===K?null:ye)};(0,Se.useEffect)(()=>{!B&&oe.length>0&&me(oe[0].id)},[B,oe]);let[O,ne]=(0,Se.useState)(!1),[De,j]=(0,Se.useState)(!1),[_,ie]=(0,Se.useState)(!1),[le,L]=(0,Se.useState)(e.graphDefinition),{handleToolCompleted:Le,learningTasks:be,refreshLearningTasks:Ce,evalTick:Ee}=$s({agentId:e.id,projectId:B,onAssistantUpdated:l,onAgentListInvalidated:c});(0,Se.useEffect)(()=>{L(e.graphDefinition)},[e]);let Ne=typeof e.graphDefinition=="object"?e.graphDefinition:{},rt=String(Ne.type??"react"),We=Pn(rt),tt=rt==="workflow"?mo:Kn,Oe=yr(e),mt=hr(e),kt=Vi(mt),At=K=>{K.kind==="back"?n():K.kind==="close"?f(null):K.kind==="architect"?(f(null),P(ye=>ye+1)):f(K.view)},Ge=K=>{if(!S.current&&!(K.kind==="dock"&&K.view.kind!=="node"&&u?.kind===K.view.kind&&K.view.kind!=="eval")){if(u?.kind==="configuration"&&s){S.current=K,w(K);return}At(K)}};$.current=Ge;let sn=K=>{let ye=K??(document.activeElement instanceof HTMLElement?document.activeElement:void 0);return ye?{current:ye}:void 0},ln=(0,Se.useCallback)(K=>{let ye=++E.current;$.current({kind:"dock",view:{kind:"eval",initial:{page:"suites"},navigationKey:ye,restoreFocusRef:sn(K)}})},[]),dn=()=>{S.current=null,w(null),requestAnimationFrame(()=>A.current?.())},Bt=()=>{let K=S.current;K&&(S.current=null,w(null),v(!1),At(K))},wt=()=>{j(!0)},Ze=async()=>{ne(!0);try{await o(e.id),j(!1)}finally{ne(!1)}},xt=K=>(L(K),i?.(e,K)),kn=i?async(K,ye)=>{await i(K,ye),L({...Xd(K.graphDefinition),...ye})}:void 0,Vt=K=>{let ye=typeof le=="object"&&le!==null?le:{},Xe={...ye};if(K.type==="tool"&&K.id.startsWith("tool:"))Xe.tools=(ye.tools??[]).filter(Je=>Je!==K.id.slice(5));else if(K.type==="subagent"&&K.id.startsWith("sub:"))Xe.subAgents=(ye.subAgents??[]).filter(Je=>Je!==K.id.slice(4));else if(K.type==="skill"&&K.id.startsWith("skill:")){let Je=K.id.slice(6);Xe.skills=(ye.skills??[]).filter(Ke=>Ke!==Je),Array.isArray(ye.middleware)&&(Xe.middleware=ye.middleware.map(Ke=>{if(Ke.type!=="skill")return Ke;let Pt=typeof Ke.config=="object"&&Ke.config!==null?Ke.config:{};return K.id===br?{...Ke,config:{...Pt,readAll:!1}}:!Array.isArray(Pt.skills)||!Pt.skills.includes(Je)?Ke:{...Ke,config:{...Pt,skills:Pt.skills.filter(nt=>nt!==Je)}}}))}else if(K.type==="capability"&&K.id.startsWith("cap:")){let Je=K.id.slice(4);Xe.middleware=(ye.middleware??[]).filter(Ke=>Ke.type!==Je)}else return;L(Xe),i?.(e,Xe).catch(()=>at.error(g("governance.detail.removeNodeSaveFailed")))};return(0,Y.jsxs)("div",{style:{height:"100%",display:"flex",flexDirection:"column",background:"#fff"},children:[(0,Y.jsx)("style",{"data-agent-detail-responsive":!0,children:Qd}),(0,Y.jsxs)("div",{style:{flex:1,minHeight:0,position:"relative"},children:[(0,Y.jsxs)("div",{"data-testid":"agent-header-pill",className:"agent-detail__identity-pill",style:{position:"absolute",top:12,left:12,zIndex:12,display:"flex",alignItems:"center",gap:8,height:32,padding:"0 10px 0 4px",background:"rgba(255,255,255,0.95)",borderRadius:10,boxShadow:"0 2px 12px rgba(0,0,0,0.08)",border:"1px solid #f0f0f0",maxWidth:"calc(100% - 176px)",minWidth:0},children:[(0,Y.jsx)(U,{type:"text",size:"small",icon:(0,Y.jsx)(ni,{}),onClick:()=>Ge({kind:"back"}),"aria-label":g("common.back")}),(0,Y.jsx)(tt,{size:15,color:qn(We.color)}),(0,Y.jsx)(Hs,{strong:!0,style:{fontSize:13,maxWidth:220,minWidth:0,flex:"1 1 auto",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.name}),(0,Y.jsx)("span",{"data-testid":"agent-status-dot",title:mt,style:{width:8,height:8,borderRadius:"50%",background:qn(kt),flexShrink:0}}),(0,Y.jsx)(U,{type:"text",size:"small","aria-label":g("governance.detail.viewDescription"),icon:(0,Y.jsx)(go,{}),style:{color:"#6366f1"},onClick:()=>ie(!0)})]}),(0,Y.jsxs)("div",{"data-testid":"agent-actions-pill",className:"agent-detail__actions-pill",style:{position:"absolute",top:12,right:12,zIndex:12,display:"flex",alignItems:"center",gap:2,height:32,padding:"0 6px",background:"rgba(255,255,255,0.95)",borderRadius:10,boxShadow:"0 2px 12px rgba(0,0,0,0.08)",border:"1px solid #f0f0f0"},children:[(0,Y.jsx)(Xt,{title:g("governance.detail.testInPlayground"),children:(0,Y.jsx)(U,{ref:x,type:"text",size:"small",icon:(0,Y.jsx)(xi,{size:14}),onClick:()=>Ge({kind:"dock",view:{kind:"playground"}}),"aria-label":g("governance.detail.testInPlayground"),"aria-pressed":u?.kind==="playground",style:u?.kind==="playground"?rr:void 0})}),(0,Y.jsx)(Xt,{title:g("governance.detail.evalSuite"),children:(0,Y.jsx)(U,{ref:M,type:"text",size:"small",icon:(0,Y.jsx)(fo,{size:14}),onClick:()=>ln(M.current??void 0),"aria-label":g("governance.detail.evalSuite"),"aria-pressed":u?.kind==="eval",style:u?.kind==="eval"?rr:void 0})}),(0,Y.jsx)(Xt,{title:g("governance.detail.webApps"),children:(0,Y.jsx)(U,{ref:de,type:"text",size:"small",icon:(0,Y.jsx)(bi,{size:14}),onClick:()=>Ge({kind:"dock",view:{kind:"web-apps"}}),"aria-label":g("governance.detail.webApps"),"aria-pressed":u?.kind==="web-apps",style:u?.kind==="web-apps"?rr:void 0})}),(0,Y.jsx)(Xt,{title:g("governance.detail.configuration"),children:(0,Y.jsx)(U,{ref:X,type:"text",size:"small",icon:(0,Y.jsx)(Ti,{size:14}),onClick:()=>Ge({kind:"dock",view:{kind:"configuration"}}),"aria-label":g("governance.detail.configuration"),"aria-pressed":u?.kind==="configuration",style:u?.kind==="configuration"?rr:void 0})}),(0,Y.jsx)(Xt,{title:g("governance.deleteAgent"),children:(0,Y.jsx)(U,{type:"text",size:"small",danger:!0,icon:(0,Y.jsx)(po,{}),loading:O,onClick:wt,"aria-label":g("governance.deleteAgent")})})]}),rt==="workflow"?(0,Y.jsx)(zs,{graphDefinition:le,assistantId:e.id,assistantName:e.name,workspaceId:Q,description:e.description,hideTitleBar:!0,hudTopOffset:56,initialMessageRequest:G,onInitialMessageSubmitted:he,projectId:B,onProjectChange:ee,onLearningStarted:ke,onToolActivity:Le,learningTasks:be,onLearningRefresh:Ce,evalTick:Ee,architectOpenSignal:C,architectRestoreFocusRef:pe,copilotTemporarilyHidden:u!==null}):(0,Y.jsx)(_s,{graphDefinition:le,assistantId:e.id,assistantName:e.name,workspaceId:Q,hudTopOffset:56,onSelectNode:K=>{K?Ge({kind:"dock",view:{kind:"node",node:K}}):u?.kind==="node"&&Ge({kind:"close"})},onRemoveNode:Vt,initialMessageRequest:G,onInitialMessageSubmitted:he,projectId:B,onProjectChange:ee,onLearningStarted:ke,onToolActivity:Le,learningTasks:be,onLearningRefresh:Ce,evalTick:Ee,architectOpenSignal:C,architectRestoreFocusRef:pe,copilotTemporarilyHidden:u!==null}),u?.kind==="node"&&(0,Y.jsx)(ct,{open:!0,width:Ws(u.node),title:Bs(u.node),onClose:()=>f(null),children:(0,Y.jsx)(js,{node:u.node,graphDefinition:le,assistantId:e.id,onRemoveNode:K=>{Vt(K),f(null)},onSaveGraph:xt})}),u?.kind==="playground"&&(0,Y.jsx)(ct,{open:!0,width:720,title:g("governance.detail.playground"),onClose:()=>Ge({kind:"close"}),restoreFocusRef:x,children:(0,Y.jsx)(Ki,{assistant_id:e.id})}),u?.kind==="eval"&&(0,Y.jsx)(ct,{open:!0,width:860,title:u.initial?.page==="run"?g("governance.detail.runResults"):g("governance.detail.evalSuite"),onClose:()=>Ge({kind:"close"}),restoreFocusRef:u.restoreFocusRef??M,children:(0,Y.jsx)(Lo,{assistantId:e.id,initial:u.initial,navigationKey:u.navigationKey})},u.navigationKey),u?.kind==="web-apps"&&(0,Y.jsx)(ct,{open:!0,width:960,title:g("governance.detail.webApps"),onClose:()=>Ge({kind:"close"}),restoreFocusRef:de,bodyStyle:{padding:0,overflow:"hidden"},children:(0,Y.jsx)(ra,{assistant:e})}),u?.kind==="configuration"&&(0,Y.jsx)(ct,{open:!0,width:"80%",mobileWidth:"calc(100% - 24px)",title:g("governance.detail.configuration"),onClose:()=>Ge({kind:"close"}),bodyStyle:{padding:0,overflow:"hidden"},restoreFocusRef:V,focusControlRef:A,escapeEnabled:!k&&!_&&!De&&m===null,children:(0,Y.jsx)(ta,{assistant:{...e,graphDefinition:le},allAssistants:t,visible:!0,onClose:()=>Ge({kind:"close"}),onSave:kn,onDirtyChange:v,onOverlayOpenChange:h,embedded:!0})})]}),(0,Y.jsx)(ze,{title:g("governance.detail.discardTitle"),open:m!==null,onCancel:dn,onOk:Bt,okText:g("governance.detail.discard"),okButtonProps:{danger:!0},cancelText:g("governance.detail.continueEditing"),children:(0,Y.jsx)("p",{children:g("governance.detail.discardBody")})}),(0,Y.jsxs)(ze,{title:e.name,open:_,onCancel:()=>ie(!1),footer:null,width:640,centered:!0,children:[(0,Y.jsxs)("div",{style:{display:"flex",gap:6,flexWrap:"wrap",marginBottom:12},children:[(0,Y.jsx)(He,{color:We.color,style:{margin:0},children:We.label}),Oe.map(K=>(0,Y.jsx)(He,{color:"magenta",style:{margin:0},children:K},K)),(0,Y.jsx)(He,{style:{margin:0},children:vr(e)}),(0,Y.jsx)(He,{color:kt,style:{margin:0},children:mt})]}),e.description?(0,Y.jsx)(Tn,{content:e.description}):(0,Y.jsx)(Hs,{type:"secondary",children:g("governance.detail.noDescription")})]}),(0,Y.jsx)(ze,{title:g("governance.deleteAgent"),open:De,onCancel:()=>j(!1),onOk:Ze,okText:g("common.delete"),okButtonProps:{danger:!0,loading:O},cancelText:g("common.cancel"),children:(0,Y.jsx)("p",{children:g("governance.detail.deleteConfirm",{name:e.name})})})]})};export{Pn as a,qn as b,Jd as c,ec as d,tc as e,wa as f,Zu as g,xa as h,Ta as i,Ia as j,iy as k};
|