@manta-eu/react 0.2.0 → 0.3.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/components/channel-icon/index.d.ts +1 -0
- package/dist/components/channel-icon/index.d.ts.map +1 -1
- package/dist/components/channel-icon/index.js +1 -1
- package/dist/components/channel-icon/index.js.map +1 -1
- package/dist/components/datastore-management/tree.d.ts +1 -1
- package/dist/components/datastore-management/tree.d.ts.map +1 -1
- package/dist/components/datastore-management/tree.js +5 -5
- package/dist/components/datastore-management/tree.js.map +1 -1
- package/dist/components/explain-fact/ExplainFact.js +3 -3
- package/dist/components/explain-fact/ExplainFact.js.map +1 -1
- package/dist/components/planning/ActioningView.d.ts +1 -2
- package/dist/components/planning/ActioningView.d.ts.map +1 -1
- package/dist/components/planning/ActioningView.js +19 -44
- package/dist/components/planning/ActioningView.js.map +1 -1
- package/dist/components/planning/ManualActionCard.d.ts +4 -0
- package/dist/components/planning/ManualActionCard.d.ts.map +1 -1
- package/dist/components/planning/ManualActionCard.js +7 -5
- package/dist/components/planning/ManualActionCard.js.map +1 -1
- package/dist/components/planning/ManualActionList.d.ts +4 -0
- package/dist/components/planning/ManualActionList.d.ts.map +1 -1
- package/dist/components/planning/ManualActionList.js +8 -2
- package/dist/components/planning/ManualActionList.js.map +1 -1
- package/dist/components/planning/actioning-view-utils.d.ts +9 -0
- package/dist/components/planning/actioning-view-utils.d.ts.map +1 -1
- package/dist/components/planning/actioning-view-utils.js +19 -1
- package/dist/components/planning/actioning-view-utils.js.map +1 -1
- package/dist/components/planning/plan-detail-utils.d.ts.map +1 -1
- package/dist/components/planning/plan-detail-utils.js +2 -0
- package/dist/components/planning/plan-detail-utils.js.map +1 -1
- package/dist/components/tool-invocation-card/ListRulesResultDisplay.d.ts +2 -2
- package/dist/components/tool-invocation-card/ListRulesResultDisplay.d.ts.map +1 -1
- package/dist/components/tool-invocation-card/ToolOutputRenderer.d.ts.map +1 -1
- package/dist/components/tool-invocation-card/ToolOutputRenderer.js +7 -4
- package/dist/components/tool-invocation-card/ToolOutputRenderer.js.map +1 -1
- package/dist/components/tool-invocation-card/types.d.ts +5 -5
- package/dist/components/tool-invocation-card/types.d.ts.map +1 -1
- package/dist/components/tool-invocation-card/types.js +5 -5
- package/dist/components/tool-invocation-card/types.js.map +1 -1
- package/dist/components/tooltip/index.d.ts +7 -0
- package/dist/components/tooltip/index.d.ts.map +1 -1
- package/dist/components/tooltip/index.js +10 -1
- package/dist/components/tooltip/index.js.map +1 -1
- package/dist/explain-fact/rule-presentation.js +2 -2
- package/dist/explain-fact/rule-presentation.js.map +1 -1
- package/dist/explain-fact/tree-model.js +2 -2
- package/dist/explain-fact/tree-model.js.map +1 -1
- package/dist/globals.css +19 -6
- package/dist/graph/entity-link.d.ts +14 -0
- package/dist/graph/entity-link.d.ts.map +1 -0
- package/dist/graph/entity-link.js +12 -0
- package/dist/graph/entity-link.js.map +1 -0
- package/dist/graph/graph-list-utils.d.ts +1 -0
- package/dist/graph/graph-list-utils.d.ts.map +1 -1
- package/dist/graph/graph-list-utils.js +1 -0
- package/dist/graph/graph-list-utils.js.map +1 -1
- package/dist/graph/graph-model.d.ts.map +1 -1
- package/dist/graph/graph-model.js +14 -5
- package/dist/graph/graph-model.js.map +1 -1
- package/dist/graph/nodes/BrandAssetAnalysisView.d.ts.map +1 -1
- package/dist/graph/nodes/BrandAssetAnalysisView.js +2 -1
- package/dist/graph/nodes/BrandAssetAnalysisView.js.map +1 -1
- package/dist/graph/nodes/BrandFontSuggestionView.d.ts.map +1 -1
- package/dist/graph/nodes/BrandFontSuggestionView.js +2 -1
- package/dist/graph/nodes/BrandFontSuggestionView.js.map +1 -1
- package/dist/graph/nodes/BrandGuidelinesView.js +1 -1
- package/dist/graph/nodes/BrandGuidelinesView.js.map +1 -1
- package/dist/graph/nodes/NodePropertyTable.d.ts +4 -2
- package/dist/graph/nodes/NodePropertyTable.d.ts.map +1 -1
- package/dist/graph/nodes/NodePropertyTable.js +12 -59
- package/dist/graph/nodes/NodePropertyTable.js.map +1 -1
- package/dist/graph/nodes/node-property-row.d.ts +30 -0
- package/dist/graph/nodes/node-property-row.d.ts.map +1 -0
- package/dist/graph/nodes/node-property-row.js +35 -0
- package/dist/graph/nodes/node-property-row.js.map +1 -0
- package/dist/graph/property-formatters.d.ts +1 -0
- package/dist/graph/property-formatters.d.ts.map +1 -1
- package/dist/graph/property-formatters.js +4 -1
- package/dist/graph/property-formatters.js.map +1 -1
- package/dist/graph/special-nodes/AttributeList.d.ts +27 -0
- package/dist/graph/special-nodes/AttributeList.d.ts.map +1 -0
- package/dist/graph/special-nodes/AttributeList.js +57 -0
- package/dist/graph/special-nodes/AttributeList.js.map +1 -0
- package/dist/graph/special-nodes/EntityPreview.d.ts +5 -0
- package/dist/graph/special-nodes/EntityPreview.d.ts.map +1 -0
- package/dist/graph/special-nodes/EntityPreview.js +19 -0
- package/dist/graph/special-nodes/EntityPreview.js.map +1 -0
- package/dist/graph/special-nodes/EntityValueChip.d.ts +11 -0
- package/dist/graph/special-nodes/EntityValueChip.d.ts.map +1 -0
- package/dist/graph/special-nodes/EntityValueChip.js +40 -0
- package/dist/graph/special-nodes/EntityValueChip.js.map +1 -0
- package/dist/graph/special-nodes/GenericView.d.ts +2 -1
- package/dist/graph/special-nodes/GenericView.d.ts.map +1 -1
- package/dist/graph/special-nodes/GenericView.js +23 -69
- package/dist/graph/special-nodes/GenericView.js.map +1 -1
- package/dist/graph/special-nodes/card-facts.d.ts +52 -0
- package/dist/graph/special-nodes/card-facts.d.ts.map +1 -0
- package/dist/graph/special-nodes/card-facts.js +189 -0
- package/dist/graph/special-nodes/card-facts.js.map +1 -0
- package/dist/graph/special-nodes/property-icons.d.ts +9 -0
- package/dist/graph/special-nodes/property-icons.d.ts.map +1 -0
- package/dist/graph/special-nodes/property-icons.js +39 -0
- package/dist/graph/special-nodes/property-icons.js.map +1 -0
- package/dist/graph/status-utils.d.ts +16 -0
- package/dist/graph/status-utils.d.ts.map +1 -1
- package/dist/graph/status-utils.js +35 -0
- package/dist/graph/status-utils.js.map +1 -1
- package/dist/graph/types.d.ts +5 -0
- package/dist/graph/types.d.ts.map +1 -1
- package/dist/hooks/use-approve-anyway.d.ts +12 -0
- package/dist/hooks/use-approve-anyway.d.ts.map +1 -0
- package/dist/hooks/use-approve-anyway.js +81 -0
- package/dist/hooks/use-approve-anyway.js.map +1 -0
- package/dist/hooks/use-connection-problems.d.ts.map +1 -1
- package/dist/hooks/useValidateActionPlan.d.ts.map +1 -1
- package/dist/ldo-ui.d.ts +2 -1
- package/dist/ldo-ui.d.ts.map +1 -1
- package/dist/ldo-ui.js +1 -0
- package/dist/ldo-ui.js.map +1 -1
- package/dist/lib/find-latest-staged-rule.js +1 -1
- package/dist/lib/find-latest-staged-rule.js.map +1 -1
- package/dist/lib/manual-actions.d.ts +2 -1
- package/dist/lib/manual-actions.d.ts.map +1 -1
- package/dist/lib/manual-actions.js +3 -2
- package/dist/lib/manual-actions.js.map +1 -1
- package/dist/lib/tool-icons.js +6 -6
- package/dist/lib/tool-icons.js.map +1 -1
- package/dist/lib/tool-names.d.ts.map +1 -1
- package/dist/lib/tool-names.js +0 -1
- package/dist/lib/tool-names.js.map +1 -1
- package/dist/ontology/skolem.js +2 -2
- package/dist/ontology/skolem.js.map +1 -1
- package/dist/providers/ActiveChatProvider.js +3 -1
- package/dist/providers/ActiveChatProvider.js.map +1 -1
- package/dist/providers/ChatManagerProvider.d.ts.map +1 -1
- package/dist/providers/ChatManagerProvider.js +3 -1
- package/dist/providers/ChatManagerProvider.js.map +1 -1
- package/dist/providers/KnowledgeGraphStateProvider.js +1 -1
- package/dist/providers/KnowledgeGraphStateProvider.js.map +1 -1
- package/dist/providers/chat-socket-auth.d.ts +7 -2
- package/dist/providers/chat-socket-auth.d.ts.map +1 -1
- package/dist/providers/chat-socket-auth.js +87 -16
- package/dist/providers/chat-socket-auth.js.map +1 -1
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +8 -1
- package/dist/providers/index.js.map +1 -1
- package/dist/routes/activity/detail/ActivityChanges.d.ts +2 -0
- package/dist/routes/activity/detail/ActivityChanges.d.ts.map +1 -1
- package/dist/routes/activity/detail/ActivityChanges.js +8 -7
- package/dist/routes/activity/detail/ActivityChanges.js.map +1 -1
- package/dist/routes/activity/detail/ActivityDetail.d.ts +1 -0
- package/dist/routes/activity/detail/ActivityDetail.d.ts.map +1 -1
- package/dist/routes/activity/detail/ActivityDetail.js +5 -4
- package/dist/routes/activity/detail/ActivityDetail.js.map +1 -1
- package/dist/routes/activity/detail/ActivityStepsRail.d.ts +1 -0
- package/dist/routes/activity/detail/ActivityStepsRail.d.ts.map +1 -1
- package/dist/routes/activity/detail/ActivityStepsRail.js +3 -2
- package/dist/routes/activity/detail/ActivityStepsRail.js.map +1 -1
- package/dist/routes/activity/detail/ActivityTimeline.js +2 -2
- package/dist/routes/activity/detail/ActivityTimeline.js.map +1 -1
- package/dist/routes/activity/detail/NoChangesMessage.d.ts +6 -0
- package/dist/routes/activity/detail/NoChangesMessage.d.ts.map +1 -0
- package/dist/routes/activity/detail/NoChangesMessage.js +10 -0
- package/dist/routes/activity/detail/NoChangesMessage.js.map +1 -0
- package/dist/routes/data-explorer/class-properties.js +2 -2
- package/dist/routes/data-explorer/class-properties.js.map +1 -1
- package/dist/routes/data-explorer/classes.js +2 -2
- package/dist/routes/data-explorer/classes.js.map +1 -1
- package/dist/routes/data-explorer/components/RawTriples.js +1 -1
- package/dist/routes/data-explorer/components/RawTriples.js.map +1 -1
- package/dist/routes/data-explorer/components/RecentTypes.js +1 -1
- package/dist/routes/data-explorer/components/RecentTypes.js.map +1 -1
- package/dist/routes/data-explorer/components/class-detail/Instances.js +1 -1
- package/dist/routes/data-explorer/components/class-detail/Instances.js.map +1 -1
- package/dist/routes/data-explorer/components/namespace-detail/NamespaceClassRow.js +1 -1
- package/dist/routes/data-explorer/components/namespace-detail/NamespaceClassRow.js.map +1 -1
- package/dist/routes/data-explorer/components/ontology-coverage/CoverageTermColumns.js +1 -1
- package/dist/routes/data-explorer/components/ontology-coverage/CoverageTermColumns.js.map +1 -1
- package/dist/routes/data-explorer/components/ontology-coverage/UnobservedRuleVocabulary.js +1 -1
- package/dist/routes/data-explorer/components/ontology-coverage/UnobservedRuleVocabulary.js.map +1 -1
- package/dist/routes/data-explorer/components/record-detail/ChatPreview.js +2 -2
- package/dist/routes/data-explorer/components/record-detail/ChatPreview.js.map +1 -1
- package/dist/routes/data-explorer/recents.js +1 -1
- package/dist/routes/data-explorer/recents.js.map +1 -1
- package/dist/routes/data-explorer/shapes.js +2 -2
- package/dist/routes/data-explorer/shapes.js.map +1 -1
- package/dist/routes/integrations/components/connect-forms/CanvaConnectForm.d.ts +3 -0
- package/dist/routes/integrations/components/connect-forms/CanvaConnectForm.d.ts.map +1 -0
- package/dist/routes/integrations/components/connect-forms/CanvaConnectForm.js +12 -0
- package/dist/routes/integrations/components/connect-forms/CanvaConnectForm.js.map +1 -0
- package/dist/routes/integrations/components/connect-forms/DataConnectionConnectForm.d.ts.map +1 -1
- package/dist/routes/integrations/components/connect-forms/DataConnectionConnectForm.js +13 -6
- package/dist/routes/integrations/components/connect-forms/DataConnectionConnectForm.js.map +1 -1
- package/dist/routes/integrations/components/connect-forms/data-connection-fields.d.ts +3 -0
- package/dist/routes/integrations/components/connect-forms/data-connection-fields.d.ts.map +1 -1
- package/dist/routes/integrations/components/connect-forms/data-connection-fields.js +9 -2
- package/dist/routes/integrations/components/connect-forms/data-connection-fields.js.map +1 -1
- package/dist/routes/integrations/connect-forms.d.ts +1 -0
- package/dist/routes/integrations/connect-forms.d.ts.map +1 -1
- package/dist/routes/integrations/connect-forms.js +1 -0
- package/dist/routes/integrations/connect-forms.js.map +1 -1
- package/dist/routes/integrations/connection-view.d.ts.map +1 -1
- package/dist/routes/integrations/connection-view.js +1 -0
- package/dist/routes/integrations/connection-view.js.map +1 -1
- package/dist/routes/integrations/types.d.ts +2 -1
- package/dist/routes/integrations/types.d.ts.map +1 -1
- package/dist/routes/integrations/types.js +1 -0
- package/dist/routes/integrations/types.js.map +1 -1
- package/dist/routes/plans/components/ActionPlanPage.d.ts.map +1 -1
- package/dist/routes/plans/components/ActionPlanPage.js +4 -7
- package/dist/routes/plans/components/ActionPlanPage.js.map +1 -1
- package/dist/routes/plans/components/PlanDetailRouteContent.d.ts.map +1 -1
- package/dist/routes/plans/components/PlanDetailRouteContent.js +2 -1
- package/dist/routes/plans/components/PlanDetailRouteContent.js.map +1 -1
- package/dist/routes/rules/hooks/useRuleFactsPreview.js +4 -4
- package/dist/routes/rules/hooks/useRuleFactsPreview.js.map +1 -1
- package/dist/shacl/form-appearance.d.ts +1 -1
- package/dist/shacl/form-appearance.d.ts.map +1 -1
- package/dist/shacl/form-appearance.js +1 -1
- package/dist/shacl/form-appearance.js.map +1 -1
- package/dist/shared/graph-derived-queries.js +2 -2
- package/dist/shared/graph-derived-queries.js.map +1 -1
- package/package.json +12 -7
- package/src/app-subpaths.json +1 -0
- package/src/components/channel-icon/index.tsx +1 -1
- package/src/components/datastore-management/tree.ts +5 -5
- package/src/components/explain-fact/ExplainFact.tsx +3 -3
- package/src/components/planning/ActioningView.tsx +62 -70
- package/src/components/planning/ManualActionCard.tsx +66 -14
- package/src/components/planning/ManualActionList.tsx +30 -11
- package/src/components/planning/actioning-view-utils.ts +27 -1
- package/src/components/planning/plan-detail-utils.tsx +2 -0
- package/src/components/tool-invocation-card/ListRulesResultDisplay.tsx +2 -2
- package/src/components/tool-invocation-card/ToolOutputRenderer.tsx +10 -8
- package/src/components/tool-invocation-card/types.ts +8 -8
- package/src/components/tooltip/index.tsx +35 -2
- package/src/explain-fact/rule-presentation.ts +2 -2
- package/src/explain-fact/tree-model.ts +2 -2
- package/src/graph/entity-link.tsx +20 -0
- package/src/graph/graph-list-utils.ts +2 -0
- package/src/graph/graph-model.ts +15 -6
- package/src/graph/nodes/BrandAssetAnalysisView.tsx +3 -1
- package/src/graph/nodes/BrandFontSuggestionView.tsx +7 -1
- package/src/graph/nodes/BrandGuidelinesView.tsx +1 -1
- package/src/graph/nodes/NodePropertyTable.tsx +32 -143
- package/src/graph/nodes/node-property-row.tsx +154 -0
- package/src/graph/property-formatters.ts +5 -1
- package/src/graph/special-nodes/AttributeList.tsx +177 -0
- package/src/graph/special-nodes/EntityPreview.tsx +27 -0
- package/src/graph/special-nodes/EntityValueChip.tsx +85 -0
- package/src/graph/special-nodes/GenericView.tsx +49 -139
- package/src/graph/special-nodes/card-facts.ts +278 -0
- package/src/graph/special-nodes/property-icons.ts +59 -0
- package/src/graph/status-utils.ts +40 -0
- package/src/graph/types.ts +4 -0
- package/src/hooks/use-approve-anyway.ts +100 -0
- package/src/ldo-ui.ts +8 -0
- package/src/lib/find-latest-staged-rule.ts +1 -1
- package/src/lib/manual-actions.ts +3 -2
- package/src/lib/tool-icons.ts +6 -6
- package/src/lib/tool-names.ts +0 -1
- package/src/ontology/skolem.ts +2 -2
- package/src/providers/ActiveChatProvider.tsx +3 -1
- package/src/providers/ChatManagerProvider.tsx +3 -1
- package/src/providers/KnowledgeGraphStateProvider.tsx +1 -1
- package/src/providers/chat-socket-auth.ts +95 -16
- package/src/providers/index.tsx +16 -1
- package/src/routes/activity/detail/ActivityChanges.tsx +21 -5
- package/src/routes/activity/detail/ActivityDetail.tsx +24 -5
- package/src/routes/activity/detail/ActivityStepsRail.tsx +4 -2
- package/src/routes/activity/detail/ActivityTimeline.tsx +2 -2
- package/src/routes/activity/detail/NoChangesMessage.tsx +20 -0
- package/src/routes/data-explorer/class-properties.ts +2 -2
- package/src/routes/data-explorer/classes.ts +2 -2
- package/src/routes/data-explorer/components/RawTriples.tsx +1 -1
- package/src/routes/data-explorer/components/RecentTypes.tsx +1 -1
- package/src/routes/data-explorer/components/class-detail/Instances.tsx +1 -1
- package/src/routes/data-explorer/components/namespace-detail/NamespaceClassRow.tsx +1 -1
- package/src/routes/data-explorer/components/ontology-coverage/CoverageTermColumns.tsx +1 -1
- package/src/routes/data-explorer/components/ontology-coverage/UnobservedRuleVocabulary.tsx +1 -1
- package/src/routes/data-explorer/components/record-detail/ChatPreview.tsx +2 -2
- package/src/routes/data-explorer/recents.ts +1 -1
- package/src/routes/data-explorer/shapes.ts +2 -2
- package/src/routes/datastores/flatten.ts +1 -1
- package/src/routes/integrations/components/connect-forms/CanvaConnectForm.tsx +26 -0
- package/src/routes/integrations/components/connect-forms/DataConnectionConnectForm.tsx +38 -12
- package/src/routes/integrations/components/connect-forms/data-connection-fields.ts +11 -2
- package/src/routes/integrations/connect-forms.ts +1 -0
- package/src/routes/integrations/connection-view.ts +1 -0
- package/src/routes/integrations/types.ts +2 -0
- package/src/routes/plans/components/ActionPlanPage.tsx +9 -8
- package/src/routes/plans/components/PlanDetailRouteContent.tsx +4 -3
- package/src/routes/rules/hooks/useRuleFactsPreview.ts +4 -4
- package/src/shacl/form-appearance.ts +1 -1
- package/src/shared/graph-derived-queries.ts +2 -2
- package/dist/components/planning/ExecutionActivityRow.d.ts +0 -9
- package/dist/components/planning/ExecutionActivityRow.d.ts.map +0 -1
- package/dist/components/planning/ExecutionActivityRow.js +0 -53
- package/dist/components/planning/ExecutionActivityRow.js.map +0 -1
- package/dist/components/planning/ExecutionSectionItem.d.ts +0 -20
- package/dist/components/planning/ExecutionSectionItem.d.ts.map +0 -1
- package/dist/components/planning/ExecutionSectionItem.js +0 -66
- package/dist/components/planning/ExecutionSectionItem.js.map +0 -1
- package/dist/components/planning/ExecutionSections.d.ts +0 -16
- package/dist/components/planning/ExecutionSections.d.ts.map +0 -1
- package/dist/components/planning/ExecutionSections.js +0 -32
- package/dist/components/planning/ExecutionSections.js.map +0 -1
- package/dist/components/planning/action-plan-icons.d.ts +0 -3
- package/dist/components/planning/action-plan-icons.d.ts.map +0 -1
- package/dist/components/planning/action-plan-icons.js +0 -25
- package/dist/components/planning/action-plan-icons.js.map +0 -1
- package/dist/components/planning/execution-section-model.d.ts +0 -24
- package/dist/components/planning/execution-section-model.d.ts.map +0 -1
- package/dist/components/planning/execution-section-model.js +0 -150
- package/dist/components/planning/execution-section-model.js.map +0 -1
- package/dist/routes/data-explorer/components/TruncateTooltip.d.ts +0 -7
- package/dist/routes/data-explorer/components/TruncateTooltip.d.ts.map +0 -1
- package/dist/routes/data-explorer/components/TruncateTooltip.js +0 -9
- package/dist/routes/data-explorer/components/TruncateTooltip.js.map +0 -1
- package/src/components/planning/ExecutionActivityRow.tsx +0 -89
- package/src/components/planning/ExecutionSectionItem.tsx +0 -184
- package/src/components/planning/ExecutionSections.tsx +0 -97
- package/src/components/planning/action-plan-icons.tsx +0 -27
- package/src/components/planning/execution-section-model.ts +0 -190
- package/src/routes/data-explorer/components/TruncateTooltip.tsx +0 -25
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ontologyGraphIri,
|
|
1
|
+
import { ontologyGraphIri, shaclGraph } from "@manta-eu/client/shared/rdf-namespaces";
|
|
2
2
|
import { isPresent } from "@manta-eu/lib/present";
|
|
3
3
|
import { DataFactory, type RDF } from "ldkit/rdf";
|
|
4
4
|
import { SELECT } from "ldkit/sparql";
|
|
@@ -33,7 +33,7 @@ const classesQuery = `${prefixes}${SELECT.DISTINCT`?class ?label ?comment`.WHERE
|
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
35
|
UNION {
|
|
36
|
-
GRAPH ${df.namedNode(
|
|
36
|
+
GRAPH ${df.namedNode(shaclGraph)} { ?shapeInShaclGraph sh:targetClass ?class }
|
|
37
37
|
}
|
|
38
38
|
OPTIONAL { GRAPH ${df.namedNode(ontologyGraphIri)} { ?class rdfs:label ?label } }
|
|
39
39
|
OPTIONAL { GRAPH ${df.namedNode(ontologyGraphIri)} { ?class rdfs:comment ?comment } }
|
|
@@ -7,8 +7,8 @@ import type { ReactNode } from "react";
|
|
|
7
7
|
import { Link } from "react-router";
|
|
8
8
|
import { useTriples } from "../triples";
|
|
9
9
|
import { turtleForSubject } from "../turtle";
|
|
10
|
-
import { TruncateTooltip } from "./TruncateTooltip";
|
|
11
10
|
import { Skeleton } from "#components/skeleton/index";
|
|
11
|
+
import { TruncateTooltip } from "#components/tooltip/index";
|
|
12
12
|
import { decodeSkolem, isBlankNode, useInstanceLabel } from "#ldo-ui";
|
|
13
13
|
import { cn } from "#lib/utils";
|
|
14
14
|
|
|
@@ -16,8 +16,8 @@ import { Breadcrumbs } from "./Breadcrumbs";
|
|
|
16
16
|
import { DetailHeader, TypeBadge } from "./DetailHeader";
|
|
17
17
|
import { ModifiedAgo } from "./ModifiedAgo";
|
|
18
18
|
import { EntityName, LinkList, LinkRow, LoadingRows, StatusText } from "./RawTriples";
|
|
19
|
-
import { TruncateTooltip } from "./TruncateTooltip";
|
|
20
19
|
import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "#components/collapsible/index";
|
|
20
|
+
import { TruncateTooltip } from "#components/tooltip/index";
|
|
21
21
|
import { cn } from "#lib/utils";
|
|
22
22
|
|
|
23
23
|
type RecentInstanceRowsProps = { recentType: RecentType };
|
|
@@ -7,7 +7,7 @@ import { LoadMoreButton } from "../LoadMoreButton";
|
|
|
7
7
|
import { ModifiedAgo } from "../ModifiedAgo";
|
|
8
8
|
import { entityNameClass, EntityName, LinkList, LinkRow, LoadingRows, StatusText } from "../RawTriples";
|
|
9
9
|
import { SegmentBuilder } from "../SegmentBuilder";
|
|
10
|
-
import { TruncateTooltip } from "
|
|
10
|
+
import { TruncateTooltip } from "#components/tooltip/index";
|
|
11
11
|
import { encodeBlankKey, useBlankInstances } from "#routes/data-explorer/blank-record";
|
|
12
12
|
import { useFilteredCount, useFilteredInstances } from "#routes/data-explorer/filter-hooks";
|
|
13
13
|
import { classAnchor, hasActiveConditions, type SegmentFilter } from "#routes/data-explorer/filter-query";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { humanCount } from "@manta-eu/lib/humanize";
|
|
2
2
|
import { classPath } from "../../namespaces";
|
|
3
3
|
import { entityNameClass, LinkRow } from "../RawTriples";
|
|
4
|
-
import { TruncateTooltip } from "
|
|
4
|
+
import { TruncateTooltip } from "#components/tooltip/index";
|
|
5
5
|
import type { ExplorerClass } from "#routes/data-explorer/classes";
|
|
6
6
|
|
|
7
7
|
type NamespaceClassRowProps = { entry: ExplorerClass; count?: number };
|
|
@@ -4,10 +4,10 @@ import { useMemo } from "react";
|
|
|
4
4
|
import { Link } from "react-router";
|
|
5
5
|
import { classRef, namespaceLabel } from "../../namespaces";
|
|
6
6
|
import { NamespaceSwatch } from "../NamespaceSwatch";
|
|
7
|
-
import { TruncateTooltip } from "../TruncateTooltip";
|
|
8
7
|
import { MissingValue } from "./MissingValue";
|
|
9
8
|
import { RuleReferencesCell } from "./RuleReferencesCell";
|
|
10
9
|
import { Badge } from "#components/badge/index";
|
|
10
|
+
import { TruncateTooltip } from "#components/tooltip/index";
|
|
11
11
|
import { sectionLabelClass } from "#ldo-ui";
|
|
12
12
|
import { cn } from "#lib/utils";
|
|
13
13
|
import type { CoverageTerm } from "#routes/data-explorer/coverage";
|
|
@@ -6,13 +6,13 @@ import { useEffect, useMemo, useState } from "react";
|
|
|
6
6
|
import { Link } from "react-router";
|
|
7
7
|
import { classRef, namespaceLabel } from "../../namespaces";
|
|
8
8
|
import { NamespaceSwatch } from "../NamespaceSwatch";
|
|
9
|
-
import { TruncateTooltip } from "../TruncateTooltip";
|
|
10
9
|
import { RuleReferencesCell } from "./RuleReferencesCell";
|
|
11
10
|
import { Badge } from "#components/badge/index";
|
|
12
11
|
import { EmptyState } from "#components/empty-state/index";
|
|
13
12
|
import { SearchInput } from "#components/input/index";
|
|
14
13
|
import { PaginationBlock } from "#components/pagination/index";
|
|
15
14
|
import { createTableConfig, DataTable } from "#components/table/index";
|
|
15
|
+
import { TruncateTooltip } from "#components/tooltip/index";
|
|
16
16
|
import { shouldClampPageIndex, useFittedPagination } from "#hooks/useFittedPagination";
|
|
17
17
|
import { sectionLabelClass } from "#ldo-ui";
|
|
18
18
|
import { cn } from "#lib/utils";
|
|
@@ -90,14 +90,14 @@ export function ChatPreview(props: ChatPreviewProps) {
|
|
|
90
90
|
|
|
91
91
|
if (!node) return <StatusText>Nothing to preview.</StatusText>;
|
|
92
92
|
|
|
93
|
-
const EntityView = getEntityView(node.data.type, node.data.actionShape)
|
|
93
|
+
const EntityView = getEntityView(node.data.type, node.data.actionShape);
|
|
94
94
|
|
|
95
95
|
return (
|
|
96
96
|
<div className="flex flex-col gap-6">
|
|
97
97
|
<section>
|
|
98
98
|
<h3 className={cn(sectionLabelClass, "mb-1.5 text-muted-foreground")}>Chat rendering</h3>
|
|
99
99
|
<div className="max-w-md">
|
|
100
|
-
<EntityView data={node.data} />
|
|
100
|
+
{EntityView ? <EntityView data={node.data} /> : <GenericView data={node.data} defaultExpanded />}
|
|
101
101
|
</div>
|
|
102
102
|
</section>
|
|
103
103
|
|
|
@@ -19,7 +19,7 @@ const df = new DataFactory();
|
|
|
19
19
|
|
|
20
20
|
export const recentTypesLimit = 10;
|
|
21
21
|
|
|
22
|
-
// STR() ordering because sources mix xsd:date and xsd:dateTime, which
|
|
22
|
+
// STR() ordering because sources mix xsd:date and xsd:dateTime, which the datastore will not compare as temporals
|
|
23
23
|
const recentlyModifiedTypesSubquery = SELECT`?type (MAX(STR(?modified)) AS ?lastModified)`.WHERE`
|
|
24
24
|
?dated schema:dateModified ?modified .
|
|
25
25
|
?dated a ?type .
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ontologyGraphIri,
|
|
1
|
+
import { ontologyGraphIri, shaclGraph } from "@manta-eu/client/shared/rdf-namespaces";
|
|
2
2
|
import { isPresent } from "@manta-eu/lib/present";
|
|
3
3
|
import { DataFactory, type RDF } from "ldkit/rdf";
|
|
4
4
|
import { SELECT } from "ldkit/sparql";
|
|
@@ -62,7 +62,7 @@ export function groupShapeConstraints(rows: ShapeConstraintRow[]): ClassShape[]
|
|
|
62
62
|
|
|
63
63
|
function shapeDetailsQuery(classIri: string): string {
|
|
64
64
|
return `${prefixes}${SELECT.DISTINCT`?shape ?path ?constraint ?value ?listValue`.WHERE`
|
|
65
|
-
VALUES ?shapeGraph { ${df.namedNode(ontologyGraphIri)} ${df.namedNode(
|
|
65
|
+
VALUES ?shapeGraph { ${df.namedNode(ontologyGraphIri)} ${df.namedNode(shaclGraph)} }
|
|
66
66
|
GRAPH ?shapeGraph {
|
|
67
67
|
?shape sh:targetClass ${df.namedNode(safeIri(classIri))} ; sh:property ?propertyShape .
|
|
68
68
|
?propertyShape sh:path ?path ; ?constraint ?value .
|
|
@@ -22,7 +22,7 @@ export type DatastoreRow = {
|
|
|
22
22
|
// Org roots carry their own datastore but are also the container the rest hang off.
|
|
23
23
|
isOrganization: boolean;
|
|
24
24
|
mirrored?: boolean;
|
|
25
|
-
// Real in
|
|
25
|
+
// Real in the datastore, but no Keycloak node behind it, so it can only be selected.
|
|
26
26
|
isRealmDefault?: boolean;
|
|
27
27
|
isUnlinked?: boolean;
|
|
28
28
|
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { GQLIntegration } from "@manta-eu/client";
|
|
2
|
+
import { OAuthSingleAccountConnectForm } from "./OAuthSingleAccountConnectForm";
|
|
3
|
+
import type { ConnectFormProps } from "./types";
|
|
4
|
+
|
|
5
|
+
const canvaPermissions = [
|
|
6
|
+
"Read your designs, the folders they live in, and your uploaded assets.",
|
|
7
|
+
"Export your designs so their pages can be analyzed.",
|
|
8
|
+
"Read your brand templates and the comments on your designs.",
|
|
9
|
+
];
|
|
10
|
+
|
|
11
|
+
export function CanvaConnectForm(props: ConnectFormProps) {
|
|
12
|
+
return (
|
|
13
|
+
<OAuthSingleAccountConnectForm
|
|
14
|
+
{...props}
|
|
15
|
+
integration={GQLIntegration.Canva}
|
|
16
|
+
startHref="/oauth/canva/start"
|
|
17
|
+
ctaLabel="Continue with Canva"
|
|
18
|
+
stepTitle="Connect your Canva account"
|
|
19
|
+
stepDescription="Manta will take you to Canva to ask for permission, then bring you back here."
|
|
20
|
+
supportingInfo="You'll be taken to Canva to approve access. You can revoke it any time from your Canva account settings."
|
|
21
|
+
permissions={canvaPermissions}
|
|
22
|
+
waitingLabel="Waiting for you to finish connecting to Canva…"
|
|
23
|
+
connectedToastLabel="Canva connected"
|
|
24
|
+
/>
|
|
25
|
+
);
|
|
26
|
+
}
|
|
@@ -23,6 +23,8 @@ import {
|
|
|
23
23
|
nameSchema,
|
|
24
24
|
pickSettings,
|
|
25
25
|
settingsSchema,
|
|
26
|
+
sourceKey,
|
|
27
|
+
sourceSchema,
|
|
26
28
|
storedValues,
|
|
27
29
|
type ConnectorField,
|
|
28
30
|
type DataConnectionValues,
|
|
@@ -39,22 +41,41 @@ export type StoredConnection = StoredDataConnection & { id: string };
|
|
|
39
41
|
|
|
40
42
|
type Step = StepConfig<DataConnectionValues>;
|
|
41
43
|
|
|
42
|
-
|
|
44
|
+
const newSourceHint =
|
|
45
|
+
"Optional. Lowercase letters and digits. Left blank, Manta reuses the name of an earlier connection to this database, or takes one from the connection name. It can't change later.";
|
|
46
|
+
const editingSourceHint = "Set when the connection was created. It can't change.";
|
|
47
|
+
|
|
48
|
+
function nameStep(providerName: string, editing: boolean): Step {
|
|
43
49
|
return {
|
|
44
50
|
id: "name",
|
|
45
51
|
title: "Name this connection",
|
|
46
52
|
description: `Used to identify this ${providerName} database in Manta.`,
|
|
47
|
-
schema: z.object({ [nameKey]: nameSchema }),
|
|
53
|
+
schema: z.object({ [nameKey]: nameSchema, [sourceKey]: sourceSchema }),
|
|
48
54
|
continueLabel: "Continue",
|
|
49
55
|
render: (form) => (
|
|
50
|
-
<
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
56
|
+
<div className="grid gap-4">
|
|
57
|
+
<Input
|
|
58
|
+
id={inputId(nameKey)}
|
|
59
|
+
label="Name"
|
|
60
|
+
placeholder="Warehouse"
|
|
61
|
+
autoComplete="off"
|
|
62
|
+
error={form.formState.errors[nameKey]?.message?.toString()}
|
|
63
|
+
{...form.register(nameKey)}
|
|
64
|
+
/>
|
|
65
|
+
|
|
66
|
+
{(!editing || isPresent(form.getValues(sourceKey))) && (
|
|
67
|
+
<Input
|
|
68
|
+
id={inputId(sourceKey)}
|
|
69
|
+
label="Source name"
|
|
70
|
+
placeholder="warehouse"
|
|
71
|
+
autoComplete="off"
|
|
72
|
+
disabled={editing}
|
|
73
|
+
helperText={editing ? editingSourceHint : newSourceHint}
|
|
74
|
+
error={form.formState.errors[sourceKey]?.message?.toString()}
|
|
75
|
+
{...form.register(sourceKey)}
|
|
76
|
+
/>
|
|
77
|
+
)}
|
|
78
|
+
</div>
|
|
58
79
|
),
|
|
59
80
|
};
|
|
60
81
|
}
|
|
@@ -117,7 +138,7 @@ export function createSteps(
|
|
|
117
138
|
const required = fields.filter((field) => field.required);
|
|
118
139
|
const optional = fields.filter((field) => !field.required);
|
|
119
140
|
const steps = [
|
|
120
|
-
nameStep(providerName),
|
|
141
|
+
nameStep(providerName, editing),
|
|
121
142
|
connectionStep({ providerName, connectorType, stepFields: required, allFields: fields, editing }),
|
|
122
143
|
...(isPresent(optional) ? [optionalStep(optional, editing)] : []),
|
|
123
144
|
];
|
|
@@ -160,7 +181,12 @@ function DataConnectionWizard(props: DataConnectionWizardProps) {
|
|
|
160
181
|
|
|
161
182
|
async function create(values: DataConnectionValues) {
|
|
162
183
|
await createMutation.mutateAsync({
|
|
163
|
-
input: {
|
|
184
|
+
input: {
|
|
185
|
+
name: values[nameKey],
|
|
186
|
+
connectorType,
|
|
187
|
+
sourceName: values[sourceKey] || undefined,
|
|
188
|
+
settings: pickSettings(values, fields),
|
|
189
|
+
},
|
|
164
190
|
});
|
|
165
191
|
toast.success(`${provider.name} added`, { description: "Manta is testing the connection." });
|
|
166
192
|
}
|
|
@@ -5,12 +5,19 @@ import { z } from "zod";
|
|
|
5
5
|
export type ConnectorField = GQLDataConnectorTypesQuery["dataConnectorTypes"][number]["fields"][number];
|
|
6
6
|
|
|
7
7
|
export const nameKey = "connectionName";
|
|
8
|
+
export const sourceKey = "sourceName";
|
|
8
9
|
|
|
9
10
|
// The setting keys come from the connector descriptor at runtime, so the value type is an index signature.
|
|
10
11
|
export type DataConnectionValues = { [nameKey]: string; [setting: string]: string };
|
|
11
12
|
|
|
12
13
|
export const nameSchema = z.string().trim().min(1, "Name is required").max(64, "64 characters or fewer");
|
|
13
14
|
|
|
15
|
+
export const sourceSchema = z
|
|
16
|
+
.string()
|
|
17
|
+
.trim()
|
|
18
|
+
.regex(/^([a-z][a-z0-9]*)?$/, "Use lowercase letters and digits, starting with a letter")
|
|
19
|
+
.optional();
|
|
20
|
+
|
|
14
21
|
const valuePatterns: Partial<Record<GQLDataConnectorFieldType, { pattern: RegExp; message: string }>> = {
|
|
15
22
|
[GQLDataConnectorFieldType.Integer]: { pattern: /^-?\d+$/, message: "Enter a whole number" },
|
|
16
23
|
[GQLDataConnectorFieldType.Decimal]: { pattern: /^-?\d+(\.\d+)?$/, message: "Enter a number" },
|
|
@@ -40,7 +47,7 @@ export function settingsSchema(fields: readonly ConnectorField[]) {
|
|
|
40
47
|
|
|
41
48
|
// The fields come at runtime, so the built schema has no static output type to infer.
|
|
42
49
|
export function formSchema(fields: readonly ConnectorField[]): z.ZodType<DataConnectionValues, DataConnectionValues> {
|
|
43
|
-
return settingsSchema(fields).extend({ [nameKey]: nameSchema }) as unknown as z.ZodType<
|
|
50
|
+
return settingsSchema(fields).extend({ [nameKey]: nameSchema, [sourceKey]: sourceSchema }) as unknown as z.ZodType<
|
|
44
51
|
DataConnectionValues,
|
|
45
52
|
DataConnectionValues
|
|
46
53
|
>;
|
|
@@ -55,13 +62,14 @@ export function pickSettings(values: DataConnectionValues, fields: readonly Conn
|
|
|
55
62
|
}
|
|
56
63
|
|
|
57
64
|
export function blankValues(fields: readonly ConnectorField[]): DataConnectionValues {
|
|
58
|
-
return { ...Object.fromEntries(fields.map((field) => [field.key, ""])), [nameKey]: "" };
|
|
65
|
+
return { ...Object.fromEntries(fields.map((field) => [field.key, ""])), [nameKey]: "", [sourceKey]: "" };
|
|
59
66
|
}
|
|
60
67
|
|
|
61
68
|
export type DataConnectionSetting = { key: string; value: string };
|
|
62
69
|
|
|
63
70
|
export type StoredDataConnection = {
|
|
64
71
|
name: string;
|
|
72
|
+
sourceName?: string | null;
|
|
65
73
|
settings: readonly DataConnectionSetting[];
|
|
66
74
|
candidateSettings?: readonly DataConnectionSetting[] | null;
|
|
67
75
|
error?: string | null;
|
|
@@ -83,6 +91,7 @@ export function storedValues(stored: StoredDataConnection, fields: readonly Conn
|
|
|
83
91
|
return {
|
|
84
92
|
...Object.fromEntries(fields.map((field) => [field.key, field.secret ? "" : (storedByKey.get(field.key) ?? "")])),
|
|
85
93
|
[nameKey]: stored.name,
|
|
94
|
+
[sourceKey]: stored.sourceName ?? "",
|
|
86
95
|
};
|
|
87
96
|
}
|
|
88
97
|
|
|
@@ -6,6 +6,7 @@ export {
|
|
|
6
6
|
type StoredConnection,
|
|
7
7
|
} from "./components/connect-forms/DataConnectionConnectForm";
|
|
8
8
|
export type { DataConnectionSetting, StoredDataConnection } from "./components/connect-forms/data-connection-fields";
|
|
9
|
+
export { CanvaConnectForm } from "./components/connect-forms/CanvaConnectForm";
|
|
9
10
|
export { FigmaConnectForm } from "./components/connect-forms/FigmaConnectForm";
|
|
10
11
|
export { GmailConnectForm } from "./components/connect-forms/GmailConnectForm";
|
|
11
12
|
export { GoogleAdsConnectForm } from "./components/connect-forms/GoogleAdsConnectForm";
|
|
@@ -36,6 +36,7 @@ export type ConnectionView = {
|
|
|
36
36
|
// Fallback nouns shown until the ontology carries rdfs:labels for these classes (MNT-503).
|
|
37
37
|
// https://linear.app/manta-eu/issue/MNT-503/add-rdfslabel-to-provider-entity-classes-in-the-ontology
|
|
38
38
|
const oauthAccountNoun = {
|
|
39
|
+
[GQLIntegration.Canva]: "User",
|
|
39
40
|
[GQLIntegration.Dash]: "Account",
|
|
40
41
|
[GQLIntegration.Figma]: "User",
|
|
41
42
|
[GQLIntegration.Slack]: "Workspace",
|
|
@@ -11,6 +11,7 @@ import type { ComponentType, SVGProps } from "react";
|
|
|
11
11
|
import type { ConnectionView } from "./connection-view";
|
|
12
12
|
|
|
13
13
|
export const gmailProviderId = "GMAIL";
|
|
14
|
+
export const canvaProviderId = "CANVA";
|
|
14
15
|
export const figmaProviderId = "FIGMA";
|
|
15
16
|
export const dashProviderId = "DASH";
|
|
16
17
|
export const dataConnectionProviderIds = {
|
|
@@ -29,6 +30,7 @@ export type DataConnectorType = keyof typeof dataConnectionProviderIds;
|
|
|
29
30
|
export type ProviderId =
|
|
30
31
|
| `${GQLInferalIntegrationProvider}`
|
|
31
32
|
| typeof gmailProviderId
|
|
33
|
+
| typeof canvaProviderId
|
|
32
34
|
| typeof figmaProviderId
|
|
33
35
|
| typeof dashProviderId
|
|
34
36
|
| (typeof dataConnectionProviderIds)[DataConnectorType];
|
|
@@ -17,8 +17,8 @@ import { ExecutePlanDialog } from "#components/planning/ExecutePlanDialog";
|
|
|
17
17
|
import { isTerminalActionPlanState } from "#components/planning/plan-detail-utils";
|
|
18
18
|
import { useActionPlanDetail } from "#hooks/useActionPlanDetail";
|
|
19
19
|
import { useActionPlanExecution } from "#hooks/useActionPlanExecution";
|
|
20
|
-
import { useActionPlanDiff } from "#ldo-ui";
|
|
21
20
|
import { useMantaClient } from "#providers/index";
|
|
21
|
+
import { KnowledgeGraphStateProvider } from "#providers/KnowledgeGraphStateProvider";
|
|
22
22
|
|
|
23
23
|
export type ActionPlanPageProps = {
|
|
24
24
|
planName: string;
|
|
@@ -46,10 +46,6 @@ export function ActionPlanPage(props: ActionPlanPageProps) {
|
|
|
46
46
|
const viewRef = useRef<ConnectedPlanDetailViewHandle>(null);
|
|
47
47
|
const { mantaBaseUrl } = useMantaClient();
|
|
48
48
|
const { plan, graphDocument, isLoading, error } = useActionPlanDetail(planGraphIri);
|
|
49
|
-
const { data: diff = null, isLoading: isDiffLoading } = useActionPlanDiff({
|
|
50
|
-
planGraphIri,
|
|
51
|
-
enabled: !!planGraphIri,
|
|
52
|
-
});
|
|
53
49
|
const [pageMode, setPageMode] = useState<ActionPlanPageMode>(initialMode);
|
|
54
50
|
const [executePromptNonce, setExecutePromptNonce] = useState(0);
|
|
55
51
|
const [isRerunDialogOpen, setIsRerunDialogOpen] = useState(false);
|
|
@@ -196,11 +192,11 @@ export function ActionPlanPage(props: ActionPlanPageProps) {
|
|
|
196
192
|
{!isLoading && plan && !showPlanningSurface && (
|
|
197
193
|
<ActioningView
|
|
198
194
|
planGraphIri={planGraphIri}
|
|
199
|
-
|
|
200
|
-
isLoading={isLoading || isDiffLoading}
|
|
195
|
+
isLoading={isLoading}
|
|
201
196
|
mantaChatBaseUrl={mantaBaseUrl}
|
|
202
197
|
executionControl={executionControl}
|
|
203
198
|
executePromptNonce={executePromptNonce}
|
|
199
|
+
showActivityLinks={false}
|
|
204
200
|
datastoreId={datastoreId}
|
|
205
201
|
userId={userId}
|
|
206
202
|
hideRunControls={hideRunControls}
|
|
@@ -219,5 +215,10 @@ export function ActionPlanPage(props: ActionPlanPageProps) {
|
|
|
219
215
|
</>
|
|
220
216
|
);
|
|
221
217
|
|
|
222
|
-
|
|
218
|
+
// An exported entry point owns its graph refresh, like EmbeddedChat; hosts may mount it outside one.
|
|
219
|
+
return (
|
|
220
|
+
<KnowledgeGraphStateProvider datastoreId={datastoreId}>
|
|
221
|
+
{renderLayout({ header, body })}
|
|
222
|
+
</KnowledgeGraphStateProvider>
|
|
223
|
+
);
|
|
223
224
|
}
|
|
@@ -152,6 +152,7 @@ export function PlanDetailRouteContent(props: PlanDetailRouteContentProps) {
|
|
|
152
152
|
plan.hasCurrentFacts && isTerminalActionPlanState(effectivePlanState) ? handleOpenRerun : undefined;
|
|
153
153
|
const activeViewMode = viewMode === "visual" && !graphDocument?.size ? "overview" : viewMode;
|
|
154
154
|
const showExecutionSurface = shouldShowActioningSurface && activeViewMode === "overview";
|
|
155
|
+
const rulesSection = <ActionPlanRulesSection planGraphIri={planGraphIri} LinkComponent={Link} />;
|
|
155
156
|
|
|
156
157
|
return (
|
|
157
158
|
<div className="flex min-h-0 flex-1 flex-col overflow-y-auto overflow-x-hidden">
|
|
@@ -183,13 +184,12 @@ export function PlanDetailRouteContent(props: PlanDetailRouteContentProps) {
|
|
|
183
184
|
onExecute={detailExecuteAction}
|
|
184
185
|
onCancel={detailCancelAction}
|
|
185
186
|
onRerun={detailRerunAction}
|
|
186
|
-
rulesSlot={
|
|
187
|
+
rulesSlot={showExecutionSurface ? undefined : rulesSection}
|
|
187
188
|
onRunClick={(activityIri) => navigate(buildActivityHref(activityIri))}
|
|
188
189
|
/>
|
|
189
190
|
{showExecutionSurface && (
|
|
190
191
|
<ActioningView
|
|
191
192
|
planGraphIri={planGraphIri}
|
|
192
|
-
diff={null}
|
|
193
193
|
isLoading={false}
|
|
194
194
|
mantaChatBaseUrl={mantaBaseUrl}
|
|
195
195
|
executionControl={executionControl}
|
|
@@ -201,7 +201,7 @@ export function PlanDetailRouteContent(props: PlanDetailRouteContentProps) {
|
|
|
201
201
|
planGraphIri={planGraphIri}
|
|
202
202
|
emptyFallback={
|
|
203
203
|
isPresent(latestRunIri) ? (
|
|
204
|
-
<div className="h-[60vh]">
|
|
204
|
+
<div className="flex max-h-[60vh] flex-col">
|
|
205
205
|
<ActivityDetail
|
|
206
206
|
activityIri={latestRunIri}
|
|
207
207
|
variant="embedded"
|
|
@@ -214,6 +214,7 @@ export function PlanDetailRouteContent(props: PlanDetailRouteContentProps) {
|
|
|
214
214
|
}
|
|
215
215
|
/>
|
|
216
216
|
)}
|
|
217
|
+
{showExecutionSurface && <div className="mx-auto w-full max-w-7xl px-8 py-6">{rulesSection}</div>}
|
|
217
218
|
</div>
|
|
218
219
|
);
|
|
219
220
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useSparqlQueryQuery } from "@manta-eu/client";
|
|
2
|
-
import {
|
|
2
|
+
import { formatIriForSparql, compactUri, namespaces } from "@manta-eu/client/shared/rdf-namespaces";
|
|
3
3
|
import { isJsonLdNode } from "@manta-eu/client/types/jsonld";
|
|
4
4
|
import { parseDatalogRule, datalogBodyToSparqlSelect } from "@manta-eu/datalog-parser";
|
|
5
5
|
import type { DatalogAtom, SparqlSelectResult } from "@manta-eu/datalog-parser";
|
|
@@ -241,20 +241,20 @@ function generateTriplePattern(atom: DatalogAtom): string | null {
|
|
|
241
241
|
.with("property", () => {
|
|
242
242
|
if (!isPropertyAtom(atom)) return null;
|
|
243
243
|
const subject = atom.arguments[0]?.value || "?s";
|
|
244
|
-
const predicate =
|
|
244
|
+
const predicate = formatIriForSparql(atom.predicate.value || "");
|
|
245
245
|
const object = atom.arguments[1]?.value || "?o";
|
|
246
246
|
return `${subject} ${predicate} ${object}`;
|
|
247
247
|
})
|
|
248
248
|
.with("class", () => {
|
|
249
249
|
if (!isClassAtom(atom)) return null;
|
|
250
250
|
const subject = atom.arguments[0]?.value || "?s";
|
|
251
|
-
const classIRI =
|
|
251
|
+
const classIRI = formatIriForSparql(atom.predicate.value || "");
|
|
252
252
|
return `${subject} a ${classIRI}`;
|
|
253
253
|
})
|
|
254
254
|
.with("triple", () => {
|
|
255
255
|
if (!isTripleAtom(atom)) return null;
|
|
256
256
|
const subject = atom.subject.value || "?s";
|
|
257
|
-
const predicate =
|
|
257
|
+
const predicate = formatIriForSparql(atom.predicate.value || "");
|
|
258
258
|
const object = atom.object.value || "?o";
|
|
259
259
|
return `${subject} ${predicate} ${object}`;
|
|
260
260
|
})
|
|
@@ -168,7 +168,7 @@ function propertyPathsByBlankNode(turtle: string): Map<string, string> {
|
|
|
168
168
|
return paths;
|
|
169
169
|
}
|
|
170
170
|
|
|
171
|
-
/**
|
|
171
|
+
/** The datastore emits `sh:property` in arbitrary order, so fields move on every open; reorder by path local name. */
|
|
172
172
|
export function sortShapeProperties(turtle: string): string {
|
|
173
173
|
const paths = propertyPathsByBlankNode(turtle);
|
|
174
174
|
const localName = (node: string) => {
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
useConversationStartersQuery,
|
|
9
9
|
useCoverageRulesQuery,
|
|
10
10
|
useCurrentFactValueQuery,
|
|
11
|
-
|
|
11
|
+
useExplainFactQuery,
|
|
12
12
|
useGetActionPlansSummaryQuery,
|
|
13
13
|
useMemoriesQuery,
|
|
14
14
|
useMemorySchemasQuery,
|
|
@@ -34,7 +34,7 @@ export const graphDerivedQueries: QueryWithGetKey[] = [
|
|
|
34
34
|
useConversationStartersQuery,
|
|
35
35
|
useCoverageRulesQuery,
|
|
36
36
|
useCurrentFactValueQuery,
|
|
37
|
-
|
|
37
|
+
useExplainFactQuery,
|
|
38
38
|
useGetActionPlansSummaryQuery,
|
|
39
39
|
useMemoriesQuery,
|
|
40
40
|
useMemorySchemasQuery,
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { type ResolvedManualActionStatus } from "./execution-section-model.js";
|
|
2
|
-
import type { ExecutionProvenanceActivity } from "#ldo-ui";
|
|
3
|
-
type ExecutionActivityRowProps = {
|
|
4
|
-
activity: ExecutionProvenanceActivity;
|
|
5
|
-
manualActionStatus?: ResolvedManualActionStatus | null;
|
|
6
|
-
};
|
|
7
|
-
export declare function ExecutionActivityRow(props: ExecutionActivityRowProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
-
export {};
|
|
9
|
-
//# sourceMappingURL=ExecutionActivityRow.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ExecutionActivityRow.d.ts","sourceRoot":"","sources":["../../../src/components/planning/ExecutionActivityRow.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAoB,KAAK,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AAC9F,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,SAAS,CAAC;AAG3D,KAAK,yBAAyB,GAAG;IAC/B,QAAQ,EAAE,2BAA2B,CAAC;IACtC,kBAAkB,CAAC,EAAE,0BAA0B,GAAG,IAAI,CAAC;CACxD,CAAC;AAeF,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,yBAAyB,2CA4BpE"}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { humanDuration } from "@manta-eu/lib/humanize";
|
|
3
|
-
import { AlertCircle, Check, ClockFading, Loader2, X } from "lucide-react";
|
|
4
|
-
import { useEffect, useState } from "react";
|
|
5
|
-
import { match } from "ts-pattern";
|
|
6
|
-
import { parseTimestampMs } from "./execution-section-model.js";
|
|
7
|
-
import { cn } from "#lib/utils";
|
|
8
|
-
function resolveIconState(activity, manualActionStatus) {
|
|
9
|
-
if (activity.errorMessage)
|
|
10
|
-
return "error";
|
|
11
|
-
if (manualActionStatus === "REJECTED")
|
|
12
|
-
return "rejected";
|
|
13
|
-
if (manualActionStatus === "COMPLETED" || !!activity.endedAtTime)
|
|
14
|
-
return "completed";
|
|
15
|
-
if (activity.startedAtTime)
|
|
16
|
-
return "running";
|
|
17
|
-
return "pending";
|
|
18
|
-
}
|
|
19
|
-
export function ExecutionActivityRow(props) {
|
|
20
|
-
const { activity, manualActionStatus = null } = props;
|
|
21
|
-
const iconState = resolveIconState(activity, manualActionStatus);
|
|
22
|
-
const hasError = iconState === "error";
|
|
23
|
-
const isPending = iconState === "pending";
|
|
24
|
-
return (_jsxs("div", { className: cn("flex items-center justify-between pl-5 pr-3 py-2", hasError && "bg-error/10"), children: [_jsxs("div", { className: "flex items-center gap-3 min-w-0", children: [match(iconState)
|
|
25
|
-
.with("error", () => _jsx(AlertCircle, { className: "size-4 shrink-0 text-error-foreground" }))
|
|
26
|
-
.with("rejected", () => _jsx(X, { className: "size-4 shrink-0 text-error-foreground" }))
|
|
27
|
-
.with("completed", () => _jsx(Check, { className: "size-4 shrink-0 text-success-foreground" }))
|
|
28
|
-
.with("running", () => _jsx(Loader2, { className: "size-4 shrink-0 text-muted-foreground animate-spin" }))
|
|
29
|
-
.with("pending", () => _jsx(ClockFading, { className: "size-4 shrink-0 text-muted-foreground/40" }))
|
|
30
|
-
.exhaustive(), _jsx("span", { className: cn("text-[12px] font-mono leading-[18px] truncate", hasError ? "text-error-foreground" : isPending ? "text-muted-foreground" : "text-default-foreground"), children: activity.errorMessage ?? activity.entityLabel })] }), _jsx(ActivityElapsed, { activity: activity, hasError: hasError, isPending: isPending })] }));
|
|
31
|
-
}
|
|
32
|
-
function ActivityElapsed(props) {
|
|
33
|
-
const { activity, hasError, isPending } = props;
|
|
34
|
-
const isRunning = !!activity.startedAtTime && !activity.endedAtTime;
|
|
35
|
-
const [now, setNow] = useState(() => Date.now());
|
|
36
|
-
useEffect(() => {
|
|
37
|
-
if (!isRunning)
|
|
38
|
-
return;
|
|
39
|
-
const id = setInterval(() => setNow(Date.now()), 1000);
|
|
40
|
-
return () => clearInterval(id);
|
|
41
|
-
}, [isRunning]);
|
|
42
|
-
if (!activity.startedAtTime) {
|
|
43
|
-
return _jsx("span", { className: "text-[12px] font-mono leading-[18px] shrink-0 ml-3 text-muted-foreground", children: "-" });
|
|
44
|
-
}
|
|
45
|
-
const start = parseTimestampMs(activity.startedAtTime);
|
|
46
|
-
if (start === null) {
|
|
47
|
-
return _jsx("span", { className: "text-[12px] font-mono leading-[18px] shrink-0 ml-3 text-muted-foreground", children: "-" });
|
|
48
|
-
}
|
|
49
|
-
const end = parseTimestampMs(activity.endedAtTime) ?? now;
|
|
50
|
-
const label = humanDuration({ start, end, largest: 2 }) || "0 seconds";
|
|
51
|
-
return (_jsx("span", { className: cn("text-[12px] font-mono leading-[18px] shrink-0 ml-3", hasError ? "text-error-foreground" : isPending ? "text-muted-foreground" : "text-default-foreground"), children: label }));
|
|
52
|
-
}
|
|
53
|
-
//# sourceMappingURL=ExecutionActivityRow.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ExecutionActivityRow.js","sourceRoot":"","sources":["../../../src/components/planning/ExecutionActivityRow.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import type { EntityTypeEntry } from "./ActionPlanDetailView.js";
|
|
2
|
-
import { type SectionStatus } from "./execution-section-model.js";
|
|
3
|
-
import { type ManualActionTarget } from "./ManualActionCard.js";
|
|
4
|
-
import type { ExecutionProvenanceActivity, ManualAction, ManualActionResolution, ManualActionResolving } from "#ldo-ui";
|
|
5
|
-
export type ExecutionSectionItemProps = {
|
|
6
|
-
entry: EntityTypeEntry;
|
|
7
|
-
activities: ExecutionProvenanceActivity[];
|
|
8
|
-
status: SectionStatus;
|
|
9
|
-
fallbackStartedAtMs?: number | null;
|
|
10
|
-
isExpanded: boolean;
|
|
11
|
-
onToggle: () => void;
|
|
12
|
-
manualActions?: ManualAction[];
|
|
13
|
-
manualActionEntities?: Map<string, ManualActionTarget[]>;
|
|
14
|
-
onManualActionResolve?: (subjectIri: string, resolution: ManualActionResolution) => void;
|
|
15
|
-
resolvingManualAction?: ManualActionResolving;
|
|
16
|
-
canResolveManualAction?: boolean;
|
|
17
|
-
manualActionDisabledReason?: string;
|
|
18
|
-
};
|
|
19
|
-
export declare function ExecutionSectionItem(props: ExecutionSectionItemProps): import("react/jsx-runtime").JSX.Element;
|
|
20
|
-
//# sourceMappingURL=ExecutionSectionItem.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ExecutionSectionItem.d.ts","sourceRoot":"","sources":["../../../src/components/planning/ExecutionSectionItem.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAoD,KAAK,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAEjH,OAAO,EAAoB,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC/E,OAAO,KAAK,EAAE,2BAA2B,EAAE,YAAY,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAIxH,MAAM,MAAM,yBAAyB,GAAG;IACtC,KAAK,EAAE,eAAe,CAAC;IACvB,UAAU,EAAE,2BAA2B,EAAE,CAAC;IAC1C,MAAM,EAAE,aAAa,CAAC;IACtB,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;IAC/B,oBAAoB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,EAAE,CAAC,CAAC;IACzD,qBAAqB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,sBAAsB,KAAK,IAAI,CAAC;IACzF,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;IAC9C,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,0BAA0B,CAAC,EAAE,MAAM,CAAC;CACrC,CAAC;AAEF,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,yBAAyB,2CAwFpE"}
|