@julianpedro/plugin-dev-ai-hub 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.
Files changed (49) hide show
  1. package/dist/api/DevAiHubClient.esm.js +5 -0
  2. package/dist/api/DevAiHubClient.esm.js.map +1 -1
  3. package/dist/components/AdminPage/AdminPage.esm.js +106 -0
  4. package/dist/components/AdminPage/AdminPage.esm.js.map +1 -0
  5. package/dist/components/AdminPage/index.esm.js +6 -0
  6. package/dist/components/AdminPage/index.esm.js.map +1 -0
  7. package/dist/components/AssetCard/AssetCard.esm.js +36 -17
  8. package/dist/components/AssetCard/AssetCard.esm.js.map +1 -1
  9. package/dist/components/AssetDetailPanel/AssetDetailPanel.esm.js +10 -13
  10. package/dist/components/AssetDetailPanel/AssetDetailPanel.esm.js.map +1 -1
  11. package/dist/components/AssetFilters/AssetFilters.esm.js +5 -3
  12. package/dist/components/AssetFilters/AssetFilters.esm.js.map +1 -1
  13. package/dist/components/AssetHelpDialog/AssetHelpDialog.esm.js +1 -1
  14. package/dist/components/AssetHelpDialog/AssetHelpDialog.esm.js.map +1 -1
  15. package/dist/components/AssetInstallDialog/AssetInstallDialog.esm.js +3 -3
  16. package/dist/components/AssetInstallDialog/AssetInstallDialog.esm.js.map +1 -1
  17. package/dist/components/AssetsTab/AssetsTab.esm.js +221 -0
  18. package/dist/components/AssetsTab/AssetsTab.esm.js.map +1 -0
  19. package/dist/components/AssetsTab/index.esm.js +6 -0
  20. package/dist/components/AssetsTab/index.esm.js.map +1 -0
  21. package/dist/components/DevAiHubPage/DevAiHubPage.esm.js +194 -111
  22. package/dist/components/DevAiHubPage/DevAiHubPage.esm.js.map +1 -1
  23. package/dist/components/McpConfigDialog/McpConfigDialog.esm.js +3 -581
  24. package/dist/components/McpConfigDialog/McpConfigDialog.esm.js.map +1 -1
  25. package/dist/components/McpPage/McpPage.esm.js +478 -0
  26. package/dist/components/McpPage/McpPage.esm.js.map +1 -0
  27. package/dist/components/McpPage/index.esm.js +6 -0
  28. package/dist/components/McpPage/index.esm.js.map +1 -0
  29. package/dist/components/ModelIcon/ModelBadge.esm.js +73 -0
  30. package/dist/components/ModelIcon/ModelBadge.esm.js.map +1 -0
  31. package/dist/components/ModelIcon/ModelIcon.esm.js +45 -0
  32. package/dist/components/ModelIcon/ModelIcon.esm.js.map +1 -0
  33. package/dist/components/ToolIcon/ToolIcon.esm.js +1 -1
  34. package/dist/components/ToolIcon/ToolIcon.esm.js.map +1 -1
  35. package/dist/context/UiConfigContext.esm.js +79 -0
  36. package/dist/context/UiConfigContext.esm.js.map +1 -0
  37. package/dist/hooks/index.esm.js +22 -1
  38. package/dist/hooks/index.esm.js.map +1 -1
  39. package/dist/index.d.ts +140 -20
  40. package/dist/index.esm.js +1 -1
  41. package/dist/locales/es.esm.js +18 -9
  42. package/dist/locales/es.esm.js.map +1 -1
  43. package/dist/locales/pt-BR.esm.js +18 -9
  44. package/dist/locales/pt-BR.esm.js.map +1 -1
  45. package/dist/plugin.esm.js +35 -6
  46. package/dist/plugin.esm.js.map +1 -1
  47. package/dist/translation.esm.js +27 -11
  48. package/dist/translation.esm.js.map +1 -1
  49. package/package.json +15 -5
