@drewswiredin/backstage-plugin-assistants 0.3.0 → 0.4.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.
|
@@ -124,8 +124,44 @@ const useStyles = makeStyles((theme) => ({
|
|
|
124
124
|
muted: {
|
|
125
125
|
color: theme.palette.text.secondary,
|
|
126
126
|
fontStyle: "italic"
|
|
127
|
+
},
|
|
128
|
+
// A tool group (one per source: Backstage actions, or each MCP server).
|
|
129
|
+
toolGroup: {
|
|
130
|
+
marginTop: theme.spacing(1.25)
|
|
131
|
+
},
|
|
132
|
+
groupHead: {
|
|
133
|
+
display: "flex",
|
|
134
|
+
alignItems: "center",
|
|
135
|
+
gap: theme.spacing(0.75),
|
|
136
|
+
padding: theme.spacing(0, 0.75),
|
|
137
|
+
marginBottom: theme.spacing(0.25)
|
|
138
|
+
},
|
|
139
|
+
groupName: {
|
|
140
|
+
fontFamily: MONO,
|
|
141
|
+
fontSize: "0.72rem",
|
|
142
|
+
fontWeight: 700,
|
|
143
|
+
color: theme.palette.text.secondary
|
|
144
|
+
},
|
|
145
|
+
groupTag: {
|
|
146
|
+
fontSize: "0.6rem",
|
|
147
|
+
letterSpacing: 0.3,
|
|
148
|
+
color: theme.palette.text.hint,
|
|
149
|
+
border: `1px solid ${theme.palette.divider}`,
|
|
150
|
+
borderRadius: 4,
|
|
151
|
+
padding: "1px 5px"
|
|
152
|
+
},
|
|
153
|
+
groupCount: {
|
|
154
|
+
marginLeft: "auto",
|
|
155
|
+
color: theme.palette.text.hint,
|
|
156
|
+
fontSize: "0.7rem"
|
|
127
157
|
}
|
|
128
158
|
}));
|
|
159
|
+
const BACKSTAGE_SOURCE = "backstage";
|
|
160
|
+
const toolSource = (t) => t.source ?? (t.name.includes("__") ? t.name.slice(0, t.name.indexOf("__")) : BACKSTAGE_SOURCE);
|
|
161
|
+
const toolDisplayName = (name) => {
|
|
162
|
+
const i = name.indexOf("__");
|
|
163
|
+
return i === -1 ? name : name.slice(i + 2);
|
|
164
|
+
};
|
|
129
165
|
const modelName = (id) => id.split(/[:/]/).pop() || id;
|
|
130
166
|
const AssistantDetailDialog = ({ assistant, open, onClose }) => {
|
|
131
167
|
const classes = useStyles();
|
|
@@ -136,6 +172,20 @@ const AssistantDetailDialog = ({ assistant, open, onClose }) => {
|
|
|
136
172
|
const tools = assistant.tools ?? [];
|
|
137
173
|
const models = assistant.models;
|
|
138
174
|
const color = resolveAssistantColor(assistant.color, theme.palette.type);
|
|
175
|
+
const toolGroups = (() => {
|
|
176
|
+
const map = /* @__PURE__ */ new Map();
|
|
177
|
+
for (const t of tools) {
|
|
178
|
+
const key = toolSource(t);
|
|
179
|
+
const arr = map.get(key);
|
|
180
|
+
if (arr) arr.push(t);
|
|
181
|
+
else map.set(key, [t]);
|
|
182
|
+
}
|
|
183
|
+
return [...map.entries()].sort(([a], [b]) => {
|
|
184
|
+
if (a === BACKSTAGE_SOURCE) return -1;
|
|
185
|
+
if (b === BACKSTAGE_SOURCE) return 1;
|
|
186
|
+
return a.localeCompare(b);
|
|
187
|
+
});
|
|
188
|
+
})();
|
|
139
189
|
return /* @__PURE__ */ jsxs(
|
|
140
190
|
Dialog,
|
|
141
191
|
{
|
|
@@ -174,10 +224,20 @@ const AssistantDetailDialog = ({ assistant, open, onClose }) => {
|
|
|
174
224
|
"Tools ",
|
|
175
225
|
/* @__PURE__ */ jsx("span", { className: classes.count, children: tools.length })
|
|
176
226
|
] }),
|
|
177
|
-
tools.length === 0 ? /* @__PURE__ */ jsx(Typography, { variant: "body2", className: classes.muted, children: "No tools available" }) :
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
227
|
+
tools.length === 0 ? /* @__PURE__ */ jsx(Typography, { variant: "body2", className: classes.muted, children: "No tools available" }) : toolGroups.map(([source, groupTools]) => {
|
|
228
|
+
const isBackstage = source === BACKSTAGE_SOURCE;
|
|
229
|
+
return /* @__PURE__ */ jsxs("div", { className: classes.toolGroup, children: [
|
|
230
|
+
/* @__PURE__ */ jsxs("div", { className: classes.groupHead, children: [
|
|
231
|
+
/* @__PURE__ */ jsx("span", { className: classes.groupName, children: isBackstage ? "Backstage" : source }),
|
|
232
|
+
/* @__PURE__ */ jsx("span", { className: classes.groupTag, children: isBackstage ? "runs as user" : "MCP" }),
|
|
233
|
+
/* @__PURE__ */ jsx("span", { className: classes.groupCount, children: groupTools.length })
|
|
234
|
+
] }),
|
|
235
|
+
/* @__PURE__ */ jsx("ul", { className: classes.list, children: groupTools.map((t) => /* @__PURE__ */ jsxs("li", { className: classes.row, children: [
|
|
236
|
+
/* @__PURE__ */ jsx("span", { className: classes.itemName, children: toolDisplayName(t.name) }),
|
|
237
|
+
t.description && /* @__PURE__ */ jsx(Tooltip, { title: t.description, placement: "top-end", children: /* @__PURE__ */ jsx(InfoOutlinedIcon, { className: classes.infoIcon }) })
|
|
238
|
+
] }, t.name)) })
|
|
239
|
+
] }, source);
|
|
240
|
+
})
|
|
181
241
|
] }),
|
|
182
242
|
/* @__PURE__ */ jsxs("div", { className: classes.section, children: [
|
|
183
243
|
/* @__PURE__ */ jsxs(Typography, { variant: "caption", className: classes.sectionLabel, children: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssistantDetailDialog.esm.js","sources":["../../src/collapsible/AssistantDetailDialog.tsx"],"sourcesContent":["import { FC } from 'react';\nimport { makeStyles, useTheme, fade } from '@material-ui/core/styles';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport IconButton from '@material-ui/core/IconButton';\nimport Typography from '@material-ui/core/Typography';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport CloseIcon from '@material-ui/icons/Close';\nimport StarIcon from '@material-ui/icons/Star';\nimport InfoOutlinedIcon from '@material-ui/icons/InfoOutlined';\nimport { AssistantSummary } from '@drewswiredin/backstage-plugin-assistants-common';\nimport { AssistantAvatar, resolveAssistantColor } from './surface/AssistantAvatar';\n\nconst MONO =\n '\"SFMono-Regular\", Menlo, Monaco, Consolas, \"Liberation Mono\", monospace';\n\nconst useStyles = makeStyles(theme => ({\n // overflow:hidden so the accent bar clips to the dialog's radius.\n paper: {\n overflow: 'hidden',\n },\n accent: {\n height: 3,\n width: '100%',\n },\n closeButton: {\n position: 'absolute',\n right: theme.spacing(1),\n top: theme.spacing(1),\n color: theme.palette.text.secondary,\n zIndex: 1,\n },\n content: {\n padding: theme.spacing(2, 3, 3),\n },\n // Centered, profile-style identity.\n profile: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n textAlign: 'center',\n gap: theme.spacing(1),\n },\n avatarHalo: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: '50%',\n padding: theme.spacing(1.25),\n },\n name: {\n fontWeight: 600,\n },\n description: {\n color: theme.palette.text.secondary,\n maxWidth: '34ch',\n },\n section: {\n marginTop: theme.spacing(2.5),\n },\n sectionLabel: {\n display: 'block',\n color: theme.palette.text.secondary,\n fontWeight: 600,\n fontSize: '0.7rem',\n textTransform: 'uppercase',\n letterSpacing: 0.6,\n marginBottom: theme.spacing(0.5),\n },\n count: {\n color: theme.palette.text.hint,\n fontWeight: 400,\n },\n list: {\n listStyle: 'none',\n margin: 0,\n padding: 0,\n display: 'flex',\n flexDirection: 'column',\n },\n // Technical list row: monospace name; a hover-revealed ⓘ carries the detail.\n row: {\n display: 'flex',\n alignItems: 'center',\n gap: theme.spacing(1),\n padding: theme.spacing(0.5, 0.75),\n borderRadius: theme.shape.borderRadius,\n '&:hover': {\n backgroundColor: theme.palette.action.hover,\n },\n '&:hover $infoIcon': {\n opacity: 1,\n pointerEvents: 'auto',\n },\n },\n itemName: {\n fontFamily: MONO,\n fontSize: '0.8rem',\n fontWeight: 500,\n color: theme.palette.text.primary,\n },\n // Hidden until row hover; its tooltip holds the tool's description.\n infoIcon: {\n marginLeft: 'auto',\n flexShrink: 0,\n fontSize: '1rem',\n color: theme.palette.text.hint,\n cursor: 'help',\n opacity: 0,\n pointerEvents: 'none',\n transition: theme.transitions.create('opacity'),\n },\n defaultMarker: {\n marginLeft: 'auto',\n display: 'inline-flex',\n alignItems: 'center',\n gap: theme.spacing(0.25),\n flexShrink: 0,\n fontSize: '0.7rem',\n textTransform: 'uppercase',\n letterSpacing: 0.5,\n color: theme.palette.text.secondary,\n },\n defaultStar: {\n fontSize: '0.9rem',\n },\n muted: {\n color: theme.palette.text.secondary,\n fontStyle: 'italic',\n },\n}));\n\n/** Compact model name: drop the `provider:` and `vendor/` prefixes. */\nconst modelName = (id: string) => id.split(/[:/]/).pop() || id;\n\n/**\n * Assistant detail modal: a centered, profile-style identity (avatar + name +\n * description, with an agent-color accent bar and avatar halo) over technical\n * lists of the assistant's Tools (monospace name + description, full text on\n * hover) and Models (monospace, default marked). All data comes from the\n * browser-safe {@link AssistantSummary}.\n *\n * @public\n */\nexport const AssistantDetailDialog: FC<{\n assistant?: AssistantSummary;\n open: boolean;\n onClose: () => void;\n}> = ({ assistant, open, onClose }) => {\n const classes = useStyles();\n const theme = useTheme();\n if (!assistant) {\n return null;\n }\n const tools = assistant.tools ?? [];\n const models = assistant.models;\n const color = resolveAssistantColor(assistant.color, theme.palette.type);\n\n return (\n <Dialog\n open={open}\n onClose={onClose}\n maxWidth=\"xs\"\n fullWidth\n classes={{ paper: classes.paper }}\n >\n <div className={classes.accent} style={{ backgroundColor: color }} />\n <IconButton\n aria-label=\"Close\"\n className={classes.closeButton}\n size=\"small\"\n onClick={onClose}\n >\n <CloseIcon fontSize=\"small\" />\n </IconButton>\n\n <DialogContent className={classes.content}>\n <div className={classes.profile}>\n <span\n className={classes.avatarHalo}\n style={{ backgroundColor: fade(color, 0.15) }}\n >\n <AssistantAvatar color={assistant.color} size={56} />\n </span>\n <Typography variant=\"h6\" className={classes.name}>\n {assistant.title}\n </Typography>\n {assistant.description && (\n <Typography variant=\"body2\" className={classes.description}>\n {assistant.description}\n </Typography>\n )}\n </div>\n\n <div className={classes.section}>\n <Typography variant=\"caption\" className={classes.sectionLabel}>\n Tools <span className={classes.count}>{tools.length}</span>\n </Typography>\n {tools.length === 0 ? (\n <Typography variant=\"body2\" className={classes.muted}>\n No tools available\n </Typography>\n ) : (\n <ul className={classes.list}>\n {tools.map(t => (\n <li key={t.name} className={classes.row}>\n <span className={classes.itemName}>{t.name}</span>\n {t.description && (\n <Tooltip title={t.description} placement=\"top-end\">\n <InfoOutlinedIcon className={classes.infoIcon} />\n </Tooltip>\n )}\n </li>\n ))}\n </ul>\n )}\n </div>\n\n <div className={classes.section}>\n <Typography variant=\"caption\" className={classes.sectionLabel}>\n Models{' '}\n {models && <span className={classes.count}>{models.length}</span>}\n </Typography>\n {!models ? (\n <Typography variant=\"body2\" className={classes.muted}>\n All available models\n </Typography>\n ) : (\n <ul className={classes.list}>\n {models.map(m => (\n <li key={m} className={classes.row}>\n <span className={classes.itemName}>{modelName(m)}</span>\n {m === assistant.defaultModel && (\n <span className={classes.defaultMarker}>\n <StarIcon\n className={classes.defaultStar}\n style={{ color }}\n />\n default\n </span>\n )}\n </li>\n ))}\n </ul>\n )}\n </div>\n </DialogContent>\n </Dialog>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AssistantDetailDialog.esm.js","sources":["../../src/collapsible/AssistantDetailDialog.tsx"],"sourcesContent":["import { FC } from 'react';\nimport { makeStyles, useTheme, fade } from '@material-ui/core/styles';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport IconButton from '@material-ui/core/IconButton';\nimport Typography from '@material-ui/core/Typography';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport CloseIcon from '@material-ui/icons/Close';\nimport StarIcon from '@material-ui/icons/Star';\nimport InfoOutlinedIcon from '@material-ui/icons/InfoOutlined';\nimport { AssistantSummary } from '@drewswiredin/backstage-plugin-assistants-common';\nimport { AssistantAvatar, resolveAssistantColor } from './surface/AssistantAvatar';\n\nconst MONO =\n '\"SFMono-Regular\", Menlo, Monaco, Consolas, \"Liberation Mono\", monospace';\n\nconst useStyles = makeStyles(theme => ({\n // overflow:hidden so the accent bar clips to the dialog's radius.\n paper: {\n overflow: 'hidden',\n },\n accent: {\n height: 3,\n width: '100%',\n },\n closeButton: {\n position: 'absolute',\n right: theme.spacing(1),\n top: theme.spacing(1),\n color: theme.palette.text.secondary,\n zIndex: 1,\n },\n content: {\n padding: theme.spacing(2, 3, 3),\n },\n // Centered, profile-style identity.\n profile: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n textAlign: 'center',\n gap: theme.spacing(1),\n },\n avatarHalo: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: '50%',\n padding: theme.spacing(1.25),\n },\n name: {\n fontWeight: 600,\n },\n description: {\n color: theme.palette.text.secondary,\n maxWidth: '34ch',\n },\n section: {\n marginTop: theme.spacing(2.5),\n },\n sectionLabel: {\n display: 'block',\n color: theme.palette.text.secondary,\n fontWeight: 600,\n fontSize: '0.7rem',\n textTransform: 'uppercase',\n letterSpacing: 0.6,\n marginBottom: theme.spacing(0.5),\n },\n count: {\n color: theme.palette.text.hint,\n fontWeight: 400,\n },\n list: {\n listStyle: 'none',\n margin: 0,\n padding: 0,\n display: 'flex',\n flexDirection: 'column',\n },\n // Technical list row: monospace name; a hover-revealed ⓘ carries the detail.\n row: {\n display: 'flex',\n alignItems: 'center',\n gap: theme.spacing(1),\n padding: theme.spacing(0.5, 0.75),\n borderRadius: theme.shape.borderRadius,\n '&:hover': {\n backgroundColor: theme.palette.action.hover,\n },\n '&:hover $infoIcon': {\n opacity: 1,\n pointerEvents: 'auto',\n },\n },\n itemName: {\n fontFamily: MONO,\n fontSize: '0.8rem',\n fontWeight: 500,\n color: theme.palette.text.primary,\n },\n // Hidden until row hover; its tooltip holds the tool's description.\n infoIcon: {\n marginLeft: 'auto',\n flexShrink: 0,\n fontSize: '1rem',\n color: theme.palette.text.hint,\n cursor: 'help',\n opacity: 0,\n pointerEvents: 'none',\n transition: theme.transitions.create('opacity'),\n },\n defaultMarker: {\n marginLeft: 'auto',\n display: 'inline-flex',\n alignItems: 'center',\n gap: theme.spacing(0.25),\n flexShrink: 0,\n fontSize: '0.7rem',\n textTransform: 'uppercase',\n letterSpacing: 0.5,\n color: theme.palette.text.secondary,\n },\n defaultStar: {\n fontSize: '0.9rem',\n },\n muted: {\n color: theme.palette.text.secondary,\n fontStyle: 'italic',\n },\n // A tool group (one per source: Backstage actions, or each MCP server).\n toolGroup: {\n marginTop: theme.spacing(1.25),\n },\n groupHead: {\n display: 'flex',\n alignItems: 'center',\n gap: theme.spacing(0.75),\n padding: theme.spacing(0, 0.75),\n marginBottom: theme.spacing(0.25),\n },\n groupName: {\n fontFamily: MONO,\n fontSize: '0.72rem',\n fontWeight: 700,\n color: theme.palette.text.secondary,\n },\n groupTag: {\n fontSize: '0.6rem',\n letterSpacing: 0.3,\n color: theme.palette.text.hint,\n border: `1px solid ${theme.palette.divider}`,\n borderRadius: 4,\n padding: '1px 5px',\n },\n groupCount: {\n marginLeft: 'auto',\n color: theme.palette.text.hint,\n fontSize: '0.7rem',\n },\n}));\n\nconst BACKSTAGE_SOURCE = 'backstage';\n\n/** The tool's source for grouping: explicit `source`, else the MCP namespace\n * prefix in the name, else Backstage. */\nconst toolSource = (t: { name: string; source?: string }): string =>\n t.source ??\n (t.name.includes('__')\n ? t.name.slice(0, t.name.indexOf('__'))\n : BACKSTAGE_SOURCE);\n\n/** Display name within a group: drop the `<source>__` namespace prefix. */\nconst toolDisplayName = (name: string): string => {\n const i = name.indexOf('__');\n return i === -1 ? name : name.slice(i + 2);\n};\n\n/** Compact model name: drop the `provider:` and `vendor/` prefixes. */\nconst modelName = (id: string) => id.split(/[:/]/).pop() || id;\n\n/**\n * Assistant detail modal: a centered, profile-style identity (avatar + name +\n * description, with an agent-color accent bar and avatar halo) over technical\n * lists of the assistant's Tools (monospace name + description, full text on\n * hover) and Models (monospace, default marked). All data comes from the\n * browser-safe {@link AssistantSummary}.\n *\n * @public\n */\nexport const AssistantDetailDialog: FC<{\n assistant?: AssistantSummary;\n open: boolean;\n onClose: () => void;\n}> = ({ assistant, open, onClose }) => {\n const classes = useStyles();\n const theme = useTheme();\n if (!assistant) {\n return null;\n }\n const tools = assistant.tools ?? [];\n const models = assistant.models;\n const color = resolveAssistantColor(assistant.color, theme.palette.type);\n\n // Group tools by source — Backstage actions first, then each MCP server.\n const toolGroups = (() => {\n const map = new Map<string, typeof tools>();\n for (const t of tools) {\n const key = toolSource(t);\n const arr = map.get(key);\n if (arr) arr.push(t);\n else map.set(key, [t]);\n }\n return [...map.entries()].sort(([a], [b]) => {\n if (a === BACKSTAGE_SOURCE) return -1;\n if (b === BACKSTAGE_SOURCE) return 1;\n return a.localeCompare(b);\n });\n })();\n\n return (\n <Dialog\n open={open}\n onClose={onClose}\n maxWidth=\"xs\"\n fullWidth\n classes={{ paper: classes.paper }}\n >\n <div className={classes.accent} style={{ backgroundColor: color }} />\n <IconButton\n aria-label=\"Close\"\n className={classes.closeButton}\n size=\"small\"\n onClick={onClose}\n >\n <CloseIcon fontSize=\"small\" />\n </IconButton>\n\n <DialogContent className={classes.content}>\n <div className={classes.profile}>\n <span\n className={classes.avatarHalo}\n style={{ backgroundColor: fade(color, 0.15) }}\n >\n <AssistantAvatar color={assistant.color} size={56} />\n </span>\n <Typography variant=\"h6\" className={classes.name}>\n {assistant.title}\n </Typography>\n {assistant.description && (\n <Typography variant=\"body2\" className={classes.description}>\n {assistant.description}\n </Typography>\n )}\n </div>\n\n <div className={classes.section}>\n <Typography variant=\"caption\" className={classes.sectionLabel}>\n Tools <span className={classes.count}>{tools.length}</span>\n </Typography>\n {tools.length === 0 ? (\n <Typography variant=\"body2\" className={classes.muted}>\n No tools available\n </Typography>\n ) : (\n toolGroups.map(([source, groupTools]) => {\n const isBackstage = source === BACKSTAGE_SOURCE;\n return (\n <div key={source} className={classes.toolGroup}>\n <div className={classes.groupHead}>\n <span className={classes.groupName}>\n {isBackstage ? 'Backstage' : source}\n </span>\n <span className={classes.groupTag}>\n {isBackstage ? 'runs as user' : 'MCP'}\n </span>\n <span className={classes.groupCount}>\n {groupTools.length}\n </span>\n </div>\n <ul className={classes.list}>\n {groupTools.map(t => (\n <li key={t.name} className={classes.row}>\n <span className={classes.itemName}>\n {toolDisplayName(t.name)}\n </span>\n {t.description && (\n <Tooltip title={t.description} placement=\"top-end\">\n <InfoOutlinedIcon className={classes.infoIcon} />\n </Tooltip>\n )}\n </li>\n ))}\n </ul>\n </div>\n );\n })\n )}\n </div>\n\n <div className={classes.section}>\n <Typography variant=\"caption\" className={classes.sectionLabel}>\n Models{' '}\n {models && <span className={classes.count}>{models.length}</span>}\n </Typography>\n {!models ? (\n <Typography variant=\"body2\" className={classes.muted}>\n All available models\n </Typography>\n ) : (\n <ul className={classes.list}>\n {models.map(m => (\n <li key={m} className={classes.row}>\n <span className={classes.itemName}>{modelName(m)}</span>\n {m === assistant.defaultModel && (\n <span className={classes.defaultMarker}>\n <StarIcon\n className={classes.defaultStar}\n style={{ color }}\n />\n default\n </span>\n )}\n </li>\n ))}\n </ul>\n )}\n </div>\n </DialogContent>\n </Dialog>\n );\n};\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@drewswiredin/backstage-plugin-assistants",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "Frontend plugin — AI Assistants for Backstage.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"publishConfig": {
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
"@backstage/core-plugin-api": "^1.12.0",
|
|
67
67
|
"@backstage/frontend-plugin-api": "^0.17.0",
|
|
68
68
|
"@backstage/ui": "^0.15.0",
|
|
69
|
-
"@drewswiredin/backstage-plugin-assistants-common": "0.
|
|
69
|
+
"@drewswiredin/backstage-plugin-assistants-common": "0.4.0",
|
|
70
70
|
"@material-ui/core": "^4.12.4",
|
|
71
71
|
"@material-ui/icons": "^4.11.3",
|
|
72
72
|
"@remixicon/react": "^4.5.0",
|