@burdenoff/microfe-vibecontrols 2026.528.1 → 2026.528.3

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 (33) hide show
  1. package/README.md +1 -0
  2. package/dist/components/audit/AuditLogDetail.js.map +1 -1
  3. package/dist/components/audit/AuditLogTable.js.map +1 -1
  4. package/dist/components/security/SecurityScanList.js +308 -0
  5. package/dist/components/security/SecurityScanList.js.map +1 -0
  6. package/dist/components/security/SecurityTabPanel.js +22 -18
  7. package/dist/components/security/SecurityTabPanel.js.map +1 -1
  8. package/dist/components/security/agentClient.js +78 -0
  9. package/dist/components/security/agentClient.js.map +1 -0
  10. package/dist/components/security/hooks.js +33 -0
  11. package/dist/components/security/hooks.js.map +1 -0
  12. package/dist/components/security/index.js +3 -0
  13. package/dist/components/settings/WorkspaceDefaultsSection.js.map +1 -1
  14. package/dist/components/shared/ConfirmDialog.js.map +1 -1
  15. package/dist/components/shared/EmptyState.js.map +1 -1
  16. package/dist/components/targets/TargetCard.js +82 -74
  17. package/dist/components/targets/TargetCard.js.map +1 -1
  18. package/dist/components/tunnels/TunnelCreateWizard.js.map +1 -1
  19. package/dist/generated/wspace-operations.js +1 -0
  20. package/dist/generated/wspace-operations.js.map +1 -1
  21. package/dist/generated/wspace-types.js.map +1 -1
  22. package/dist/pages/OverviewPage.js.map +1 -1
  23. package/dist/pages/SessionDetailsPage.js +10 -1
  24. package/dist/pages/SessionDetailsPage.js.map +1 -1
  25. package/dist/pages/SessionsPage.js.map +1 -1
  26. package/dist/pages/TargetsPage.js +274 -259
  27. package/dist/pages/TargetsPage.js.map +1 -1
  28. package/dist/pages/VibeAuditPage.js.map +1 -1
  29. package/dist/pages/VibeDeckPage.js.map +1 -1
  30. package/dist/pages/VibeDetailsPage.js +570 -567
  31. package/dist/pages/VibeDetailsPage.js.map +1 -1
  32. package/dist/pages/tunnels/ProvidersTab.js.map +1 -1
  33. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ProvidersTab.js","names":[],"sources":["../../../src/pages/tunnels/ProvidersTab.tsx"],"sourcesContent":["import { PageHeader } from '@/components/shared/PageHeader';\nimport { LoadingState } from '@/components/shared/LoadingState';\nimport { ErrorState } from '@/components/shared/ErrorState';\nimport { EmptyState } from '@/components/shared/EmptyState';\nimport { useListTunnelProvidersQuery } from '@/generated/wspace-operations';\nimport { useTr } from '../../shared/hooks/useTr';\n\nexport function ProvidersTab() {\n const tr = useTr();\n const { data, loading, error, refetch } = useListTunnelProvidersQuery({\n fetchPolicy: 'cache-and-network',\n });\n\n // Show VibeTunnels first (preferred default), then Cloudflare, then any\n // future providers alphabetically. This matches the ordering used in the\n // tunnels list filter and the create wizard's provider selector.\n const providers = [...(data?.tunnelProviders ?? [])].sort(\n (a: { key: string }, b: { key: string }) => {\n const rank = (key: string) => (key === 'VIBETUNNELS' ? 0 : key === 'CLOUDFLARE' ? 1 : 2);\n const diff = rank(a.key) - rank(b.key);\n if (diff !== 0) return diff;\n return a.key.localeCompare(b.key);\n }\n );\n\n return (\n <div className=\"p-6 max-w-7xl mx-auto\">\n <PageHeader\n title={tr('vibecontrols.tunnels.providers.title', 'Providers')}\n description={tr(\n 'vibecontrols.tunnels.providers.description',\n 'Tunnel providers registered for this workspace with their capabilities.'\n )}\n />\n\n {loading && !data && <LoadingState message=\"Loading providers\" />}\n {error && (\n <ErrorState\n title=\"Failed to load providers\"\n message={error.message}\n onRetry={() => refetch()}\n />\n )}\n\n {data && providers.length === 0 && (\n <EmptyState\n title={tr('vibecontrols.tunnels.providers.emptyTitle', 'No providers registered')}\n description={tr(\n 'vibecontrols.tunnels.providers.emptyDescription',\n 'Contact your workspace admin to enable VibeTunnels or Cloudflare providers.'\n )}\n />\n )}\n\n {data && providers.length > 0 && (\n <div className=\"grid gap-4 md:grid-cols-2\">\n {providers.map((provider: any) => {\n const caps = provider.capabilities;\n return (\n <div\n key={provider.id}\n className={`rounded-lg border p-4 ${\n provider.isEnabled\n ? 'border-border-default bg-bg-surface'\n : 'border-border-subtle bg-bg-sunken opacity-60'\n }`}\n >\n <div className=\"flex items-start justify-between gap-3 mb-3\">\n <div>\n <h3 className=\"text-lg font-semibold text-text-primary\">\n {provider.displayName}\n </h3>\n <p className=\"text-xs text-text-muted\">{provider.key}</p>\n </div>\n <span\n className={`rounded-full px-2 py-0.5 text-xs ${\n provider.isEnabled\n ? 'bg-status-success-bg text-status-success-fg'\n : 'bg-bg-sunken text-text-muted'\n }`}\n >\n {provider.isEnabled ? 'Enabled' : 'Disabled'}\n </span>\n </div>\n {provider.description && (\n <p className=\"text-sm text-text-secondary mb-3\">{provider.description}</p>\n )}\n <dl className=\"grid grid-cols-2 gap-1 text-xs\">\n <Capability label=\"HTTP\" value={caps.supportsHttp} />\n <Capability label=\"HTTPS\" value={caps.supportsHttps} />\n <Capability label=\"TCP\" value={caps.supportsTcp} />\n <Capability label=\"Custom domains\" value={caps.supportsCustomDomains} />\n <Capability label=\"Managed subdomains\" value={caps.supportsManagedSubdomains} />\n <Capability label=\"Live logs\" value={caps.supportsLiveLogs} />\n <Capability label=\"Usage metrics\" value={caps.supportsUsageMetrics} />\n <Capability label=\"Credential rotation\" value={caps.supportsRotateCredentials} />\n </dl>\n </div>\n );\n })}\n </div>\n )}\n </div>\n );\n}\n\nfunction Capability({ label, value }: { label: string; value: boolean }) {\n return (\n <div className=\"flex items-center gap-2\">\n <span\n className={`inline-block size-2 rounded-full ${\n value ? 'bg-status-success-bg' : 'bg-border-default'\n }`}\n />\n <dt className=\"text-text-secondary\">{label}</dt>\n </div>\n );\n}\n"],"mappings":";;;;;;;;AAOA,SAAgB,IAAe;CAC7B,IAAM,IAAK,GAAO,EACZ,EAAE,SAAM,YAAS,UAAO,eAAY,EAA4B,EACpE,aAAa,qBACd,CAAC,EAKI,IAAY,CAAC,GAAI,GAAM,mBAAmB,EAAE,CAAE,CAAC,MAClD,GAAoB,MAAuB;EAC1C,IAAM,KAAQ,MAAiB,MAAQ,gBAAgB,IAAI,MAAQ,eAAe,IAAI,GAChF,IAAO,EAAK,EAAE,IAAI,GAAG,EAAK,EAAE,IAAI;AAEtC,SADI,MAAS,IACN,EAAE,IAAI,cAAc,EAAE,IAAI,GADV;GAG1B;AAED,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf;GACE,kBAAC,GAAD;IACE,OAAO,EAAG,wCAAwC,YAAY;IAC9D,aAAa,EACX,8CACA,0EACD;IACD,CAAA;GAED,KAAW,CAAC,KAAQ,kBAAC,GAAD,EAAc,SAAQ,qBAAsB,CAAA;GAChE,KACC,kBAAC,GAAD;IACE,OAAM;IACN,SAAS,EAAM;IACf,eAAe,GAAS;IACxB,CAAA;GAGH,KAAQ,EAAU,WAAW,KAC5B,kBAAC,GAAD;IACE,OAAO,EAAG,6CAA6C,0BAA0B;IACjF,aAAa,EACX,mDACA,8EACD;IACD,CAAA;GAGH,KAAQ,EAAU,SAAS,KAC5B,kBAAC,OAAD;IAAK,WAAU;cACZ,EAAU,KAAK,MAAkB;KAChC,IAAM,IAAO,EAAS;AACtB,YACE,kBAAC,OAAD;MAEE,WAAW,yBACT,EAAS,YACL,wCACA;gBALR;OAQE,kBAAC,OAAD;QAAK,WAAU;kBAAf,CACE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,MAAD;SAAI,WAAU;mBACX,EAAS;SACP,CAAA,EACL,kBAAC,KAAD;SAAG,WAAU;mBAA2B,EAAS;SAAQ,CAAA,CACrD,EAAA,CAAA,EACN,kBAAC,QAAD;SACE,WAAW,oCACT,EAAS,YACL,gDACA;mBAGL,EAAS,YAAY,YAAY;SAC7B,CAAA,CACH;;OACL,EAAS,eACR,kBAAC,KAAD;QAAG,WAAU;kBAAoC,EAAS;QAAgB,CAAA;OAE5E,kBAAC,MAAD;QAAI,WAAU;kBAAd;SACE,kBAAC,GAAD;UAAY,OAAM;UAAO,OAAO,EAAK;UAAgB,CAAA;SACrD,kBAAC,GAAD;UAAY,OAAM;UAAQ,OAAO,EAAK;UAAiB,CAAA;SACvD,kBAAC,GAAD;UAAY,OAAM;UAAM,OAAO,EAAK;UAAe,CAAA;SACnD,kBAAC,GAAD;UAAY,OAAM;UAAiB,OAAO,EAAK;UAAyB,CAAA;SACxE,kBAAC,GAAD;UAAY,OAAM;UAAqB,OAAO,EAAK;UAA6B,CAAA;SAChF,kBAAC,GAAD;UAAY,OAAM;UAAY,OAAO,EAAK;UAAoB,CAAA;SAC9D,kBAAC,GAAD;UAAY,OAAM;UAAgB,OAAO,EAAK;UAAwB,CAAA;SACtE,kBAAC,GAAD;UAAY,OAAM;UAAsB,OAAO,EAAK;UAA6B,CAAA;SAC9E;;OACD;QArCC,EAAS,GAqCV;MAER;IACE,CAAA;GAEF;;;AAIV,SAAS,EAAW,EAAE,UAAO,YAA4C;AACvE,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf,CACE,kBAAC,QAAD,EACE,WAAW,oCACT,IAAQ,yBAAyB,uBAEnC,CAAA,EACF,kBAAC,MAAD;GAAI,WAAU;aAAuB;GAAW,CAAA,CAC5C"}
1
+ {"version":3,"file":"ProvidersTab.js","names":[],"sources":["../../../src/pages/tunnels/ProvidersTab.tsx"],"sourcesContent":["import { PageHeader } from '@/components/shared/PageHeader';\nimport { LoadingState } from '@/components/shared/LoadingState';\nimport { ErrorState } from '@/components/shared/ErrorState';\nimport { EmptyState } from '@/components/shared/EmptyState';\nimport { useListTunnelProvidersQuery } from '@/generated/wspace-operations';\nimport { useTr } from '../../shared/hooks/useTr';\n\nexport function ProvidersTab() {\n const tr = useTr();\n const { data, loading, error, refetch } = useListTunnelProvidersQuery({\n fetchPolicy: 'cache-and-network',\n });\n\n // Show VibeTunnels first (preferred default), then Cloudflare, then any\n // future providers alphabetically. This matches the ordering used in the\n // tunnels list filter and the create wizard's provider selector.\n const providers = [...(data?.tunnelProviders ?? [])].sort(\n (a: { key: string }, b: { key: string }) => {\n const rank = (key: string) => (key === 'VIBETUNNELS' ? 0 : key === 'CLOUDFLARE' ? 1 : 2);\n const diff = rank(a.key) - rank(b.key);\n if (diff !== 0) return diff;\n return a.key.localeCompare(b.key);\n }\n );\n\n return (\n <div className=\"p-6 max-w-7xl mx-auto\">\n <PageHeader\n title={tr('vibecontrols.tunnels.providers.title', 'Providers')}\n description={tr(\n 'vibecontrols.tunnels.providers.description',\n 'Tunnel providers registered for this workspace with their capabilities.'\n )}\n />\n\n {loading && !data && <LoadingState message=\"Loading providers\" />}\n {error && (\n <ErrorState\n title=\"Failed to load providers\"\n message={error.message}\n onRetry={() => refetch()}\n />\n )}\n\n {data && providers.length === 0 && (\n <EmptyState\n title={tr('vibecontrols.tunnels.providers.emptyTitle', 'No providers registered')}\n description={tr(\n 'vibecontrols.tunnels.providers.emptyDescription',\n 'Contact your workspace admin to enable VibeTunnels or Cloudflare providers.'\n )}\n />\n )}\n\n {data && providers.length > 0 && (\n <div className=\"grid gap-4 md:grid-cols-2\">\n {providers.map((provider: any) => {\n const caps = provider.capabilities;\n return (\n <div\n key={provider.id}\n className={`rounded-lg border p-4 ${\n provider.isEnabled\n ? 'border-border-default bg-bg-surface'\n : 'border-border-subtle bg-bg-sunken opacity-60'\n }`}\n >\n <div className=\"flex items-start justify-between gap-3 mb-3\">\n <div>\n <h3 className=\"text-lg font-semibold text-text-primary\">\n {provider.displayName}\n </h3>\n <p className=\"text-xs text-text-muted\">{provider.key}</p>\n </div>\n <span\n className={`rounded-full px-2 py-0.5 text-xs ${\n provider.isEnabled\n ? 'bg-status-success-bg text-status-success-fg'\n : 'bg-bg-sunken text-text-muted'\n }`}\n >\n {provider.isEnabled ? 'Enabled' : 'Disabled'}\n </span>\n </div>\n {provider.description && (\n <p className=\"text-sm text-text-secondary mb-3\">{provider.description}</p>\n )}\n <dl className=\"grid grid-cols-2 gap-1 text-xs\">\n <Capability label=\"HTTP\" value={caps.supportsHttp} />\n <Capability label=\"HTTPS\" value={caps.supportsHttps} />\n <Capability label=\"TCP\" value={caps.supportsTcp} />\n <Capability label=\"Custom domains\" value={caps.supportsCustomDomains} />\n <Capability label=\"Managed subdomains\" value={caps.supportsManagedSubdomains} />\n <Capability label=\"Live logs\" value={caps.supportsLiveLogs} />\n <Capability label=\"Usage metrics\" value={caps.supportsUsageMetrics} />\n <Capability label=\"Credential rotation\" value={caps.supportsRotateCredentials} />\n </dl>\n </div>\n );\n })}\n </div>\n )}\n </div>\n );\n}\n\nfunction Capability({ label, value }: { label: string; value: boolean }) {\n return (\n <div className=\"flex items-center gap-2\">\n <span\n className={`inline-block size-2 rounded-full ${\n value ? 'bg-status-success-bg' : 'bg-border-default'\n }`}\n />\n <dt className=\"text-text-secondary\">{label}</dt>\n </div>\n );\n}\n"],"mappings":";;;;;;;;AAOA,SAAgB,IAAe;CAC7B,IAAM,IAAK,GAAO,EACZ,EAAE,SAAM,YAAS,UAAO,eAAY,EAA4B,EACpE,aAAa,qBACd,CAAC,EAKI,IAAY,CAAC,GAAI,GAAM,mBAAmB,EAAE,CAAE,CAAC,MAClD,GAAoB,MAAuB;EAC1C,IAAM,KAAQ,MAAiB,MAAQ,gBAAgB,IAAI,MAAQ,eAAe,IAAI,GAChF,IAAO,EAAK,EAAE,IAAI,GAAG,EAAK,EAAE,IAAI;AAEtC,SADI,MAAS,IACN,EAAE,IAAI,cAAc,EAAE,IAAI,GADV;GAG1B;AAED,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf;GACE,kBAAC,GAAD;IACE,OAAO,EAAG,wCAAwC,YAAY;IAC9D,aAAa,EACX,8CACA,0EACD;IACD,CAAA;GAED,KAAW,CAAC,KAAQ,kBAAC,GAAD,EAAc,SAAQ,qBAAsB,CAAA;GAChE,KACC,kBAAC,GAAD;IACE,OAAM;IACN,SAAS,EAAM;IACf,eAAe,GAAS;IACxB,CAAA;GAGH,KAAQ,EAAU,WAAW,KAC5B,kBAAC,GAAD;IACE,OAAO,EAAG,6CAA6C,0BAA0B;IACjF,aAAa,EACX,mDACA,8EACD;IACD,CAAA;GAGH,KAAQ,EAAU,SAAS,KAC1B,kBAAC,OAAD;IAAK,WAAU;cACZ,EAAU,KAAK,MAAkB;KAChC,IAAM,IAAO,EAAS;AACtB,YACE,kBAAC,OAAD;MAEE,WAAW,yBACT,EAAS,YACL,wCACA;gBALR;OAQE,kBAAC,OAAD;QAAK,WAAU;kBAAf,CACE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,MAAD;SAAI,WAAU;mBACX,EAAS;SACP,CAAA,EACL,kBAAC,KAAD;SAAG,WAAU;mBAA2B,EAAS;SAAQ,CAAA,CACrD,EAAA,CAAA,EACN,kBAAC,QAAD;SACE,WAAW,oCACT,EAAS,YACL,gDACA;mBAGL,EAAS,YAAY,YAAY;SAC7B,CAAA,CACH;;OACL,EAAS,eACR,kBAAC,KAAD;QAAG,WAAU;kBAAoC,EAAS;QAAgB,CAAA;OAE5E,kBAAC,MAAD;QAAI,WAAU;kBAAd;SACE,kBAAC,GAAD;UAAY,OAAM;UAAO,OAAO,EAAK;UAAgB,CAAA;SACrD,kBAAC,GAAD;UAAY,OAAM;UAAQ,OAAO,EAAK;UAAiB,CAAA;SACvD,kBAAC,GAAD;UAAY,OAAM;UAAM,OAAO,EAAK;UAAe,CAAA;SACnD,kBAAC,GAAD;UAAY,OAAM;UAAiB,OAAO,EAAK;UAAyB,CAAA;SACxE,kBAAC,GAAD;UAAY,OAAM;UAAqB,OAAO,EAAK;UAA6B,CAAA;SAChF,kBAAC,GAAD;UAAY,OAAM;UAAY,OAAO,EAAK;UAAoB,CAAA;SAC9D,kBAAC,GAAD;UAAY,OAAM;UAAgB,OAAO,EAAK;UAAwB,CAAA;SACtE,kBAAC,GAAD;UAAY,OAAM;UAAsB,OAAO,EAAK;UAA6B,CAAA;SAC9E;;OACD;QArCC,EAAS,GAqCV;MAER;IACE,CAAA;GAEJ;;;AAIV,SAAS,EAAW,EAAE,UAAO,YAA4C;AACvE,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf,CACE,kBAAC,QAAD,EACE,WAAW,oCACT,IAAQ,yBAAyB,uBAEnC,CAAA,EACF,kBAAC,MAAD;GAAI,WAAU;aAAuB;GAAW,CAAA,CAC5C"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@burdenoff/microfe-vibecontrols",
3
- "version": "2026.528.1",
3
+ "version": "2026.528.3",
4
4
  "description": "VibeControls microfrontend for Burdenoff products",
5
5
  "type": "module",
6
6
  "files": [