@@ -1,4 +1,4 @@
1
- import { createTranslationRef } from '@backstage/core-plugin-api/alpha';
1
+ import { createTranslationRef, createTranslationResource } from '@backstage/frontend-plugin-api';
2
2
 
3
3
  const devAiHubTranslationRef = createTranslationRef({
4
4
  id: "dev-ai-hub",
@@ -13,7 +13,7 @@ const devAiHubTranslationRef = createTranslationRef({
13
13
  detailsTooltip: "View details",
14
14
  helpTooltip: "Usage guide",
15
15
  mcpsRequired: "Required MCPs",
16
- bundleFooter: "{{count}} assets \xB7 {{author}}",
16
+ bundleFooter: "{{itemCount}} assets \xB7 {{author}}",
17
17
  versionFooter: "v{{version}} \xB7 {{author}}",
18
18
  moreTags: "+{{count}}"
19
19
  },
@@ -22,7 +22,7 @@ const devAiHubTranslationRef = createTranslationRef({
22
22
  tabPreview: "Preview",
23
23
  tabMetadata: "Metadata",
24
24
  tabRawYaml: "Raw YAML",
25
- bundlePreviewTitle: "Bundle contents \u2014 {{count}} assets",
25
+ bundlePreviewTitle: "Bundle contents \u2014 {{total}} assets",
26
26
  bundleItemNotSynced: "Not synced \u2014 {{ref}}",
27
27
  metaAuthor: "Author",
28
28
  metaVersion: "Version",
@@ -32,7 +32,7 @@ const devAiHubTranslationRef = createTranslationRef({
32
32
  metaBranch: "Branch",
33
33
  compatibleTools: "Compatible tools",
34
34
  tagsLabel: "Tags",
35
- bundleContents: "Bundle contents ({{count}} assets)",
35
+ bundleContents: "Bundle contents ({{total}} assets)",
36
36
  bundleItemNotSyncedYet: "Not synced yet \u2014 {{ref}}",
37
37
  bundledFiles: "Bundled files",
38
38
  zipDescription: "Downloads as .zip containing all files above.",
@@ -49,7 +49,7 @@ const devAiHubTranslationRef = createTranslationRef({
49
49
  allTools: "All Tools",
50
50
  providerHeader: "Provider",
51
51
  tagsHeader: "Tags",
52
- tagsShowMore: "+{{count}} more",
52
+ tagsShowMore: "+{{remaining}} more",
53
53
  tagsShowLess: "Show less"
54
54
  },
55
55
  assetInstallDialog: {
@@ -112,17 +112,26 @@ const devAiHubTranslationRef = createTranslationRef({
112
112
  statsWorkflows: "{{count}} Workflows",
113
113
  lastSync: "Last sync: {{time}}",
114
114
  configMcp: "MCP Servers",
115
- assetCountOne: "{{count}} asset",
116
- assetCountOther: "{{count}} assets",
117
- providerCountOne: "{{count}} provider",
118
- providerCountOther: "{{count}} providers",
115
+ assetCountOne: "{{n}} asset",
116
+ assetCountOther: "{{n}} assets",
117
+ providerCountOne: "{{n}} provider",
118
+ providerCountOther: "{{n}} providers",
119
119
  totalStats: "{{totalAssets}} assets \xB7 {{providers}}",
120
120
  noAssetsTitle: "No assets found",
121
121
  noAssetsSubtitle: "Try adjusting your filters or search terms.",
122
122
  timeJustNow: "just now",
123
123
  timeMinutesAgo: "{{count}}m ago",
124
124
  timeHoursAgo: "{{count}}h ago",
125
- timeDaysAgo: "{{count}}d ago"
125
+ timeDaysAgo: "{{count}}d ago",
126
+ providersSectionTitle: "Providers",
127
+ syncAllButton: "Sync All",
128
+ syncButton: "Sync",
129
+ syncTriggered: "Sync triggered",
130
+ providerStatusError: "Error",
131
+ noProvidersConfigured: "No providers configured.",
132
+ tabAssets: "Assets",
133
+ tabMcp: "MCP",
134
+ tabAdmin: "Admin"
126
135
  }
127
136
  },
128
137
  translations: {
@@ -130,6 +139,13 @@ const devAiHubTranslationRef = createTranslationRef({
130
139
  "es": () => import('./locales/es.esm.js')
131
140
  }
132
141
  });
142
+ const devAiHubTranslationResource = createTranslationResource({
143
+ ref: devAiHubTranslationRef,
144
+ translations: {
145
+ "pt-BR": () => import('./locales/pt-BR.esm.js'),
146
+ "es": () => import('./locales/es.esm.js')
147
+ }
148
+ });
133
149
 
134
- export { devAiHubTranslationRef };
150
+ export { devAiHubTranslationRef, devAiHubTranslationResource };
135
151
  //# sourceMappingURL=translation.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"translation.esm.js","sources":["../src/translation.ts"],"sourcesContent":["import { createTranslationRef } from '@backstage/core-plugin-api/alpha';\n\nexport const devAiHubTranslationRef = createTranslationRef({\n id: 'dev-ai-hub',\n messages: {\n toolIcon: {\n universal: 'Universal',\n },\n assetCard: {\n newBadge: 'New',\n updatedBadge: 'Updated',\n installTooltip: 'Install in editor',\n detailsTooltip: 'View details',\n helpTooltip: 'Usage guide',\n mcpsRequired: 'Required MCPs',\n bundleFooter: '{{count}} assets · {{author}}',\n versionFooter: 'v{{version}} · {{author}}',\n moreTags: '+{{count}}',\n },\n assetDetailPanel: {\n loading: 'Loading...',\n tabPreview: 'Preview',\n tabMetadata: 'Metadata',\n tabRawYaml: 'Raw YAML',\n bundlePreviewTitle: 'Bundle contents — {{count}} assets',\n bundleItemNotSynced: 'Not synced — {{ref}}',\n metaAuthor: 'Author',\n metaVersion: 'Version',\n metaProvider: 'Provider',\n metaCommit: 'Commit',\n metaLastSynced: 'Last synced',\n metaBranch: 'Branch',\n compatibleTools: 'Compatible tools',\n tagsLabel: 'Tags',\n bundleContents: 'Bundle contents ({{count}} assets)',\n bundleItemNotSyncedYet: 'Not synced yet — {{ref}}',\n bundledFiles: 'Bundled files',\n zipDescription: 'Downloads as .zip containing all files above.',\n repository: 'Repository',\n copyMarkdown: 'Copy Markdown',\n openInRepo: 'Open in Repo',\n copiedMessage: 'Markdown copied to clipboard!',\n },\n assetFilters: {\n searchPlaceholder: 'Search assets by name, description or content…',\n typeHeader: 'Type',\n typeAll: 'All',\n aiToolHeader: 'AI Tool',\n allTools: 'All Tools',\n providerHeader: 'Provider',\n tagsHeader: 'Tags',\n tagsShowMore: '+{{count}} more',\n tagsShowLess: 'Show less',\n },\n assetInstallDialog: {\n bundledSkillTitle: 'Bundled skill — downloads as .zip',\n bundledSkillDescription: 'This skill includes resource files alongside SKILL.md. Extract the zip and place all files in the skill directory.',\n installPathLabel: 'Install path',\n installInVscode: 'Install in VSCode',\n copied: 'Copied!',\n copyTooltip: 'Copy markdown content',\n copyContent: 'Copy Content',\n downloadZipTooltip: 'Download as .zip with all bundled files',\n downloadTooltip: 'Download file with correct name',\n downloadZip: 'Download .zip',\n download: 'Download',\n stepProgress: 'Step {{current}} of {{total}}',\n notSyncedTitle: 'This asset has not been synced yet.',\n notSyncedRef: 'Ref: {{ref}}',\n dialogTitleBundle: 'Install Bundle: {{name}}',\n dialogSubtitleBundle: 'Install each asset in the bundle step by step.',\n dialogTitle: 'Install: {{name}}',\n dialogSubtitle: 'Copy the content and place the file at the path shown for your tool.',\n bundleProgress: '{{current}} / {{total}} assets',\n bundleEmpty: 'This bundle has no items yet.',\n downloadBundle: 'Download Bundle .zip',\n back: 'Back',\n next: 'Next',\n finish: 'Finish',\n close: 'Close',\n },\n mcpConfigDialog: {\n title: 'MCP Configuration',\n subtitle: 'Browse the catalog of ready-to-install MCP servers, or configure the Dev AI Hub MCP for your AI tool.',\n catalogTab: 'MCP Catalog',\n catalogDescription: 'Pre-configured MCP servers you can install with one click in VSCode or Cursor.',\n catalogEmpty: 'No MCP servers configured in the catalog.',\n catalogAddHint: 'Add a mcp-catalog.yaml file to the root of your assets repository to manage the catalog.',\n toolConfigSection: 'Configure Dev AI Hub MCP',\n scopeToProvider: 'Scope to Provider',\n allProviders: 'All providers',\n proactiveSuggestions: 'Proactive suggestions',\n proactiveDescription: 'The AI will automatically suggest relevant assets based on your project context. Disable if you prefer to search manually.',\n mcpEndpoint: 'MCP Endpoint',\n copyUrl: 'Copy URL',\n installInVscode: 'Install in VSCode',\n installInCursor: 'Install in Cursor',\n manualConfig: 'Manual config — {{file}}',\n claudeConfigDesc: 'Add to .mcp.json in your project root (or run via claude mcp add):',\n copilotConfigDesc: 'Add to your VS Code settings (.vscode/settings.json or user settings):',\n geminiConfigDesc: 'Add to your Gemini CLI configuration:',\n cursorConfigDesc: 'Add to .cursor/mcp.json in your project root:',\n omitToolHint: 'Omit ?tool= to receive all assets regardless of tool compatibility.',\n close: 'Close',\n },\n devAiHubPage: {\n title: 'Dev AI Hub',\n subtitle: 'Centralized AI assets for your team',\n statsInstructions: '{{count}} Instructions',\n statsAgents: '{{count}} Agents',\n statsSkills: '{{count}} Skills',\n statsWorkflows: '{{count}} Workflows',\n lastSync: 'Last sync: {{time}}',\n configMcp: 'MCP Servers',\n assetCountOne: '{{count}} asset',\n assetCountOther: '{{count}} assets',\n providerCountOne: '{{count}} provider',\n providerCountOther: '{{count}} providers',\n totalStats: '{{totalAssets}} assets · {{providers}}',\n noAssetsTitle: 'No assets found',\n noAssetsSubtitle: 'Try adjusting your filters or search terms.',\n timeJustNow: 'just now',\n timeMinutesAgo: '{{count}}m ago',\n timeHoursAgo: '{{count}}h ago',\n timeDaysAgo: '{{count}}d ago',\n },\n },\n translations: {\n 'pt-BR': () => import('./locales/pt-BR'),\n 'es': () => import('./locales/es'),\n },\n});\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"translation.esm.js","sources":["../src/translation.ts"],"sourcesContent":["import { createTranslationRef, createTranslationResource } from '@backstage/frontend-plugin-api';\n\nexport const devAiHubTranslationRef = createTranslationRef({\n id: 'dev-ai-hub',\n messages: {\n toolIcon: {\n universal: 'Universal',\n },\n assetCard: {\n newBadge: 'New',\n updatedBadge: 'Updated',\n installTooltip: 'Install in editor',\n detailsTooltip: 'View details',\n helpTooltip: 'Usage guide',\n mcpsRequired: 'Required MCPs',\n bundleFooter: '{{itemCount}} assets · {{author}}',\n versionFooter: 'v{{version}} · {{author}}',\n moreTags: '+{{count}}',\n },\n assetDetailPanel: {\n loading: 'Loading...',\n tabPreview: 'Preview',\n tabMetadata: 'Metadata',\n tabRawYaml: 'Raw YAML',\n bundlePreviewTitle: 'Bundle contents — {{total}} assets',\n bundleItemNotSynced: 'Not synced — {{ref}}',\n metaAuthor: 'Author',\n metaVersion: 'Version',\n metaProvider: 'Provider',\n metaCommit: 'Commit',\n metaLastSynced: 'Last synced',\n metaBranch: 'Branch',\n compatibleTools: 'Compatible tools',\n tagsLabel: 'Tags',\n bundleContents: 'Bundle contents ({{total}} assets)',\n bundleItemNotSyncedYet: 'Not synced yet — {{ref}}',\n bundledFiles: 'Bundled files',\n zipDescription: 'Downloads as .zip containing all files above.',\n repository: 'Repository',\n copyMarkdown: 'Copy Markdown',\n openInRepo: 'Open in Repo',\n copiedMessage: 'Markdown copied to clipboard!',\n },\n assetFilters: {\n searchPlaceholder: 'Search assets by name, description or content…',\n typeHeader: 'Type',\n typeAll: 'All',\n aiToolHeader: 'AI Tool',\n allTools: 'All Tools',\n providerHeader: 'Provider',\n tagsHeader: 'Tags',\n tagsShowMore: '+{{remaining}} more',\n tagsShowLess: 'Show less',\n },\n assetInstallDialog: {\n bundledSkillTitle: 'Bundled skill — downloads as .zip',\n bundledSkillDescription: 'This skill includes resource files alongside SKILL.md. Extract the zip and place all files in the skill directory.',\n installPathLabel: 'Install path',\n installInVscode: 'Install in VSCode',\n copied: 'Copied!',\n copyTooltip: 'Copy markdown content',\n copyContent: 'Copy Content',\n downloadZipTooltip: 'Download as .zip with all bundled files',\n downloadTooltip: 'Download file with correct name',\n downloadZip: 'Download .zip',\n download: 'Download',\n stepProgress: 'Step {{current}} of {{total}}',\n notSyncedTitle: 'This asset has not been synced yet.',\n notSyncedRef: 'Ref: {{ref}}',\n dialogTitleBundle: 'Install Bundle: {{name}}',\n dialogSubtitleBundle: 'Install each asset in the bundle step by step.',\n dialogTitle: 'Install: {{name}}',\n dialogSubtitle: 'Copy the content and place the file at the path shown for your tool.',\n bundleProgress: '{{current}} / {{total}} assets',\n bundleEmpty: 'This bundle has no items yet.',\n downloadBundle: 'Download Bundle .zip',\n back: 'Back',\n next: 'Next',\n finish: 'Finish',\n close: 'Close',\n },\n mcpConfigDialog: {\n title: 'MCP Configuration',\n subtitle: 'Browse the catalog of ready-to-install MCP servers, or configure the Dev AI Hub MCP for your AI tool.',\n catalogTab: 'MCP Catalog',\n catalogDescription: 'Pre-configured MCP servers you can install with one click in VSCode or Cursor.',\n catalogEmpty: 'No MCP servers configured in the catalog.',\n catalogAddHint: 'Add a mcp-catalog.yaml file to the root of your assets repository to manage the catalog.',\n toolConfigSection: 'Configure Dev AI Hub MCP',\n scopeToProvider: 'Scope to Provider',\n allProviders: 'All providers',\n proactiveSuggestions: 'Proactive suggestions',\n proactiveDescription: 'The AI will automatically suggest relevant assets based on your project context. Disable if you prefer to search manually.',\n mcpEndpoint: 'MCP Endpoint',\n copyUrl: 'Copy URL',\n installInVscode: 'Install in VSCode',\n installInCursor: 'Install in Cursor',\n manualConfig: 'Manual config — {{file}}',\n claudeConfigDesc: 'Add to .mcp.json in your project root (or run via claude mcp add):',\n copilotConfigDesc: 'Add to your VS Code settings (.vscode/settings.json or user settings):',\n geminiConfigDesc: 'Add to your Gemini CLI configuration:',\n cursorConfigDesc: 'Add to .cursor/mcp.json in your project root:',\n omitToolHint: 'Omit ?tool= to receive all assets regardless of tool compatibility.',\n close: 'Close',\n },\n devAiHubPage: {\n title: 'Dev AI Hub',\n subtitle: 'Centralized AI assets for your team',\n statsInstructions: '{{count}} Instructions',\n statsAgents: '{{count}} Agents',\n statsSkills: '{{count}} Skills',\n statsWorkflows: '{{count}} Workflows',\n lastSync: 'Last sync: {{time}}',\n configMcp: 'MCP Servers',\n assetCountOne: '{{n}} asset',\n assetCountOther: '{{n}} assets',\n providerCountOne: '{{n}} provider',\n providerCountOther: '{{n}} providers',\n totalStats: '{{totalAssets}} assets · {{providers}}',\n noAssetsTitle: 'No assets found',\n noAssetsSubtitle: 'Try adjusting your filters or search terms.',\n timeJustNow: 'just now',\n timeMinutesAgo: '{{count}}m ago',\n timeHoursAgo: '{{count}}h ago',\n timeDaysAgo: '{{count}}d ago',\n providersSectionTitle: 'Providers',\n syncAllButton: 'Sync All',\n syncButton: 'Sync',\n syncTriggered: 'Sync triggered',\n providerStatusError: 'Error',\n noProvidersConfigured: 'No providers configured.',\n tabAssets: 'Assets',\n tabMcp: 'MCP',\n tabAdmin: 'Admin',\n },\n },\n translations: {\n 'pt-BR': () => import('./locales/pt-BR'),\n 'es': () => import('./locales/es'),\n },\n});\n\n// Exported for manual registration in legacy apps (__experimentalTranslations.resources)\nexport const devAiHubTranslationResource = createTranslationResource({\n ref: devAiHubTranslationRef,\n translations: {\n 'pt-BR': () => import('./locales/pt-BR'),\n 'es': () => import('./locales/es'),\n },\n});"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@julianpedro/plugin-dev-ai-hub",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "Frontend plugin for Dev AI Hub",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -47,7 +47,7 @@
47
47
  "tsc": "tsc --noEmit"
48
48
  },
49
49
  "dependencies": {
50
- "@julianpedro/plugin-dev-ai-hub-common": "^0.3.0",
50
+ "@julianpedro/plugin-dev-ai-hub-common": "^0.4.0",
51
51
  "@mui/icons-material": "^5.15.0",
52
52
  "@mui/material": "^5.15.0",
53
53
  "react-markdown": "^9.0.0",
@@ -71,13 +71,23 @@
71
71
  "react-router-dom": "^6.0.0"
72
72
  },
73
73
  "peerDependencies": {
74
- "@backstage/core-components": ">=1.40.0",
75
- "@backstage/core-plugin-api": ">=1.40.0",
76
- "@backstage/frontend-plugin-api": ">=1.40.0",
74
+ "@backstage/core-components": ">=0.18.0",
75
+ "@backstage/core-plugin-api": ">=1.12.0",
76
+ "@backstage/frontend-plugin-api": ">=0.14.0",
77
+ "@backstage/plugin-app-react": ">=0.2.0",
78
+ "@backstage/plugin-permission-react": ">=0.4.40",
77
79
  "react": "^18.0.0",
78
80
  "react-dom": "^18.0.0",
79
81
  "react-router-dom": "^6.0.0"
80
82
  },
83
+ "peerDependenciesMeta": {
84
+ "@backstage/frontend-plugin-api": {
85
+ "optional": true
86
+ },
87
+ "@backstage/plugin-app-react": {
88
+ "optional": true
89
+ }
90
+ },
81
91
  "typesVersions": {
82
92
  "*": {
83
93
  "package.json": [