@elevasis/ui 2.30.0 → 2.31.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{CoreAuthKitInner-QC62UHTZ.js → CoreAuthKitInner-KSEGSB67.js} +1 -1
- package/dist/api/index.js +3 -3
- package/dist/app/index.d.ts +122 -1
- package/dist/app/index.js +7 -7
- package/dist/auth/context.js +1 -1
- package/dist/auth/index.js +1 -1
- package/dist/charts/index.js +4 -4
- package/dist/{chunk-T5Z7G2J2.js → chunk-3BAPR3KA.js} +1 -1
- package/dist/{chunk-4VQ2PXMI.js → chunk-3FV6HBXS.js} +4 -4
- package/dist/{chunk-2DIYILF7.js → chunk-542WPQU2.js} +2 -2
- package/dist/{chunk-SBCIB5TZ.js → chunk-5LJAEZMA.js} +5 -5
- package/dist/{chunk-T2PAD63Y.js → chunk-7HMCB26R.js} +1 -1
- package/dist/chunk-7KC4P3AU.js +357 -0
- package/dist/{chunk-AKOD52HS.js → chunk-CQZ3DNQY.js} +4 -3
- package/dist/{chunk-I2KLQ2HA.js → chunk-DZTG5IAC.js} +7 -1
- package/dist/{chunk-JCGD4GM6.js → chunk-GRDLB6LM.js} +1 -0
- package/dist/{chunk-JKTPRYGV.js → chunk-HQGF4ATG.js} +9 -55
- package/dist/{chunk-SKXXT3E2.js → chunk-HYNYEBHM.js} +4 -4
- package/dist/{chunk-6EFVZV6X.js → chunk-JKSUN5GN.js} +718 -64
- package/dist/{chunk-LRZFLK2F.js → chunk-L2NVFLXU.js} +3 -3
- package/dist/{chunk-6WXDE5LZ.js → chunk-L3BVJWML.js} +1 -1
- package/dist/{chunk-3MDNBHVB.js → chunk-MVFCLZSK.js} +690 -221
- package/dist/{chunk-HYLERWRO.js → chunk-ND42LPY4.js} +6 -6
- package/dist/{chunk-CLUP5H3C.js → chunk-O2QOPJI5.js} +360 -126
- package/dist/{chunk-X2SUMO3P.js → chunk-P55BJZZW.js} +2 -1
- package/dist/{chunk-4FZYEEPK.js → chunk-Q6OYNEGR.js} +5 -5
- package/dist/{chunk-4SY6BTVZ.js → chunk-QDEETKYT.js} +4 -1
- package/dist/{chunk-IKQ42WHU.js → chunk-QHEWXU7I.js} +1 -1
- package/dist/chunk-R2XR4FCV.js +48 -0
- package/dist/chunk-R66W5UDG.js +26 -0
- package/dist/{chunk-3GV5NHSS.js → chunk-SHQXMW4F.js} +39 -211
- package/dist/{chunk-A7B7HLDF.js → chunk-T3IPHEYJ.js} +1889 -301
- package/dist/{chunk-7E3FUTND.js → chunk-TOIXUWR6.js} +1 -1
- package/dist/{chunk-NITGGYH2.js → chunk-TVRQ6AQI.js} +1 -1
- package/dist/{chunk-CN2HC4D4.js → chunk-UFTM5SZZ.js} +2 -2
- package/dist/{chunk-KVJ3LFH2.js → chunk-VNFR57DF.js} +4 -24
- package/dist/{chunk-P5WYW2GI.js → chunk-Y4FWCG7Y.js} +150 -305
- package/dist/components/chat/index.js +1 -1
- package/dist/components/index.d.ts +205 -11
- package/dist/components/index.js +38 -35
- package/dist/components/navigation/index.js +1 -1
- package/dist/execution/index.d.ts +2 -1
- package/dist/execution/index.js +1 -1
- package/dist/features/auth/index.d.ts +121 -0
- package/dist/features/auth/index.js +1 -1
- package/dist/features/clients/index.css +611 -0
- package/dist/features/clients/index.d.ts +86 -0
- package/dist/features/clients/index.js +719 -0
- package/dist/features/crm/index.d.ts +148 -2
- package/dist/features/crm/index.js +18 -16
- package/dist/features/dashboard/index.d.ts +36 -1
- package/dist/features/dashboard/index.js +14 -14
- package/dist/features/delivery/index.d.ts +121 -0
- package/dist/features/delivery/index.js +18 -16
- package/dist/features/knowledge/index.js +43 -20
- package/dist/features/lead-gen/index.d.ts +17 -11
- package/dist/features/lead-gen/index.js +19 -17
- package/dist/features/monitoring/index.js +17 -16
- package/dist/features/monitoring/requests/index.js +14 -13
- package/dist/features/operations/index.d.ts +38 -2
- package/dist/features/operations/index.js +22 -21
- package/dist/features/seo/index.js +1 -1
- package/dist/features/settings/index.d.ts +121 -0
- package/dist/features/settings/index.js +16 -15
- package/dist/graph/index.js +1 -1
- package/dist/hooks/delivery/index.d.ts +140 -0
- package/dist/hooks/delivery/index.js +3 -3
- package/dist/hooks/index.d.ts +583 -19
- package/dist/hooks/index.js +12 -12
- package/dist/hooks/operations/command-view/utils/transformCommandViewData.d.ts +82 -1
- package/dist/hooks/operations/command-view/utils/transformCommandViewData.js +1 -1
- package/dist/hooks/published.d.ts +583 -19
- package/dist/hooks/published.js +12 -12
- package/dist/index.d.ts +680 -21
- package/dist/index.js +13 -13
- package/dist/initialization/index.d.ts +121 -0
- package/dist/initialization/index.js +1 -1
- package/dist/knowledge/index.d.ts +97 -1
- package/dist/knowledge/index.js +1692 -1039
- package/dist/layout/index.d.ts +6 -0
- package/dist/layout/index.js +4 -4
- package/dist/organization/index.js +1 -1
- package/dist/profile/index.d.ts +121 -0
- package/dist/profile/index.js +1 -1
- package/dist/provider/ElevasisServiceContext.js +1 -1
- package/dist/provider/index.d.ts +218 -2
- package/dist/provider/index.js +10 -10
- package/dist/provider/published.d.ts +218 -2
- package/dist/provider/published.js +7 -7
- package/dist/router/context.js +1 -1
- package/dist/router/index.js +1 -1
- package/dist/sse/index.js +1 -1
- package/dist/supabase/index.d.ts +232 -0
- package/dist/supabase/index.js +1 -1
- package/dist/test-utils/index.js +3 -3
- package/dist/test-utils/setup-integration.js +1 -1
- package/dist/test-utils/setup.js +2 -2
- package/dist/theme/index.js +4 -4
- package/dist/theme/presets/index.js +2 -2
- package/dist/typeform/index.js +1 -1
- package/dist/typeform/schemas.js +1 -1
- package/dist/types/index.d.ts +204 -1
- package/dist/utils/index.d.ts +36 -1
- package/dist/utils/index.js +2 -2
- package/dist/vite/index.js +3 -3
- package/dist/vite-plugin-knowledge/index.js +2 -2
- package/dist/zustand/index.js +1 -1
- package/package.json +13 -4
- /package/dist/{chunk-HXZQWMKE.js → chunk-XQHZBA65.js} +0 -0
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { SemanticIcon } from './chunk-
|
|
1
|
+
import { SemanticIcon } from './chunk-GRDLB6LM.js';
|
|
2
2
|
import { SubshellSidebarLoader } from './chunk-XQQEKWTL.js';
|
|
3
|
-
import { OrganizationModelProspectingSchema, CAPABILITY_REGISTRY } from './chunk-
|
|
3
|
+
import { OrganizationModelProspectingSchema, CAPABILITY_REGISTRY } from './chunk-TVRQ6AQI.js';
|
|
4
4
|
import { useCyberColors, CyberDonut } from './chunk-CW3UNAF2.js';
|
|
5
5
|
import { SubshellSidebarSection } from './chunk-IIMU5YAJ.js';
|
|
6
|
-
import { collectResourceFilterFacets, useCommandViewStore, useCommandViewData, useCommandViewStats, usePaginationState, useResourceExecutions, useCheckpointTasks } from './chunk-
|
|
7
|
-
import { EmptyState, APIErrorAlert } from './chunk-6WXDE5LZ.js';
|
|
8
|
-
import { LabelSchema, ColorTokenSchema, IconNameSchema, PathSchema, DescriptionSchema, DisplayMetadataSchema, ModelIdSchema, ReferenceIdsSchema, OrganizationModelSalesSchema } from './chunk-AKOD52HS.js';
|
|
6
|
+
import { collectResourceFilterFacets, useCommandViewStore, useCommandViewData, useCommandViewStats, usePaginationState, useResourceExecutions, useCheckpointTasks } from './chunk-JKSUN5GN.js';
|
|
9
7
|
import { useElevasisFeatures } from './chunk-6IXOKUBC.js';
|
|
10
|
-
import {
|
|
8
|
+
import { EmptyState, CardHeader, APIErrorAlert } from './chunk-L3BVJWML.js';
|
|
9
|
+
import { LabelSchema, ColorTokenSchema, IconNameSchema, PathSchema, DescriptionSchema, DisplayMetadataSchema, ModelIdSchema, ReferenceIdsSchema, OrganizationModelSalesSchema } from './chunk-CQZ3DNQY.js';
|
|
10
|
+
import { getNodeId } from './chunk-XQHZBA65.js';
|
|
11
11
|
import { useRef, useEffect, useMemo } from 'react';
|
|
12
|
-
import { Paper, Stack, Group, Text, Button, Badge, SimpleGrid, Divider, Select, NumberInput, MultiSelect, Switch, Card, Checkbox, UnstyledButton, useMantineTheme, Box,
|
|
12
|
+
import { Paper, Stack, Group, Text, Button, Badge, SimpleGrid, Tabs, Title, Divider, Select, NumberInput, MultiSelect, Switch, Card, Checkbox, UnstyledButton, useMantineTheme, Box, Space, Center, Loader, Pagination, TextInput, Accordion, SegmentedControl, Anchor } from '@mantine/core';
|
|
13
13
|
import { IconShare2, IconTopologyStar3, IconRefresh, IconCircleX, IconCircleCheck, IconCircleDashed, IconSitemap, IconExternalLink, IconSearch } from '@tabler/icons-react';
|
|
14
14
|
import { z } from 'zod';
|
|
15
15
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
@@ -276,13 +276,104 @@ var OfferingsDomainSchema = z.object({
|
|
|
276
276
|
var DEFAULT_ORGANIZATION_MODEL_OFFERINGS = {
|
|
277
277
|
products: []
|
|
278
278
|
};
|
|
279
|
+
var SystemKindSchema = z.enum(["product", "operational", "platform", "diagnostic"]);
|
|
280
|
+
var SystemStatusSchema = z.enum(["active", "deprecated", "archived"]);
|
|
281
|
+
var SystemIdSchema = ModelIdSchema;
|
|
282
|
+
var SystemEntrySchema = z.object({
|
|
283
|
+
/** Stable tenant-defined system id (e.g. "sys.lead-gen"). */
|
|
284
|
+
id: SystemIdSchema,
|
|
285
|
+
/** Human-readable system title shown in governance and operations UI. */
|
|
286
|
+
title: LabelSchema,
|
|
287
|
+
/** One-paragraph purpose statement for the bounded context. */
|
|
288
|
+
description: DescriptionSchema,
|
|
289
|
+
/** Closed system shape enum; catalog values remain tenant-defined. */
|
|
290
|
+
kind: SystemKindSchema,
|
|
291
|
+
/** Optional role responsible for this system. */
|
|
292
|
+
responsibleRoleId: ModelIdSchema.optional(),
|
|
293
|
+
/** Optional knowledge nodes that govern this system. */
|
|
294
|
+
governedByKnowledge: ReferenceIdsSchema,
|
|
295
|
+
/** Optional goals this system contributes to. */
|
|
296
|
+
drivesGoals: ReferenceIdsSchema,
|
|
297
|
+
status: SystemStatusSchema
|
|
298
|
+
});
|
|
299
|
+
var SystemsDomainSchema = z.object({
|
|
300
|
+
systems: z.array(SystemEntrySchema).default([])
|
|
301
|
+
});
|
|
302
|
+
var DEFAULT_ORGANIZATION_MODEL_SYSTEMS = {
|
|
303
|
+
systems: []
|
|
304
|
+
};
|
|
305
|
+
|
|
306
|
+
// ../core/src/organization-model/domains/resources.ts
|
|
307
|
+
z.enum(["workflow", "agent", "integration"]);
|
|
308
|
+
var ResourceGovernanceStatusSchema = z.enum(["active", "deprecated", "archived"]);
|
|
309
|
+
var AgentKindSchema = z.enum(["orchestrator", "specialist", "utility", "system"]);
|
|
310
|
+
var ResourceIdSchema = z.string().trim().min(1).max(255).regex(/^[A-Za-z0-9]+(?:[-._][A-Za-z0-9]+)*$/, "Resource IDs must use letters, numbers, -, _, or . separators");
|
|
311
|
+
var ResourceEntryBaseSchema = z.object({
|
|
312
|
+
/** Canonical resource id; runtime resourceId derives from this value. */
|
|
313
|
+
id: ResourceIdSchema,
|
|
314
|
+
/** Required single System membership. */
|
|
315
|
+
systemId: SystemIdSchema,
|
|
316
|
+
/** Optional role responsible for maintaining this resource. */
|
|
317
|
+
ownerRoleId: ModelIdSchema.optional(),
|
|
318
|
+
status: ResourceGovernanceStatusSchema
|
|
319
|
+
});
|
|
320
|
+
var WorkflowResourceEntrySchema = ResourceEntryBaseSchema.extend({
|
|
321
|
+
kind: z.literal("workflow"),
|
|
322
|
+
/** Mirrors WorkflowConfig.capabilityKey when the runtime workflow has one. */
|
|
323
|
+
capabilityKey: z.string().trim().min(1).max(255).optional()
|
|
324
|
+
});
|
|
325
|
+
var AgentResourceEntrySchema = ResourceEntryBaseSchema.extend({
|
|
326
|
+
kind: z.literal("agent"),
|
|
327
|
+
/** Mirrors code-side AgentConfig.kind. */
|
|
328
|
+
agentKind: AgentKindSchema,
|
|
329
|
+
/** Role this agent embodies, if any. */
|
|
330
|
+
actsAsRoleId: ModelIdSchema.optional(),
|
|
331
|
+
/** Mirrors AgentConfig.sessionCapable. */
|
|
332
|
+
sessionCapable: z.boolean()
|
|
333
|
+
});
|
|
334
|
+
var IntegrationResourceEntrySchema = ResourceEntryBaseSchema.extend({
|
|
335
|
+
kind: z.literal("integration"),
|
|
336
|
+
provider: z.string().trim().min(1).max(100)
|
|
337
|
+
});
|
|
338
|
+
var ResourceEntrySchema = z.discriminatedUnion("kind", [
|
|
339
|
+
WorkflowResourceEntrySchema,
|
|
340
|
+
AgentResourceEntrySchema,
|
|
341
|
+
IntegrationResourceEntrySchema
|
|
342
|
+
]);
|
|
343
|
+
var ResourcesDomainSchema = z.object({
|
|
344
|
+
entries: z.array(ResourceEntrySchema).default([])
|
|
345
|
+
});
|
|
346
|
+
var DEFAULT_ORGANIZATION_MODEL_RESOURCES = {
|
|
347
|
+
entries: []
|
|
348
|
+
};
|
|
349
|
+
|
|
350
|
+
// ../core/src/organization-model/domains/roles.ts
|
|
351
|
+
var RoleIdSchema = ModelIdSchema;
|
|
352
|
+
var HumanRoleHolderSchema = z.object({
|
|
353
|
+
kind: z.literal("human"),
|
|
354
|
+
userId: z.string().trim().min(1).max(200)
|
|
355
|
+
});
|
|
356
|
+
var AgentRoleHolderSchema = z.object({
|
|
357
|
+
kind: z.literal("agent"),
|
|
358
|
+
agentId: ResourceIdSchema
|
|
359
|
+
});
|
|
360
|
+
var TeamRoleHolderSchema = z.object({
|
|
361
|
+
kind: z.literal("team"),
|
|
362
|
+
memberIds: z.array(z.string().trim().min(1).max(200)).min(1)
|
|
363
|
+
});
|
|
364
|
+
var RoleHolderSchema = z.discriminatedUnion("kind", [
|
|
365
|
+
HumanRoleHolderSchema,
|
|
366
|
+
AgentRoleHolderSchema,
|
|
367
|
+
TeamRoleHolderSchema
|
|
368
|
+
]);
|
|
369
|
+
var RoleHoldersSchema = z.union([RoleHolderSchema, z.array(RoleHolderSchema).min(1)]);
|
|
279
370
|
var RoleSchema = z.object({
|
|
280
371
|
/** Stable unique identifier for the role (e.g. "role-ceo", "role-head-of-sales"). */
|
|
281
|
-
id:
|
|
372
|
+
id: RoleIdSchema,
|
|
282
373
|
/** Human-readable title shown to agents and in UI (e.g. "CEO", "Head of Sales"). */
|
|
283
374
|
title: z.string().trim().min(1).max(200),
|
|
284
375
|
/**
|
|
285
|
-
* List of responsibilities this role owns
|
|
376
|
+
* List of responsibilities this role owns - plain-language descriptions of
|
|
286
377
|
* what the person in this role is accountable for delivering.
|
|
287
378
|
* Defaults to empty array so minimal role definitions stay concise.
|
|
288
379
|
*/
|
|
@@ -290,16 +381,18 @@ var RoleSchema = z.object({
|
|
|
290
381
|
/**
|
|
291
382
|
* Optional: ID of another role this role reports to.
|
|
292
383
|
* When present, must reference another `roles[].id` in the same organization.
|
|
293
|
-
* Cross-reference enforced in `OrganizationModelSchema.superRefine()`.
|
|
294
|
-
* Absence indicates a top-level role (no reporting line).
|
|
295
384
|
*/
|
|
296
|
-
reportsToId:
|
|
385
|
+
reportsToId: RoleIdSchema.optional(),
|
|
297
386
|
/**
|
|
298
|
-
* Optional:
|
|
299
|
-
*
|
|
300
|
-
* any human-readable identifier. Not validated against any user registry.
|
|
387
|
+
* Optional: human, agent, or team holder currently filling this role.
|
|
388
|
+
* Agent holders reference OM Resource IDs and are validated at the model level.
|
|
301
389
|
*/
|
|
302
|
-
heldBy:
|
|
390
|
+
heldBy: RoleHoldersSchema.optional(),
|
|
391
|
+
/**
|
|
392
|
+
* Optional Systems this role is accountable for.
|
|
393
|
+
* Cross-reference enforced in `OrganizationModelSchema.superRefine()`.
|
|
394
|
+
*/
|
|
395
|
+
responsibleFor: z.array(SystemIdSchema).optional()
|
|
303
396
|
});
|
|
304
397
|
var RolesDomainSchema = z.object({
|
|
305
398
|
roles: z.array(RoleSchema).default([])
|
|
@@ -534,8 +627,8 @@ var OrgKnowledgeNodeSchema = z.object({
|
|
|
534
627
|
skills: z.array(KnowledgeSkillBindingSchema).optional(),
|
|
535
628
|
/** Domain key used to derive fast graph->skill registries. */
|
|
536
629
|
domain: KnowledgeDomainBindingSchema.optional(),
|
|
537
|
-
/**
|
|
538
|
-
ownerIds: z.array(
|
|
630
|
+
/** Role identifiers that own this knowledge node. */
|
|
631
|
+
ownerIds: z.array(RoleIdSchema).default([]),
|
|
539
632
|
/** ISO date string (YYYY-MM-DD or full ISO 8601) of last meaningful update. */
|
|
540
633
|
updatedAt: z.string().trim().min(1).max(50)
|
|
541
634
|
});
|
|
@@ -557,6 +650,8 @@ var OrganizationModelSchemaBase = z.object({
|
|
|
557
650
|
offerings: OfferingsDomainSchema.default(DEFAULT_ORGANIZATION_MODEL_OFFERINGS),
|
|
558
651
|
roles: RolesDomainSchema.default(DEFAULT_ORGANIZATION_MODEL_ROLES),
|
|
559
652
|
goals: GoalsDomainSchema.default(DEFAULT_ORGANIZATION_MODEL_GOALS),
|
|
653
|
+
systems: SystemsDomainSchema.default(DEFAULT_ORGANIZATION_MODEL_SYSTEMS),
|
|
654
|
+
resources: ResourcesDomainSchema.default(DEFAULT_ORGANIZATION_MODEL_RESOURCES),
|
|
560
655
|
statuses: StatusesDomainSchema.default({ entries: [] }),
|
|
561
656
|
operations: OperationsDomainSchema.default({ entries: [] }),
|
|
562
657
|
knowledge: KnowledgeDomainSchema.default({ nodes: [] })
|
|
@@ -590,6 +685,9 @@ function hasFeature(featuresById, featureId) {
|
|
|
590
685
|
function defaultFeaturePathFor(id) {
|
|
591
686
|
return `/${id.replaceAll(".", "/")}`;
|
|
592
687
|
}
|
|
688
|
+
function asRoleHolderArray(heldBy) {
|
|
689
|
+
return Array.isArray(heldBy) ? heldBy : [heldBy];
|
|
690
|
+
}
|
|
593
691
|
var OrganizationModelSchema = OrganizationModelSchemaBase.superRefine((model, ctx) => {
|
|
594
692
|
const featuresById = collectIds(model.features, ctx, ["features"], "Feature");
|
|
595
693
|
const featureIdsByEffectivePath = /* @__PURE__ */ new Map();
|
|
@@ -700,6 +798,8 @@ var OrganizationModelSchema = OrganizationModelSchemaBase.superRefine((model, ct
|
|
|
700
798
|
);
|
|
701
799
|
}
|
|
702
800
|
});
|
|
801
|
+
const goalsById = new Map(model.goals.objectives.map((objective) => [objective.id, objective]));
|
|
802
|
+
const knowledgeById = new Map(model.knowledge.nodes.map((node) => [node.id, node]));
|
|
703
803
|
const rolesById = new Map(model.roles.roles.map((role) => [role.id, role]));
|
|
704
804
|
model.roles.roles.forEach((role, roleIndex) => {
|
|
705
805
|
if (role.reportsToId !== void 0 && !rolesById.has(role.reportsToId)) {
|
|
@@ -710,6 +810,102 @@ var OrganizationModelSchema = OrganizationModelSchemaBase.superRefine((model, ct
|
|
|
710
810
|
);
|
|
711
811
|
}
|
|
712
812
|
});
|
|
813
|
+
const systemsById = collectIds(model.systems.systems, ctx, ["systems", "systems"], "System");
|
|
814
|
+
model.roles.roles.forEach((role, roleIndex) => {
|
|
815
|
+
role.responsibleFor?.forEach((systemId, systemIndex) => {
|
|
816
|
+
if (!systemsById.has(systemId)) {
|
|
817
|
+
addIssue(
|
|
818
|
+
ctx,
|
|
819
|
+
["roles", "roles", roleIndex, "responsibleFor", systemIndex],
|
|
820
|
+
`Role "${role.id}" references unknown responsibleFor system "${systemId}"`
|
|
821
|
+
);
|
|
822
|
+
}
|
|
823
|
+
});
|
|
824
|
+
});
|
|
825
|
+
model.systems.systems.forEach((system, systemIndex) => {
|
|
826
|
+
if (system.responsibleRoleId !== void 0 && !rolesById.has(system.responsibleRoleId)) {
|
|
827
|
+
addIssue(
|
|
828
|
+
ctx,
|
|
829
|
+
["systems", "systems", systemIndex, "responsibleRoleId"],
|
|
830
|
+
`System "${system.id}" references unknown responsibleRoleId "${system.responsibleRoleId}"`
|
|
831
|
+
);
|
|
832
|
+
}
|
|
833
|
+
system.governedByKnowledge.forEach((nodeId2, nodeIndex) => {
|
|
834
|
+
if (!knowledgeById.has(nodeId2)) {
|
|
835
|
+
addIssue(
|
|
836
|
+
ctx,
|
|
837
|
+
["systems", "systems", systemIndex, "governedByKnowledge", nodeIndex],
|
|
838
|
+
`System "${system.id}" references unknown knowledge node "${nodeId2}"`
|
|
839
|
+
);
|
|
840
|
+
}
|
|
841
|
+
});
|
|
842
|
+
system.drivesGoals.forEach((goalId, goalIndex) => {
|
|
843
|
+
if (!goalsById.has(goalId)) {
|
|
844
|
+
addIssue(
|
|
845
|
+
ctx,
|
|
846
|
+
["systems", "systems", systemIndex, "drivesGoals", goalIndex],
|
|
847
|
+
`System "${system.id}" references unknown goal "${goalId}"`
|
|
848
|
+
);
|
|
849
|
+
}
|
|
850
|
+
});
|
|
851
|
+
});
|
|
852
|
+
const resourcesById = collectIds(model.resources.entries, ctx, ["resources", "entries"], "Resource");
|
|
853
|
+
model.resources.entries.forEach((resource, resourceIndex) => {
|
|
854
|
+
if (!systemsById.has(resource.systemId)) {
|
|
855
|
+
addIssue(
|
|
856
|
+
ctx,
|
|
857
|
+
["resources", "entries", resourceIndex, "systemId"],
|
|
858
|
+
`Resource "${resource.id}" references unknown systemId "${resource.systemId}"`
|
|
859
|
+
);
|
|
860
|
+
}
|
|
861
|
+
if (resource.ownerRoleId !== void 0 && !rolesById.has(resource.ownerRoleId)) {
|
|
862
|
+
addIssue(
|
|
863
|
+
ctx,
|
|
864
|
+
["resources", "entries", resourceIndex, "ownerRoleId"],
|
|
865
|
+
`Resource "${resource.id}" references unknown ownerRoleId "${resource.ownerRoleId}"`
|
|
866
|
+
);
|
|
867
|
+
}
|
|
868
|
+
if (resource.kind === "agent" && resource.actsAsRoleId !== void 0 && !rolesById.has(resource.actsAsRoleId)) {
|
|
869
|
+
addIssue(
|
|
870
|
+
ctx,
|
|
871
|
+
["resources", "entries", resourceIndex, "actsAsRoleId"],
|
|
872
|
+
`Agent resource "${resource.id}" references unknown actsAsRoleId "${resource.actsAsRoleId}"`
|
|
873
|
+
);
|
|
874
|
+
}
|
|
875
|
+
});
|
|
876
|
+
model.roles.roles.forEach((role, roleIndex) => {
|
|
877
|
+
if (role.heldBy === void 0) return;
|
|
878
|
+
asRoleHolderArray(role.heldBy).forEach((holder, holderIndex) => {
|
|
879
|
+
if (holder.kind !== "agent") return;
|
|
880
|
+
const resource = resourcesById.get(holder.agentId);
|
|
881
|
+
if (resource === void 0) {
|
|
882
|
+
addIssue(
|
|
883
|
+
ctx,
|
|
884
|
+
["roles", "roles", roleIndex, "heldBy", Array.isArray(role.heldBy) ? holderIndex : "agentId"],
|
|
885
|
+
`Role "${role.id}" references unknown agent holder resource "${holder.agentId}"`
|
|
886
|
+
);
|
|
887
|
+
return;
|
|
888
|
+
}
|
|
889
|
+
if (resource.kind !== "agent") {
|
|
890
|
+
addIssue(
|
|
891
|
+
ctx,
|
|
892
|
+
["roles", "roles", roleIndex, "heldBy", Array.isArray(role.heldBy) ? holderIndex : "agentId"],
|
|
893
|
+
`Role "${role.id}" agent holder "${holder.agentId}" must reference an agent resource`
|
|
894
|
+
);
|
|
895
|
+
}
|
|
896
|
+
});
|
|
897
|
+
});
|
|
898
|
+
model.knowledge.nodes.forEach((node, nodeIndex) => {
|
|
899
|
+
node.ownerIds.forEach((roleId, ownerIndex) => {
|
|
900
|
+
if (!rolesById.has(roleId)) {
|
|
901
|
+
addIssue(
|
|
902
|
+
ctx,
|
|
903
|
+
["knowledge", "nodes", nodeIndex, "ownerIds", ownerIndex],
|
|
904
|
+
`Knowledge node "${node.id}" references unknown owner role "${roleId}"`
|
|
905
|
+
);
|
|
906
|
+
}
|
|
907
|
+
});
|
|
908
|
+
});
|
|
713
909
|
});
|
|
714
910
|
|
|
715
911
|
// ../core/src/organization-model/graph/schema.ts
|
|
@@ -1372,20 +1568,250 @@ function getOrganizationGraphDetailState(graph, selectedElement) {
|
|
|
1372
1568
|
}
|
|
1373
1569
|
return buildEdgeState(graph, edge, nodesById);
|
|
1374
1570
|
}
|
|
1571
|
+
function ProminentPropertiesSection({ properties }) {
|
|
1572
|
+
return /* @__PURE__ */ jsx(SimpleGrid, { cols: 2, spacing: "sm", children: properties.map((prop) => /* @__PURE__ */ jsx(Card, { withBorder: true, radius: "md", p: "sm", children: /* @__PURE__ */ jsxs(Stack, { gap: 2, children: [
|
|
1573
|
+
/* @__PURE__ */ jsx(Text, { size: "xs", tt: "uppercase", fw: 700, c: "dimmed", children: prop.label }),
|
|
1574
|
+
/* @__PURE__ */ jsx(Text, { size: "sm", fw: 600, style: { wordBreak: "break-all" }, children: prop.value })
|
|
1575
|
+
] }) }, prop.label)) });
|
|
1576
|
+
}
|
|
1577
|
+
function LinkedObjectsSection({ orderedKeys, byRelationship, onSelectNode }) {
|
|
1578
|
+
const keys = orderedKeys ? orderedKeys.filter((k) => byRelationship[k] && byRelationship[k].length > 0) : Object.keys(byRelationship);
|
|
1579
|
+
if (keys.length === 0) {
|
|
1580
|
+
return /* @__PURE__ */ jsx(Text, { size: "sm", c: "dimmed", children: "No linked objects found in the current graph." });
|
|
1581
|
+
}
|
|
1582
|
+
return /* @__PURE__ */ jsx(Stack, { gap: "xs", children: keys.map((relationshipKey) => {
|
|
1583
|
+
const linkedNodeList = byRelationship[relationshipKey];
|
|
1584
|
+
return /* @__PURE__ */ jsx(Card, { variant: "light", radius: "md", p: "sm", children: /* @__PURE__ */ jsxs(Stack, { gap: "xs", children: [
|
|
1585
|
+
/* @__PURE__ */ jsx(Text, { size: "xs", tt: "uppercase", fw: 700, c: "dimmed", children: relationshipKey }),
|
|
1586
|
+
/* @__PURE__ */ jsx(Stack, { gap: 4, children: linkedNodeList.map((linkedNode) => /* @__PURE__ */ jsx(
|
|
1587
|
+
Anchor,
|
|
1588
|
+
{
|
|
1589
|
+
component: "button",
|
|
1590
|
+
size: "sm",
|
|
1591
|
+
onClick: () => onSelectNode?.(linkedNode.id),
|
|
1592
|
+
style: { textAlign: "left" },
|
|
1593
|
+
children: linkedNode.label
|
|
1594
|
+
},
|
|
1595
|
+
linkedNode.id
|
|
1596
|
+
)) })
|
|
1597
|
+
] }) }, relationshipKey);
|
|
1598
|
+
}) });
|
|
1599
|
+
}
|
|
1600
|
+
function DefaultProminentProperties({ node }) {
|
|
1601
|
+
const fields = [
|
|
1602
|
+
{ label: "Kind", value: node.kind },
|
|
1603
|
+
{ label: "Domain", value: node.sourceId ?? "\u2014" },
|
|
1604
|
+
{ label: "ID", value: node.id },
|
|
1605
|
+
{ label: "Label", value: node.label }
|
|
1606
|
+
];
|
|
1607
|
+
return /* @__PURE__ */ jsx(ProminentPropertiesSection, { properties: fields });
|
|
1608
|
+
}
|
|
1609
|
+
function ObjectView({ node, linkedNodes, prominentProperties, onSelectNode }) {
|
|
1610
|
+
const hasCustomProperties = prominentProperties && prominentProperties.length > 0;
|
|
1611
|
+
return /* @__PURE__ */ jsxs(Stack, { gap: "md", children: [
|
|
1612
|
+
/* @__PURE__ */ jsxs(Stack, { gap: "sm", children: [
|
|
1613
|
+
/* @__PURE__ */ jsx(Title, { order: 5, children: "Prominent Properties" }),
|
|
1614
|
+
hasCustomProperties ? /* @__PURE__ */ jsx(ProminentPropertiesSection, { properties: prominentProperties }) : /* @__PURE__ */ jsx(DefaultProminentProperties, { node })
|
|
1615
|
+
] }),
|
|
1616
|
+
/* @__PURE__ */ jsxs(Stack, { gap: "sm", children: [
|
|
1617
|
+
/* @__PURE__ */ jsx(Title, { order: 5, children: "Linked" }),
|
|
1618
|
+
/* @__PURE__ */ jsx(LinkedObjectsSection, { byRelationship: linkedNodes.byRelationship, onSelectNode })
|
|
1619
|
+
] })
|
|
1620
|
+
] });
|
|
1621
|
+
}
|
|
1622
|
+
|
|
1623
|
+
// src/features/operations/organization-graph/object-views/getLinkedNodesByRelationship.ts
|
|
1624
|
+
function getLinkedNodesByRelationship(graph, nodeId2) {
|
|
1625
|
+
const nodeMap = new Map(graph.nodes.map((n) => [n.id, n]));
|
|
1626
|
+
const byRelationship = {};
|
|
1627
|
+
for (const edge of graph.edges) {
|
|
1628
|
+
const isOutgoing = edge.sourceId === nodeId2;
|
|
1629
|
+
const isIncoming = edge.targetId === nodeId2;
|
|
1630
|
+
if (!isOutgoing && !isIncoming) continue;
|
|
1631
|
+
const direction = isOutgoing ? "outgoing" : "incoming";
|
|
1632
|
+
const groupKey = `${edge.kind} (${direction})`;
|
|
1633
|
+
const linkedNodeId = isOutgoing ? edge.targetId : edge.sourceId;
|
|
1634
|
+
const linkedNode = nodeMap.get(linkedNodeId);
|
|
1635
|
+
if (!linkedNode) continue;
|
|
1636
|
+
if (!byRelationship[groupKey]) {
|
|
1637
|
+
byRelationship[groupKey] = [];
|
|
1638
|
+
}
|
|
1639
|
+
byRelationship[groupKey].push(linkedNode);
|
|
1640
|
+
}
|
|
1641
|
+
return { byRelationship };
|
|
1642
|
+
}
|
|
1643
|
+
var LINKED_OBJECT_ORDER = ["governs (incoming)", "uses (outgoing)", "triggers (incoming)"];
|
|
1644
|
+
function findAgentExtras(resourceId, registry) {
|
|
1645
|
+
if (!resourceId || !registry) return void 0;
|
|
1646
|
+
return registry.agents.find((a) => a.resourceId === resourceId);
|
|
1647
|
+
}
|
|
1648
|
+
function AgentObjectView({ node, linkedNodes, registry, onSelectNode }) {
|
|
1649
|
+
const extras = findAgentExtras(node.sourceId, registry);
|
|
1650
|
+
const prominentProperties = extras ? [
|
|
1651
|
+
{ label: "Model Provider", value: extras.modelProvider },
|
|
1652
|
+
{ label: "Model ID", value: extras.modelId },
|
|
1653
|
+
{ label: "Tool Count", value: String(extras.toolCount) },
|
|
1654
|
+
{ label: "Knowledge Map", value: extras.hasKnowledgeMap ? "Yes" : "No" },
|
|
1655
|
+
{ label: "Memory", value: extras.hasMemory ? "Yes" : "No" },
|
|
1656
|
+
{ label: "Session Capable", value: extras.sessionCapable ? "Yes" : "No" }
|
|
1657
|
+
] : [
|
|
1658
|
+
{ label: "Kind", value: node.kind },
|
|
1659
|
+
{ label: "ID", value: node.id },
|
|
1660
|
+
{ label: "Label", value: node.label }
|
|
1661
|
+
];
|
|
1662
|
+
return /* @__PURE__ */ jsxs(Stack, { gap: "md", children: [
|
|
1663
|
+
/* @__PURE__ */ jsxs(Stack, { gap: "sm", children: [
|
|
1664
|
+
/* @__PURE__ */ jsx(Title, { order: 5, children: "Prominent Properties" }),
|
|
1665
|
+
!extras ? /* @__PURE__ */ jsx(Text, { size: "sm", c: "dimmed", children: "Agent extras are not available in the current registry snapshot." }) : null,
|
|
1666
|
+
/* @__PURE__ */ jsx(ProminentPropertiesSection, { properties: prominentProperties })
|
|
1667
|
+
] }),
|
|
1668
|
+
/* @__PURE__ */ jsxs(Stack, { gap: "sm", children: [
|
|
1669
|
+
/* @__PURE__ */ jsx(Title, { order: 5, children: "Linked" }),
|
|
1670
|
+
/* @__PURE__ */ jsx(
|
|
1671
|
+
LinkedObjectsSection,
|
|
1672
|
+
{
|
|
1673
|
+
orderedKeys: LINKED_OBJECT_ORDER,
|
|
1674
|
+
byRelationship: linkedNodes.byRelationship,
|
|
1675
|
+
onSelectNode
|
|
1676
|
+
}
|
|
1677
|
+
)
|
|
1678
|
+
] })
|
|
1679
|
+
] });
|
|
1680
|
+
}
|
|
1681
|
+
var LINKED_OBJECT_ORDER2 = ["triggers (incoming)", "uses (outgoing)", "exposes (incoming)"];
|
|
1682
|
+
function findWorkflowExtras(resourceId, registry) {
|
|
1683
|
+
if (!resourceId || !registry) return void 0;
|
|
1684
|
+
return registry.workflows.find((w) => w.resourceId === resourceId);
|
|
1685
|
+
}
|
|
1686
|
+
function WorkflowObjectView({ node, linkedNodes, registry, onSelectNode }) {
|
|
1687
|
+
const extras = findWorkflowExtras(node.sourceId, registry);
|
|
1688
|
+
const prominentProperties = extras ? [
|
|
1689
|
+
{ label: "Step Count", value: String(extras.stepCount) },
|
|
1690
|
+
{ label: "Entry Point", value: extras.entryPoint }
|
|
1691
|
+
] : [
|
|
1692
|
+
{ label: "Kind", value: node.kind },
|
|
1693
|
+
{ label: "ID", value: node.id },
|
|
1694
|
+
{ label: "Label", value: node.label }
|
|
1695
|
+
];
|
|
1696
|
+
return /* @__PURE__ */ jsxs(Stack, { gap: "md", children: [
|
|
1697
|
+
/* @__PURE__ */ jsxs(Stack, { gap: "sm", children: [
|
|
1698
|
+
/* @__PURE__ */ jsx(Title, { order: 5, children: "Prominent Properties" }),
|
|
1699
|
+
!extras ? /* @__PURE__ */ jsx(Text, { size: "sm", c: "dimmed", children: "Workflow extras are not available in the current registry snapshot." }) : null,
|
|
1700
|
+
/* @__PURE__ */ jsx(ProminentPropertiesSection, { properties: prominentProperties })
|
|
1701
|
+
] }),
|
|
1702
|
+
/* @__PURE__ */ jsxs(Stack, { gap: "sm", children: [
|
|
1703
|
+
/* @__PURE__ */ jsx(Title, { order: 5, children: "Linked" }),
|
|
1704
|
+
/* @__PURE__ */ jsx(
|
|
1705
|
+
LinkedObjectsSection,
|
|
1706
|
+
{
|
|
1707
|
+
orderedKeys: LINKED_OBJECT_ORDER2,
|
|
1708
|
+
byRelationship: linkedNodes.byRelationship,
|
|
1709
|
+
onSelectNode
|
|
1710
|
+
}
|
|
1711
|
+
)
|
|
1712
|
+
] })
|
|
1713
|
+
] });
|
|
1714
|
+
}
|
|
1715
|
+
var LINKED_OBJECT_ORDER3 = ["triggers (outgoing)", "uses (outgoing)"];
|
|
1716
|
+
function findTriggerExtras(resourceId, registry) {
|
|
1717
|
+
if (!resourceId || !registry) return void 0;
|
|
1718
|
+
return registry.triggers.find((t) => t.resourceId === resourceId);
|
|
1719
|
+
}
|
|
1720
|
+
function TriggerObjectView({ node, linkedNodes, registry, onSelectNode }) {
|
|
1721
|
+
const extras = findTriggerExtras(node.sourceId, registry);
|
|
1722
|
+
const prominentProperties = extras ? [
|
|
1723
|
+
{ label: "Trigger Type", value: extras.triggerType },
|
|
1724
|
+
...extras.triggerType === "schedule" && extras.schedule ? [{ label: "Schedule", value: extras.schedule }] : [],
|
|
1725
|
+
...extras.triggerType === "webhook" && extras.webhookPath ? [{ label: "Webhook Path", value: extras.webhookPath }] : [],
|
|
1726
|
+
...extras.triggerType === "event" && extras.eventType ? [{ label: "Event Type", value: extras.eventType }] : []
|
|
1727
|
+
] : [
|
|
1728
|
+
{ label: "Kind", value: node.kind },
|
|
1729
|
+
{ label: "ID", value: node.id },
|
|
1730
|
+
{ label: "Label", value: node.label }
|
|
1731
|
+
];
|
|
1732
|
+
return /* @__PURE__ */ jsxs(Stack, { gap: "md", children: [
|
|
1733
|
+
/* @__PURE__ */ jsxs(Stack, { gap: "sm", children: [
|
|
1734
|
+
/* @__PURE__ */ jsx(Title, { order: 5, children: "Prominent Properties" }),
|
|
1735
|
+
!extras ? /* @__PURE__ */ jsx(Text, { size: "sm", c: "dimmed", children: "Trigger details are not available in the current registry snapshot." }) : null,
|
|
1736
|
+
/* @__PURE__ */ jsx(ProminentPropertiesSection, { properties: prominentProperties })
|
|
1737
|
+
] }),
|
|
1738
|
+
/* @__PURE__ */ jsxs(Stack, { gap: "sm", children: [
|
|
1739
|
+
/* @__PURE__ */ jsx(Title, { order: 5, children: "Linked" }),
|
|
1740
|
+
/* @__PURE__ */ jsx(
|
|
1741
|
+
LinkedObjectsSection,
|
|
1742
|
+
{
|
|
1743
|
+
orderedKeys: LINKED_OBJECT_ORDER3,
|
|
1744
|
+
byRelationship: linkedNodes.byRelationship,
|
|
1745
|
+
onSelectNode
|
|
1746
|
+
}
|
|
1747
|
+
)
|
|
1748
|
+
] })
|
|
1749
|
+
] });
|
|
1750
|
+
}
|
|
1751
|
+
var LINKED_OBJECT_ORDER4 = ["uses (incoming)", "triggers (incoming)"];
|
|
1752
|
+
function findIntegrationExtras(resourceId, registry) {
|
|
1753
|
+
if (!resourceId || !registry) return void 0;
|
|
1754
|
+
return registry.integrations.find((i) => i.resourceId === resourceId);
|
|
1755
|
+
}
|
|
1756
|
+
function IntegrationObjectView({ node, linkedNodes, registry, onSelectNode }) {
|
|
1757
|
+
const extras = findIntegrationExtras(node.sourceId, registry);
|
|
1758
|
+
const prominentProperties = extras ? [
|
|
1759
|
+
{ label: "Provider", value: extras.provider },
|
|
1760
|
+
{ label: "Credential", value: extras.credentialName }
|
|
1761
|
+
] : [
|
|
1762
|
+
{ label: "Kind", value: node.kind },
|
|
1763
|
+
{ label: "ID", value: node.id },
|
|
1764
|
+
{ label: "Label", value: node.label }
|
|
1765
|
+
];
|
|
1766
|
+
return /* @__PURE__ */ jsxs(Stack, { gap: "md", children: [
|
|
1767
|
+
/* @__PURE__ */ jsxs(Stack, { gap: "sm", children: [
|
|
1768
|
+
/* @__PURE__ */ jsx(Title, { order: 5, children: "Prominent Properties" }),
|
|
1769
|
+
!extras ? /* @__PURE__ */ jsx(Text, { size: "sm", c: "dimmed", children: "Integration details are not available in the current registry snapshot." }) : null,
|
|
1770
|
+
/* @__PURE__ */ jsx(ProminentPropertiesSection, { properties: prominentProperties })
|
|
1771
|
+
] }),
|
|
1772
|
+
/* @__PURE__ */ jsxs(Stack, { gap: "sm", children: [
|
|
1773
|
+
/* @__PURE__ */ jsx(Title, { order: 5, children: "Linked" }),
|
|
1774
|
+
/* @__PURE__ */ jsx(
|
|
1775
|
+
LinkedObjectsSection,
|
|
1776
|
+
{
|
|
1777
|
+
orderedKeys: LINKED_OBJECT_ORDER4,
|
|
1778
|
+
byRelationship: linkedNodes.byRelationship,
|
|
1779
|
+
onSelectNode
|
|
1780
|
+
}
|
|
1781
|
+
)
|
|
1782
|
+
] })
|
|
1783
|
+
] });
|
|
1784
|
+
}
|
|
1785
|
+
|
|
1786
|
+
// src/features/operations/organization-graph/object-views/registry.ts
|
|
1787
|
+
var objectViewRegistry = {
|
|
1788
|
+
"resource:agent": AgentObjectView,
|
|
1789
|
+
"resource:workflow": WorkflowObjectView,
|
|
1790
|
+
"resource:trigger": TriggerObjectView,
|
|
1791
|
+
"resource:integration": IntegrationObjectView
|
|
1792
|
+
};
|
|
1793
|
+
function getConfiguredObjectView(node) {
|
|
1794
|
+
if (node.kind === "resource" && node.resourceType) {
|
|
1795
|
+
return objectViewRegistry[`resource:${node.resourceType}`];
|
|
1796
|
+
}
|
|
1797
|
+
return objectViewRegistry[node.kind];
|
|
1798
|
+
}
|
|
1375
1799
|
function getNodeKindColor(kind) {
|
|
1376
1800
|
switch (kind) {
|
|
1377
1801
|
case "organization":
|
|
1378
1802
|
return "gray";
|
|
1379
1803
|
case "feature":
|
|
1380
1804
|
return "blue";
|
|
1381
|
-
case "domain":
|
|
1382
|
-
return "violet";
|
|
1383
1805
|
case "surface":
|
|
1384
1806
|
return "cyan";
|
|
1385
1807
|
case "entity":
|
|
1386
1808
|
return "pink";
|
|
1387
1809
|
case "capability":
|
|
1388
1810
|
return "green";
|
|
1811
|
+
case "stage":
|
|
1812
|
+
return "teal";
|
|
1813
|
+
case "knowledge":
|
|
1814
|
+
return "indigo";
|
|
1389
1815
|
case "resource":
|
|
1390
1816
|
return "orange";
|
|
1391
1817
|
default:
|
|
@@ -1412,14 +1838,16 @@ function getNodeKindLabel2(kind) {
|
|
|
1412
1838
|
return "Organization root";
|
|
1413
1839
|
case "feature":
|
|
1414
1840
|
return "Feature gate";
|
|
1415
|
-
case "domain":
|
|
1416
|
-
return "Domain boundary";
|
|
1417
1841
|
case "surface":
|
|
1418
1842
|
return "Surface";
|
|
1419
1843
|
case "entity":
|
|
1420
1844
|
return "Entity";
|
|
1421
1845
|
case "capability":
|
|
1422
1846
|
return "Capability";
|
|
1847
|
+
case "stage":
|
|
1848
|
+
return "Stage";
|
|
1849
|
+
case "knowledge":
|
|
1850
|
+
return "Knowledge";
|
|
1423
1851
|
case "resource":
|
|
1424
1852
|
return "Resource";
|
|
1425
1853
|
default:
|
|
@@ -1516,6 +1944,11 @@ function FollowUpSectionCard({ section }) {
|
|
|
1516
1944
|
)) }) : /* @__PURE__ */ jsx(Text, { size: "sm", c: "dimmed", children: section.emptyMessage })
|
|
1517
1945
|
] }) });
|
|
1518
1946
|
}
|
|
1947
|
+
function shouldDefaultObjectTab(node) {
|
|
1948
|
+
if (node.kind === "organization" || node.kind === "feature") return true;
|
|
1949
|
+
if (node.kind === "resource" && (node.resourceType === "agent" || node.resourceType === "workflow")) return true;
|
|
1950
|
+
return false;
|
|
1951
|
+
}
|
|
1519
1952
|
function OrganizationGraphDetailPanel({
|
|
1520
1953
|
graph,
|
|
1521
1954
|
selectedElement,
|
|
@@ -1523,6 +1956,8 @@ function OrganizationGraphDetailPanel({
|
|
|
1523
1956
|
followUpSections,
|
|
1524
1957
|
expandAroundPanel,
|
|
1525
1958
|
onClearSelection,
|
|
1959
|
+
onSelectNode,
|
|
1960
|
+
commandViewData,
|
|
1526
1961
|
className
|
|
1527
1962
|
}) {
|
|
1528
1963
|
const state = getOrganizationGraphDetailState(graph, selectedElement);
|
|
@@ -1545,154 +1980,183 @@ function OrganizationGraphDetailPanel({
|
|
|
1545
1980
|
] })
|
|
1546
1981
|
] }) });
|
|
1547
1982
|
}
|
|
1983
|
+
const selectedNode = state.state === "node" ? state.node : null;
|
|
1984
|
+
const linkedNodes = selectedNode && graph ? getLinkedNodesByRelationship(graph, selectedNode.id) : null;
|
|
1985
|
+
const ConfiguredView = selectedNode ? getConfiguredObjectView(selectedNode) : void 0;
|
|
1986
|
+
const defaultTab = selectedNode && shouldDefaultObjectTab(selectedNode) ? "object" : "details";
|
|
1548
1987
|
return /* @__PURE__ */ jsx(Paper, { withBorder: true, radius: "lg", p: "md", className, children: /* @__PURE__ */ jsxs(Stack, { gap: "md", children: [
|
|
1549
|
-
/* @__PURE__ */ jsxs(Group, { justify: "space-between", align: "flex-start", children: [
|
|
1550
|
-
/* @__PURE__ */ jsxs(Stack, { gap: 4, children: [
|
|
1988
|
+
/* @__PURE__ */ jsxs(Group, { justify: "space-between", align: "flex-start", wrap: "nowrap", gap: "md", children: [
|
|
1989
|
+
/* @__PURE__ */ jsxs(Stack, { gap: 4, style: { flex: 1, minWidth: 0 }, children: [
|
|
1551
1990
|
/* @__PURE__ */ jsxs(Group, { gap: "xs", children: [
|
|
1552
1991
|
/* @__PURE__ */ jsx(Badge, { variant: "light", color: "violet", children: state.semanticCategory }),
|
|
1553
1992
|
state.state === "node" ? /* @__PURE__ */ jsx(Badge, { variant: "light", color: state.node.enabled === false ? "gray" : "green", children: state.node.enabled === false ? "Disabled" : "Enabled" }) : null,
|
|
1554
1993
|
state.state === "edge" && state.edge.relationshipType ? /* @__PURE__ */ jsx(Badge, { variant: "light", color: "orange", children: titleCase2(state.edge.relationshipType) }) : null
|
|
1555
1994
|
] }),
|
|
1556
|
-
/* @__PURE__ */
|
|
1557
|
-
|
|
1558
|
-
|
|
1559
|
-
|
|
1560
|
-
|
|
1561
|
-
|
|
1562
|
-
|
|
1563
|
-
|
|
1564
|
-
|
|
1565
|
-
|
|
1566
|
-
|
|
1567
|
-
|
|
1568
|
-
|
|
1995
|
+
/* @__PURE__ */ jsx(
|
|
1996
|
+
CardHeader,
|
|
1997
|
+
{
|
|
1998
|
+
icon: state.state === "node" ? /* @__PURE__ */ jsx(
|
|
1999
|
+
SemanticIcon,
|
|
2000
|
+
{
|
|
2001
|
+
token: state.node.icon,
|
|
2002
|
+
fallbackKind: getNodeIconFallbackKind(state.node.kind),
|
|
2003
|
+
size: 16
|
|
2004
|
+
}
|
|
2005
|
+
) : void 0,
|
|
2006
|
+
title: state.title,
|
|
2007
|
+
subtitle: state.operationalMeaning,
|
|
2008
|
+
titleOrder: 4,
|
|
2009
|
+
mb: 0
|
|
2010
|
+
}
|
|
2011
|
+
)
|
|
1569
2012
|
] }),
|
|
1570
2013
|
onClearSelection ? /* @__PURE__ */ jsx(Button, { size: "xs", variant: "subtle", onClick: onClearSelection, children: "Clear" }) : null
|
|
1571
2014
|
] }),
|
|
1572
2015
|
/* @__PURE__ */ jsx(SimpleGrid, { cols: { base: 2, md: 4 }, spacing: "sm", children: state.metrics.map((metric) => /* @__PURE__ */ jsx(MetricCard, { metric }, metric.label)) }),
|
|
1573
2016
|
expandAroundPanel,
|
|
1574
|
-
|
|
1575
|
-
/* @__PURE__ */
|
|
1576
|
-
|
|
1577
|
-
{
|
|
1578
|
-
|
|
1579
|
-
|
|
1580
|
-
|
|
1581
|
-
] }),
|
|
1582
|
-
labelPosition: "center"
|
|
1583
|
-
}
|
|
1584
|
-
),
|
|
1585
|
-
supplementalSummary.description ? /* @__PURE__ */ jsx(Text, { size: "sm", c: "dimmed", children: supplementalSummary.description }) : null,
|
|
1586
|
-
supplementalSummary.metrics.length > 0 ? /* @__PURE__ */ jsx(SimpleGrid, { cols: { base: 2, md: 4 }, spacing: "sm", children: supplementalSummary.metrics.map((metric) => /* @__PURE__ */ jsx(MetricCard, { metric }, `supplemental-${metric.label}`)) }) : null,
|
|
1587
|
-
supplementalSummary.metadata.length > 0 ? /* @__PURE__ */ jsx(SimpleGrid, { cols: { base: 1, sm: 2 }, spacing: "sm", children: supplementalSummary.metadata.map((item) => /* @__PURE__ */ jsx(Paper, { withBorder: true, radius: "md", p: "sm", children: /* @__PURE__ */ jsxs(Stack, { gap: 2, children: [
|
|
1588
|
-
/* @__PURE__ */ jsx(Text, { size: "xs", tt: "uppercase", fw: 700, c: "dimmed", children: item.label }),
|
|
1589
|
-
/* @__PURE__ */ jsx(Text, { size: "sm", fw: 600, children: item.value })
|
|
1590
|
-
] }) }, `supplemental-${item.label}`)) }) : null
|
|
1591
|
-
] }) : null,
|
|
1592
|
-
followUpSections && followUpSections.length > 0 ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
1593
|
-
/* @__PURE__ */ jsx(
|
|
1594
|
-
Divider,
|
|
1595
|
-
{
|
|
1596
|
-
label: /* @__PURE__ */ jsxs(Group, { gap: 6, children: [
|
|
1597
|
-
/* @__PURE__ */ jsx(IconShare2, { size: 14 }),
|
|
1598
|
-
/* @__PURE__ */ jsx(Text, { size: "xs", tt: "uppercase", fw: 700, children: "Follow-up actions" })
|
|
1599
|
-
] }),
|
|
1600
|
-
labelPosition: "center"
|
|
1601
|
-
}
|
|
1602
|
-
),
|
|
1603
|
-
/* @__PURE__ */ jsx(Stack, { gap: "sm", children: followUpSections.map((section) => /* @__PURE__ */ jsx(FollowUpSectionCard, { section }, section.title)) })
|
|
1604
|
-
] }) : null,
|
|
1605
|
-
/* @__PURE__ */ jsx(
|
|
1606
|
-
Divider,
|
|
1607
|
-
{
|
|
1608
|
-
label: /* @__PURE__ */ jsxs(Group, { gap: 6, children: [
|
|
1609
|
-
/* @__PURE__ */ jsx(IconTopologyStar3, { size: 14 }),
|
|
1610
|
-
/* @__PURE__ */ jsx(Text, { size: "xs", tt: "uppercase", fw: 700, children: "Linked metadata" })
|
|
1611
|
-
] }),
|
|
1612
|
-
labelPosition: "center"
|
|
1613
|
-
}
|
|
1614
|
-
),
|
|
1615
|
-
/* @__PURE__ */ jsx(SimpleGrid, { cols: { base: 1, sm: 2 }, spacing: "sm", children: state.metadata.map((item) => /* @__PURE__ */ jsx(Paper, { withBorder: true, radius: "md", p: "sm", children: /* @__PURE__ */ jsxs(Stack, { gap: 2, children: [
|
|
1616
|
-
/* @__PURE__ */ jsx(Text, { size: "xs", tt: "uppercase", fw: 700, c: "dimmed", children: item.label }),
|
|
1617
|
-
/* @__PURE__ */ jsx(Text, { size: "sm", fw: 600, children: item.value })
|
|
1618
|
-
] }) }, item.label)) }),
|
|
1619
|
-
state.adjacentKindCounts.length > 0 ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
1620
|
-
/* @__PURE__ */ jsx(
|
|
1621
|
-
Divider,
|
|
1622
|
-
{
|
|
1623
|
-
label: /* @__PURE__ */ jsxs(Group, { gap: 6, children: [
|
|
1624
|
-
/* @__PURE__ */ jsx(IconShare2, { size: 14 }),
|
|
1625
|
-
/* @__PURE__ */ jsx(Text, { size: "xs", tt: "uppercase", fw: 700, children: "Nearby kinds" })
|
|
1626
|
-
] }),
|
|
1627
|
-
labelPosition: "center"
|
|
1628
|
-
}
|
|
1629
|
-
),
|
|
1630
|
-
/* @__PURE__ */ jsx(Group, { gap: "xs", children: state.adjacentKindCounts.map((item) => /* @__PURE__ */ jsxs(Badge, { variant: "light", color: getNodeKindColor(item.kind), children: [
|
|
1631
|
-
item.count,
|
|
1632
|
-
" ",
|
|
1633
|
-
item.label
|
|
1634
|
-
] }, item.kind)) })
|
|
1635
|
-
] }) : null,
|
|
1636
|
-
state.state === "edge" ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
1637
|
-
/* @__PURE__ */ jsx(
|
|
1638
|
-
Divider,
|
|
2017
|
+
/* @__PURE__ */ jsxs(Tabs, { defaultValue: defaultTab, keepMounted: false, children: [
|
|
2018
|
+
/* @__PURE__ */ jsxs(Tabs.List, { children: [
|
|
2019
|
+
/* @__PURE__ */ jsx(Tabs.Tab, { value: "object", children: "Object" }),
|
|
2020
|
+
/* @__PURE__ */ jsx(Tabs.Tab, { value: "details", children: "Details" })
|
|
2021
|
+
] }),
|
|
2022
|
+
/* @__PURE__ */ jsx(Tabs.Panel, { value: "object", pt: "md", children: selectedNode && linkedNodes ? ConfiguredView ? /* @__PURE__ */ jsx(
|
|
2023
|
+
ConfiguredView,
|
|
1639
2024
|
{
|
|
1640
|
-
|
|
1641
|
-
|
|
1642
|
-
|
|
1643
|
-
|
|
1644
|
-
|
|
2025
|
+
node: selectedNode,
|
|
2026
|
+
linkedNodes,
|
|
2027
|
+
registry: commandViewData ?? null,
|
|
2028
|
+
onSelectNode: onSelectNode ?? (() => {
|
|
2029
|
+
})
|
|
1645
2030
|
}
|
|
1646
|
-
),
|
|
1647
|
-
|
|
1648
|
-
/* @__PURE__ */ jsx(
|
|
1649
|
-
|
|
1650
|
-
|
|
1651
|
-
|
|
1652
|
-
|
|
1653
|
-
|
|
1654
|
-
|
|
1655
|
-
|
|
1656
|
-
|
|
1657
|
-
|
|
1658
|
-
|
|
1659
|
-
|
|
1660
|
-
|
|
1661
|
-
|
|
1662
|
-
|
|
1663
|
-
|
|
1664
|
-
/* @__PURE__ */ jsx(
|
|
1665
|
-
|
|
1666
|
-
/* @__PURE__ */ jsx(Text, { fw:
|
|
1667
|
-
|
|
1668
|
-
|
|
1669
|
-
|
|
1670
|
-
|
|
1671
|
-
|
|
1672
|
-
|
|
1673
|
-
|
|
1674
|
-
|
|
1675
|
-
|
|
2031
|
+
) : /* @__PURE__ */ jsx(ObjectView, { node: selectedNode, linkedNodes, onSelectNode }) : /* @__PURE__ */ jsxs(Stack, { gap: "sm", children: [
|
|
2032
|
+
/* @__PURE__ */ jsx(Title, { order: 5, children: "Object" }),
|
|
2033
|
+
/* @__PURE__ */ jsx(Text, { size: "sm", c: "dimmed", children: "Select a node to view its object details." })
|
|
2034
|
+
] }) }),
|
|
2035
|
+
/* @__PURE__ */ jsx(Tabs.Panel, { value: "details", pt: "md", children: /* @__PURE__ */ jsxs(Stack, { gap: "md", children: [
|
|
2036
|
+
supplementalSummary && (supplementalSummary.metrics.length > 0 || supplementalSummary.metadata.length > 0) ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
2037
|
+
/* @__PURE__ */ jsx(
|
|
2038
|
+
Divider,
|
|
2039
|
+
{
|
|
2040
|
+
label: /* @__PURE__ */ jsxs(Group, { gap: 6, children: [
|
|
2041
|
+
/* @__PURE__ */ jsx(IconTopologyStar3, { size: 14 }),
|
|
2042
|
+
/* @__PURE__ */ jsx(Text, { size: "xs", tt: "uppercase", fw: 700, children: supplementalSummary.title })
|
|
2043
|
+
] }),
|
|
2044
|
+
labelPosition: "center"
|
|
2045
|
+
}
|
|
2046
|
+
),
|
|
2047
|
+
supplementalSummary.description ? /* @__PURE__ */ jsx(Text, { size: "sm", c: "dimmed", children: supplementalSummary.description }) : null,
|
|
2048
|
+
supplementalSummary.metrics.length > 0 ? /* @__PURE__ */ jsx(SimpleGrid, { cols: { base: 2, md: 4 }, spacing: "sm", children: supplementalSummary.metrics.map((metric) => /* @__PURE__ */ jsx(MetricCard, { metric }, `supplemental-${metric.label}`)) }) : null,
|
|
2049
|
+
supplementalSummary.metadata.length > 0 ? /* @__PURE__ */ jsx(SimpleGrid, { cols: { base: 1, sm: 2 }, spacing: "sm", children: supplementalSummary.metadata.map((item) => /* @__PURE__ */ jsx(Paper, { withBorder: true, radius: "md", p: "sm", children: /* @__PURE__ */ jsxs(Stack, { gap: 2, children: [
|
|
2050
|
+
/* @__PURE__ */ jsx(Text, { size: "xs", tt: "uppercase", fw: 700, c: "dimmed", children: item.label }),
|
|
2051
|
+
/* @__PURE__ */ jsx(Text, { size: "sm", fw: 600, children: item.value })
|
|
2052
|
+
] }) }, `supplemental-${item.label}`)) }) : null
|
|
2053
|
+
] }) : null,
|
|
2054
|
+
followUpSections && followUpSections.length > 0 ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
2055
|
+
/* @__PURE__ */ jsx(
|
|
2056
|
+
Divider,
|
|
2057
|
+
{
|
|
2058
|
+
label: /* @__PURE__ */ jsxs(Group, { gap: 6, children: [
|
|
2059
|
+
/* @__PURE__ */ jsx(IconShare2, { size: 14 }),
|
|
2060
|
+
/* @__PURE__ */ jsx(Text, { size: "xs", tt: "uppercase", fw: 700, children: "Follow-up actions" })
|
|
2061
|
+
] }),
|
|
2062
|
+
labelPosition: "center"
|
|
2063
|
+
}
|
|
2064
|
+
),
|
|
2065
|
+
/* @__PURE__ */ jsx(Stack, { gap: "sm", children: followUpSections.map((section) => /* @__PURE__ */ jsx(FollowUpSectionCard, { section }, section.title)) })
|
|
2066
|
+
] }) : null,
|
|
2067
|
+
/* @__PURE__ */ jsx(
|
|
2068
|
+
Divider,
|
|
2069
|
+
{
|
|
2070
|
+
label: /* @__PURE__ */ jsxs(Group, { gap: 6, children: [
|
|
2071
|
+
/* @__PURE__ */ jsx(IconTopologyStar3, { size: 14 }),
|
|
2072
|
+
/* @__PURE__ */ jsx(Text, { size: "xs", tt: "uppercase", fw: 700, children: "Linked metadata" })
|
|
2073
|
+
] }),
|
|
2074
|
+
labelPosition: "center"
|
|
2075
|
+
}
|
|
2076
|
+
),
|
|
2077
|
+
/* @__PURE__ */ jsx(SimpleGrid, { cols: { base: 1, sm: 2 }, spacing: "sm", children: state.metadata.map((item) => /* @__PURE__ */ jsx(Paper, { withBorder: true, radius: "md", p: "sm", children: /* @__PURE__ */ jsxs(Stack, { gap: 2, children: [
|
|
2078
|
+
/* @__PURE__ */ jsx(Text, { size: "xs", tt: "uppercase", fw: 700, c: "dimmed", children: item.label }),
|
|
2079
|
+
/* @__PURE__ */ jsx(Text, { size: "sm", fw: 600, children: item.value })
|
|
2080
|
+
] }) }, item.label)) }),
|
|
2081
|
+
state.adjacentKindCounts.length > 0 ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
2082
|
+
/* @__PURE__ */ jsx(
|
|
2083
|
+
Divider,
|
|
2084
|
+
{
|
|
2085
|
+
label: /* @__PURE__ */ jsxs(Group, { gap: 6, children: [
|
|
2086
|
+
/* @__PURE__ */ jsx(IconShare2, { size: 14 }),
|
|
2087
|
+
/* @__PURE__ */ jsx(Text, { size: "xs", tt: "uppercase", fw: 700, children: "Nearby kinds" })
|
|
2088
|
+
] }),
|
|
2089
|
+
labelPosition: "center"
|
|
2090
|
+
}
|
|
2091
|
+
),
|
|
2092
|
+
/* @__PURE__ */ jsx(Group, { gap: "xs", children: state.adjacentKindCounts.map((item) => /* @__PURE__ */ jsxs(Badge, { variant: "light", color: getNodeKindColor(item.kind), children: [
|
|
2093
|
+
item.count,
|
|
2094
|
+
" ",
|
|
2095
|
+
item.label
|
|
2096
|
+
] }, item.kind)) })
|
|
2097
|
+
] }) : null,
|
|
2098
|
+
state.state === "edge" ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
2099
|
+
/* @__PURE__ */ jsx(
|
|
2100
|
+
Divider,
|
|
2101
|
+
{
|
|
2102
|
+
label: /* @__PURE__ */ jsxs(Group, { gap: 6, children: [
|
|
2103
|
+
/* @__PURE__ */ jsx(IconShare2, { size: 14 }),
|
|
2104
|
+
/* @__PURE__ */ jsx(Text, { size: "xs", tt: "uppercase", fw: 700, children: "Endpoints" })
|
|
2105
|
+
] }),
|
|
2106
|
+
labelPosition: "center"
|
|
2107
|
+
}
|
|
2108
|
+
),
|
|
2109
|
+
/* @__PURE__ */ jsxs(SimpleGrid, { cols: { base: 1, sm: 2 }, spacing: "sm", children: [
|
|
2110
|
+
/* @__PURE__ */ jsx(Paper, { withBorder: true, radius: "md", p: "sm", children: /* @__PURE__ */ jsxs(Stack, { gap: 2, children: [
|
|
2111
|
+
/* @__PURE__ */ jsx(Text, { size: "xs", tt: "uppercase", fw: 700, c: "dimmed", children: "Source" }),
|
|
2112
|
+
/* @__PURE__ */ jsxs(Group, { gap: "xs", children: [
|
|
2113
|
+
/* @__PURE__ */ jsx(Text, { fw: 700, children: state.sourceNode?.label ?? state.edge.sourceId }),
|
|
2114
|
+
/* @__PURE__ */ jsx(
|
|
2115
|
+
Badge,
|
|
2116
|
+
{
|
|
2117
|
+
size: "xs",
|
|
2118
|
+
variant: "light",
|
|
2119
|
+
color: state.sourceNode ? getNodeKindColor(state.sourceNode.kind) : "gray",
|
|
2120
|
+
children: state.sourceNode ? getNodeKindLabel2(state.sourceNode.kind) : "unresolved"
|
|
2121
|
+
}
|
|
2122
|
+
)
|
|
2123
|
+
] })
|
|
2124
|
+
] }) }),
|
|
2125
|
+
/* @__PURE__ */ jsx(Paper, { withBorder: true, radius: "md", p: "sm", children: /* @__PURE__ */ jsxs(Stack, { gap: 2, children: [
|
|
2126
|
+
/* @__PURE__ */ jsx(Text, { size: "xs", tt: "uppercase", fw: 700, c: "dimmed", children: "Target" }),
|
|
2127
|
+
/* @__PURE__ */ jsxs(Group, { gap: "xs", children: [
|
|
2128
|
+
/* @__PURE__ */ jsx(Text, { fw: 700, children: state.targetNode?.label ?? state.edge.targetId }),
|
|
2129
|
+
/* @__PURE__ */ jsx(
|
|
2130
|
+
Badge,
|
|
2131
|
+
{
|
|
2132
|
+
size: "xs",
|
|
2133
|
+
variant: "light",
|
|
2134
|
+
color: state.targetNode ? getNodeKindColor(state.targetNode.kind) : "gray",
|
|
2135
|
+
children: state.targetNode ? getNodeKindLabel2(state.targetNode.kind) : "unresolved"
|
|
2136
|
+
}
|
|
2137
|
+
)
|
|
2138
|
+
] })
|
|
2139
|
+
] }) })
|
|
1676
2140
|
] })
|
|
1677
|
-
] })
|
|
1678
|
-
|
|
1679
|
-
|
|
1680
|
-
|
|
1681
|
-
|
|
1682
|
-
|
|
1683
|
-
|
|
1684
|
-
|
|
1685
|
-
|
|
1686
|
-
|
|
1687
|
-
|
|
1688
|
-
|
|
1689
|
-
|
|
1690
|
-
|
|
1691
|
-
|
|
1692
|
-
|
|
1693
|
-
|
|
1694
|
-
|
|
1695
|
-
|
|
2141
|
+
] }) : null,
|
|
2142
|
+
/* @__PURE__ */ jsx(
|
|
2143
|
+
Divider,
|
|
2144
|
+
{
|
|
2145
|
+
label: /* @__PURE__ */ jsx(Text, { size: "xs", tt: "uppercase", fw: 700, children: state.state === "edge" ? "Surrounding nodes" : "Direct nodes" }),
|
|
2146
|
+
labelPosition: "center"
|
|
2147
|
+
}
|
|
2148
|
+
),
|
|
2149
|
+
state.relatedNodes.length > 0 ? /* @__PURE__ */ jsx(SimpleGrid, { cols: { base: 1, sm: 2 }, spacing: "sm", children: state.relatedNodes.map((item) => /* @__PURE__ */ jsx(RelatedItemCard, { item, itemType: "node" }, item.id)) }) : /* @__PURE__ */ jsx(Text, { size: "sm", c: "dimmed", children: "No nearby nodes were found in the current graph selection." }),
|
|
2150
|
+
/* @__PURE__ */ jsx(
|
|
2151
|
+
Divider,
|
|
2152
|
+
{
|
|
2153
|
+
label: /* @__PURE__ */ jsx(Text, { size: "xs", tt: "uppercase", fw: 700, children: state.state === "edge" ? "Surrounding edges" : "Direct edges" }),
|
|
2154
|
+
labelPosition: "center"
|
|
2155
|
+
}
|
|
2156
|
+
),
|
|
2157
|
+
state.relatedEdges.length > 0 ? /* @__PURE__ */ jsx(SimpleGrid, { cols: { base: 1, sm: 2 }, spacing: "sm", children: state.relatedEdges.map((item) => /* @__PURE__ */ jsx(RelatedItemCard, { item, itemType: "edge" }, item.id)) }) : /* @__PURE__ */ jsx(Text, { size: "sm", c: "dimmed", children: "No adjacent edges were found for the current selection." })
|
|
2158
|
+
] }) })
|
|
2159
|
+
] })
|
|
1696
2160
|
] }) });
|
|
1697
2161
|
}
|
|
1698
2162
|
|
|
@@ -2121,70 +2585,75 @@ function OrganizationGraphFilterToolbar({
|
|
|
2121
2585
|
disabled
|
|
2122
2586
|
}
|
|
2123
2587
|
),
|
|
2124
|
-
/* @__PURE__ */ jsx(
|
|
2125
|
-
|
|
2126
|
-
{
|
|
2127
|
-
|
|
2128
|
-
|
|
2129
|
-
|
|
2130
|
-
|
|
2131
|
-
|
|
2132
|
-
|
|
2133
|
-
|
|
2134
|
-
|
|
2135
|
-
|
|
2136
|
-
|
|
2137
|
-
|
|
2138
|
-
|
|
2139
|
-
|
|
2140
|
-
|
|
2141
|
-
|
|
2142
|
-
|
|
2143
|
-
|
|
2144
|
-
|
|
2145
|
-
|
|
2146
|
-
|
|
2147
|
-
|
|
2148
|
-
|
|
2149
|
-
|
|
2150
|
-
|
|
2151
|
-
|
|
2152
|
-
|
|
2153
|
-
|
|
2154
|
-
|
|
2155
|
-
|
|
2156
|
-
|
|
2157
|
-
|
|
2158
|
-
|
|
2159
|
-
|
|
2160
|
-
|
|
2161
|
-
|
|
2162
|
-
|
|
2163
|
-
|
|
2164
|
-
|
|
2165
|
-
|
|
2166
|
-
|
|
2167
|
-
|
|
2168
|
-
|
|
2169
|
-
|
|
2170
|
-
|
|
2171
|
-
|
|
2172
|
-
|
|
2173
|
-
|
|
2174
|
-
|
|
2175
|
-
|
|
2176
|
-
|
|
2177
|
-
|
|
2178
|
-
|
|
2179
|
-
|
|
2180
|
-
|
|
2181
|
-
|
|
2182
|
-
|
|
2183
|
-
|
|
2184
|
-
|
|
2185
|
-
|
|
2186
|
-
|
|
2187
|
-
|
|
2588
|
+
/* @__PURE__ */ jsx(Accordion, { variant: "contained", defaultValue: null, children: /* @__PURE__ */ jsxs(Accordion.Item, { value: "secondary-filters", children: [
|
|
2589
|
+
/* @__PURE__ */ jsx(Accordion.Control, { children: /* @__PURE__ */ jsx(Text, { size: "sm", fw: 600, children: "More filters" }) }),
|
|
2590
|
+
/* @__PURE__ */ jsx(Accordion.Panel, { children: /* @__PURE__ */ jsxs(Stack, { gap: "sm", pt: 4, children: [
|
|
2591
|
+
/* @__PURE__ */ jsx(
|
|
2592
|
+
MultiSelect,
|
|
2593
|
+
{
|
|
2594
|
+
label: resourceTypeLabel,
|
|
2595
|
+
placeholder: "All resource types",
|
|
2596
|
+
data: resourceTypeOptions.map((option) => ({ value: option.resourceType, label: option.label })),
|
|
2597
|
+
value: value.resourceTypes,
|
|
2598
|
+
onChange: (resourceTypes) => onChange({
|
|
2599
|
+
...value,
|
|
2600
|
+
resourceTypes
|
|
2601
|
+
}),
|
|
2602
|
+
searchable: true,
|
|
2603
|
+
clearable: true,
|
|
2604
|
+
disabled
|
|
2605
|
+
}
|
|
2606
|
+
),
|
|
2607
|
+
/* @__PURE__ */ jsxs(Stack, { gap: 6, children: [
|
|
2608
|
+
/* @__PURE__ */ jsx(Text, { size: "sm", fw: 500, children: topologyLabel }),
|
|
2609
|
+
/* @__PURE__ */ jsx(
|
|
2610
|
+
SegmentedControl,
|
|
2611
|
+
{
|
|
2612
|
+
value: value.topologyPresence,
|
|
2613
|
+
onChange: (topologyPresence) => onChange({
|
|
2614
|
+
...value,
|
|
2615
|
+
topologyPresence
|
|
2616
|
+
}),
|
|
2617
|
+
data: TOPOLOGY_PRESENCE_OPTIONS,
|
|
2618
|
+
size: "sm",
|
|
2619
|
+
fullWidth: true,
|
|
2620
|
+
disabled
|
|
2621
|
+
}
|
|
2622
|
+
)
|
|
2623
|
+
] }),
|
|
2624
|
+
/* @__PURE__ */ jsxs(Stack, { gap: 6, children: [
|
|
2625
|
+
/* @__PURE__ */ jsx(Text, { size: "sm", fw: 500, children: environmentLabel }),
|
|
2626
|
+
/* @__PURE__ */ jsx(
|
|
2627
|
+
SegmentedControl,
|
|
2628
|
+
{
|
|
2629
|
+
value: value.environmentStatus,
|
|
2630
|
+
onChange: (environmentStatus) => onChange({
|
|
2631
|
+
...value,
|
|
2632
|
+
environmentStatus
|
|
2633
|
+
}),
|
|
2634
|
+
data: ENVIRONMENT_STATUS_OPTIONS,
|
|
2635
|
+
size: "sm",
|
|
2636
|
+
fullWidth: true,
|
|
2637
|
+
disabled
|
|
2638
|
+
}
|
|
2639
|
+
)
|
|
2640
|
+
] }),
|
|
2641
|
+
/* @__PURE__ */ jsx(
|
|
2642
|
+
Switch,
|
|
2643
|
+
{
|
|
2644
|
+
label: showIntegrationsLabel,
|
|
2645
|
+
description: "Hide integration resources and their relationship edges.",
|
|
2646
|
+
checked: value.showIntegrations,
|
|
2647
|
+
onChange: (event) => onChange({
|
|
2648
|
+
...value,
|
|
2649
|
+
showIntegrations: event.currentTarget.checked
|
|
2650
|
+
}),
|
|
2651
|
+
size: "sm",
|
|
2652
|
+
disabled
|
|
2653
|
+
}
|
|
2654
|
+
)
|
|
2655
|
+
] }) })
|
|
2656
|
+
] }) }),
|
|
2188
2657
|
/* @__PURE__ */ jsx(Group, { justify: "flex-end", children: /* @__PURE__ */ jsx(
|
|
2189
2658
|
Button,
|
|
2190
2659
|
{
|
|
@@ -3865,4 +4334,4 @@ function CommandViewSidebarContent({ timeRange }) {
|
|
|
3865
4334
|
);
|
|
3866
4335
|
}
|
|
3867
4336
|
|
|
3868
|
-
export { CommandViewSidebarContent, DEFAULT_ORGANIZATION_MODEL_BRANDING, DEFAULT_ORGANIZATION_MODEL_CUSTOMERS, DEFAULT_ORGANIZATION_MODEL_GOALS, DEFAULT_ORGANIZATION_MODEL_IDENTITY, DEFAULT_ORGANIZATION_MODEL_OFFERINGS, DEFAULT_ORGANIZATION_MODEL_OPERATIONS, DEFAULT_ORGANIZATION_MODEL_PROJECTS, DEFAULT_ORGANIZATION_MODEL_ROLES, DEFAULT_ORGANIZATION_MODEL_STATUSES, ExpandAroundPanel, FilterPanel, OrganizationGraphDetailPanel, OrganizationModelSchema, buildCommandViewDrillDownSections, buildOrganizationGraph, createOrganizationGraphFilters, expandAroundGraph, filterOrganizationGraph, formatOrganizationGraphTraceNodeOptionLabel, getCommandViewOperationalOverview, getCommandViewSelectionOperationalSummary, getCommandViewVisibilityProjection, getConnectedHiddenResourceIds, getOrganizationGraphLensConfig, getOrganizationGraphTraceNodeOptions, resolveOrganizationGraphPathTrace, useOrganizationGraphFilters };
|
|
4337
|
+
export { CommandViewSidebarContent, DEFAULT_ORGANIZATION_MODEL_BRANDING, DEFAULT_ORGANIZATION_MODEL_CUSTOMERS, DEFAULT_ORGANIZATION_MODEL_GOALS, DEFAULT_ORGANIZATION_MODEL_IDENTITY, DEFAULT_ORGANIZATION_MODEL_OFFERINGS, DEFAULT_ORGANIZATION_MODEL_OPERATIONS, DEFAULT_ORGANIZATION_MODEL_PROJECTS, DEFAULT_ORGANIZATION_MODEL_RESOURCES, DEFAULT_ORGANIZATION_MODEL_ROLES, DEFAULT_ORGANIZATION_MODEL_STATUSES, DEFAULT_ORGANIZATION_MODEL_SYSTEMS, ExpandAroundPanel, FilterPanel, OrganizationGraphDetailPanel, OrganizationModelSchema, buildCommandViewDrillDownSections, buildOrganizationGraph, createOrganizationGraphFilters, expandAroundGraph, filterOrganizationGraph, formatOrganizationGraphTraceNodeOptionLabel, getCommandViewOperationalOverview, getCommandViewSelectionOperationalSummary, getCommandViewVisibilityProjection, getConnectedHiddenResourceIds, getOrganizationGraphLensConfig, getOrganizationGraphTraceNodeOptions, resolveOrganizationGraphPathTrace, useOrganizationGraphFilters };
|