@burdenoff/microfe-vibecontrols 2026.1008.2 → 2026.1010.2

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 (1983) hide show
  1. package/dist/VibeControlsRoot.js +0 -2
  2. package/dist/VibeControlsRoutes.js +0 -2
  3. package/dist/components/actions/ActionCard.js +0 -2
  4. package/dist/components/actions/ActionForm.js +0 -2
  5. package/dist/components/actions/ActionSchedulesList.js +0 -2
  6. package/dist/components/actions/ActionTypeBadge.js +0 -2
  7. package/dist/components/actions/ActionWebhookEndpoint.js +0 -2
  8. package/dist/components/actions/ExecutionHistory.js +0 -2
  9. package/dist/components/actions/RemoteExecutionEnableNotice.js +0 -2
  10. package/dist/components/agent-manager/AgentManagerAdminBar.js +0 -2
  11. package/dist/components/agent-manager/AgentManagerBookmarksDrawer.js +0 -2
  12. package/dist/components/agent-manager/AgentManagerBulkActions.js +0 -2
  13. package/dist/components/agent-manager/AgentManagerCenter.js +0 -2
  14. package/dist/components/agent-manager/AgentManagerChatPane.js +0 -2
  15. package/dist/components/agent-manager/AgentManagerDetailPanel.js +0 -2
  16. package/dist/components/agent-manager/AgentManagerInputArea.js +0 -2
  17. package/dist/components/agent-manager/AgentManagerLayout.js +0 -2
  18. package/dist/components/agent-manager/AgentManagerMessageItem.js +0 -2
  19. package/dist/components/agent-manager/AgentManagerMessageList.js +0 -2
  20. package/dist/components/agent-manager/AgentManagerSessionItem.js +0 -2
  21. package/dist/components/agent-manager/AgentManagerSessionList.js +0 -2
  22. package/dist/components/agent-manager/AgentManagerSidebar.js +0 -2
  23. package/dist/components/agent-manager/AgentManagerStreamingIndicator.js +0 -2
  24. package/dist/components/agent-manager/AgentManagerTab.js +0 -2
  25. package/dist/components/agent-manager/AgentManagerTabBar.js +0 -2
  26. package/dist/components/agent-manager/BridleConfigPanel.js +0 -2
  27. package/dist/components/agent-manager/ChatInsertPicker.js +0 -2
  28. package/dist/components/agent-manager/FilePickerModal.js +0 -2
  29. package/dist/components/agent-manager/PluginInstallModal.js +0 -2
  30. package/dist/components/agent-manager/ProfilesPanel.js +0 -2
  31. package/dist/components/agent-manager/controls/AutonomySelector.js +0 -2
  32. package/dist/components/agent-manager/controls/ContextLevelToggle.js +0 -2
  33. package/dist/components/agent-manager/controls/FileAttachButton.js +0 -2
  34. package/dist/components/agent-manager/controls/McpServerSelector.js +0 -2
  35. package/dist/components/agent-manager/controls/ModelSelector.js +0 -2
  36. package/dist/components/agent-manager/controls/SdkSelector.js +0 -2
  37. package/dist/components/agent-manager/controls/VoiceToggle.js +0 -2
  38. package/dist/components/agent-manager/controls/createDropHandlers.js +0 -2
  39. package/dist/components/agent-manager/detail/SessionConfigPanel.js +0 -2
  40. package/dist/components/agent-manager/detail/SessionLogsPanel.js +0 -2
  41. package/dist/components/agent-manager/detail/SessionStatsPanel.js +0 -2
  42. package/dist/components/agent-manager/detail/SessionToolsPanel.js +0 -2
  43. package/dist/components/agent-manager/dialogs/ExportSessionDialog.js +0 -2
  44. package/dist/components/agent-manager/dialogs/NewSessionDialog.js +0 -2
  45. package/dist/components/agent-manager/dialogs/RenameSessionDialog.js +0 -2
  46. package/dist/components/agent-manager/dialogs/SessionSearchDialog.js +0 -2
  47. package/dist/components/agent-manager/modelDefaults.js +0 -2
  48. package/dist/components/agents/AgentCard.js +0 -2
  49. package/dist/components/agents/AgentConnectionRecovery.js +0 -2
  50. package/dist/components/agents/AgentForm.js +0 -2
  51. package/dist/components/agents/AgentList.js +0 -2
  52. package/dist/components/agents/AgentMaintenanceTab.js +0 -2
  53. package/dist/components/agents/AgentStatusBadge.js +0 -2
  54. package/dist/components/agents/AgentStorageConfig.js +0 -2
  55. package/dist/components/agents/AgentVisibilityCard.js +0 -2
  56. package/dist/components/agents/ConfigureAgentDialog.js +0 -2
  57. package/dist/components/agents/ConnectionLogPanel.js +0 -2
  58. package/dist/components/agents/CreateSessionDialog.js +0 -2
  59. package/dist/components/agents/GatewayAuthCard.js +0 -2
  60. package/dist/components/agents/OpenInBrowserEditorButton.js +0 -2
  61. package/dist/components/agents/OpenInEditorMenu.js +0 -2
  62. package/dist/components/agents/PluginUIPanel.js +0 -2
  63. package/dist/components/agents/RemoteTaskPermissionsCard.js +0 -2
  64. package/dist/components/agents/VibeOpenInEditorMenu.js +0 -2
  65. package/dist/components/agents/agentStatus.js +0 -2
  66. package/dist/components/agents/backup/AgentBackupTab.js +0 -2
  67. package/dist/components/agents/idePresets.js +0 -2
  68. package/dist/components/ai/AIContextsTab.js +0 -2
  69. package/dist/components/ai/AIKeysTab.js +0 -2
  70. package/dist/components/ai/AIModeToggle.js +0 -2
  71. package/dist/components/ai/AIOverviewTab.js +0 -2
  72. package/dist/components/ai/AIPlanPanel.js +0 -2
  73. package/dist/components/ai/AIPlaygroundTab.js +0 -2
  74. package/dist/components/ai/AIPromptsTab.js +0 -2
  75. package/dist/components/ai/AIProviderCredentialsCard.js +0 -2
  76. package/dist/components/ai/AIQueueTab.js +0 -2
  77. package/dist/components/ai/AISessionsTab.js +0 -2
  78. package/dist/components/ai/AIStatsTab.js +0 -2
  79. package/dist/components/ai/AITasksTab.js +0 -2
  80. package/dist/components/ai/AITemplatesTab.js +0 -2
  81. package/dist/components/ai/AiSectionTabs.js +0 -2
  82. package/dist/components/ai/BridleTab.js +0 -2
  83. package/dist/components/ai/ClaudeCredentialsCard.js +0 -2
  84. package/dist/components/ai/InstructionFilesManager.js +0 -2
  85. package/dist/components/ai/PluginHarnessPicker.js +0 -2
  86. package/dist/components/ai/aiProviderCredentials.js +0 -2
  87. package/dist/components/aliases/AliasManager.js +0 -2
  88. package/dist/components/aliases/aliasReservedNames.js +0 -2
  89. package/dist/components/analytics/AnalyticsBreakdownChart.js +0 -2
  90. package/dist/components/analytics/AnalyticsBreakdownTable.js +0 -2
  91. package/dist/components/analytics/AnalyticsEntityTabs.js +0 -2
  92. package/dist/components/analytics/AnalyticsFilterBar.js +0 -2
  93. package/dist/components/analytics/AnalyticsKpiGrid.js +0 -2
  94. package/dist/components/analytics/AnalyticsTimeSeriesChart.js +0 -2
  95. package/dist/components/analytics/SandboxAnalyticsSection.js +0 -2
  96. package/dist/components/analytics/types.js +0 -2
  97. package/dist/components/assistant/AIAssistantPanel.js +0 -2
  98. package/dist/components/assistant/AiCreditsMeter.js +0 -2
  99. package/dist/components/assistant/ProductMarkdown.js +0 -2
  100. package/dist/components/assistant/assistantProduct.js +0 -2
  101. package/dist/components/assistant/recordAdapters.js +0 -2
  102. package/dist/components/audit/AuditExportButton.js +0 -2
  103. package/dist/components/audit/AuditLogDetail.js +0 -2
  104. package/dist/components/audit/AuditLogFilters.js +0 -2
  105. package/dist/components/audit/AuditLogStats.js +0 -2
  106. package/dist/components/audit/AuditLogTable.js +0 -2
  107. package/dist/components/catalog/CatalogCard.js +0 -2
  108. package/dist/components/catalog/CatalogForm.js +0 -2
  109. package/dist/components/common/ActionAgentTargetNotice.js +0 -2
  110. package/dist/components/common/CommandEditor.js +0 -2
  111. package/dist/components/common/actionAgentTarget.js +0 -2
  112. package/dist/components/common/commandHighlight.js +0 -2
  113. package/dist/components/components/ComponentHealthCell.js +0 -2
  114. package/dist/components/components/ComponentTierBadge.js +0 -2
  115. package/dist/components/components/ComponentsTable.js +0 -2
  116. package/dist/components/docs/DocsCompileStatus.js +0 -2
  117. package/dist/components/docs/DocsEditPanel.js +0 -2
  118. package/dist/components/docs/DocsEmptyState.js +0 -2
  119. package/dist/components/docs/DocsFullScreenViewer.js +0 -2
  120. package/dist/components/docs/DocsPageEditor.js +0 -2
  121. package/dist/components/docs/DocsPageTree.js +0 -2
  122. package/dist/components/docs/DocsPreviewPanel.js +0 -2
  123. package/dist/components/docs/DocsRevisionHistory.js +0 -2
  124. package/dist/components/docs/DocsSettingsPanel.js +0 -2
  125. package/dist/components/docs/DocsTabPanel.js +0 -2
  126. package/dist/components/docs/previewHtml.js +0 -2
  127. package/dist/components/docs/types.js +0 -2
  128. package/dist/components/gitops/CIDurationChart.js +0 -2
  129. package/dist/components/gitops/CIFailedRuns.js +0 -2
  130. package/dist/components/gitops/CIPipelineRunsTable.js +0 -2
  131. package/dist/components/gitops/CISuccessRateChart.js +0 -2
  132. package/dist/components/gitops/CITab.js +0 -2
  133. package/dist/components/gitops/CIWorkflowList.js +0 -2
  134. package/dist/components/gitops/GitOpsProviderPicker.js +0 -2
  135. package/dist/components/gitops/GitOpsSetup.js +0 -2
  136. package/dist/components/gitops/GitOpsSkeleton.js +0 -2
  137. package/dist/components/gitops/GitOpsStatusBadge.js +0 -2
  138. package/dist/components/gitops/ProviderIcon.js +0 -2
  139. package/dist/components/gitops/RepoActivityCard.js +0 -2
  140. package/dist/components/gitops/RepoIssuesCard.js +0 -2
  141. package/dist/components/gitops/RepoLanguagesCard.js +0 -2
  142. package/dist/components/gitops/RepoOverviewCard.js +0 -2
  143. package/dist/components/gitops/RepoPullRequestsCard.js +0 -2
  144. package/dist/components/gitops/RepoSecurityCard.js +0 -2
  145. package/dist/components/gitops/RepoStatsTab.js +0 -2
  146. package/dist/components/gitops/VibeGitOpsTab.js +0 -2
  147. package/dist/components/gitops/types.js +0 -2
  148. package/dist/components/graph/ConnectionPermissionsDialog.js +0 -2
  149. package/dist/components/graph/MeshAgentNode.js +0 -2
  150. package/dist/components/graph/MeshDeployWizard.js +0 -2
  151. package/dist/components/graph/MeshGraphView.js +0 -2
  152. package/dist/components/graph/MeshNodeActions.js +0 -2
  153. package/dist/components/graph/MeshRequestPanel.js +0 -2
  154. package/dist/components/graph/meshTypes.js +0 -2
  155. package/dist/components/graph/nodeIcons.js +0 -2
  156. package/dist/components/idp-components/ComponentCard.js +0 -2
  157. package/dist/components/idp-components/ComponentForm.js +0 -2
  158. package/dist/components/idp-components/DependencyGraphTab.js +0 -2
  159. package/dist/components/logs/LogViewer.js +0 -2
  160. package/dist/components/notes/NoteCard.js +0 -2
  161. package/dist/components/notes/NoteEditor.js +0 -2
  162. package/dist/components/notes/NoteList.js +0 -2
  163. package/dist/components/notes/NotesTabPanel.js +0 -2
  164. package/dist/components/overview/FleetActivityAreaChart.js +0 -2
  165. package/dist/components/overview/FleetActivityChart.js +0 -2
  166. package/dist/components/overview/FleetHealthCard.js +0 -2
  167. package/dist/components/overview/QuickActionsCard.js +0 -2
  168. package/dist/components/overview/useFleetAnalytics.js +0 -2
  169. package/dist/components/plugins/AddTabDialog.js +0 -2
  170. package/dist/components/plugins/FleetRolloutDialog.js +0 -2
  171. package/dist/components/plugins/PluginIframeMount.js +0 -2
  172. package/dist/components/plugins/useFleetPluginMatrix.js +0 -2
  173. package/dist/components/scorecard/MetricTrend.js +0 -2
  174. package/dist/components/scorecard/ScorecardEmptyState.js +0 -2
  175. package/dist/components/scorecard/ScorecardPanel.js +0 -2
  176. package/dist/components/scorecard/ScorecardsOverviewPanel.js +0 -2
  177. package/dist/components/scorecard/scorecardConstants.js +0 -2
  178. package/dist/components/security/SecurityRunButton.js +0 -2
  179. package/dist/components/security/SecurityScanList.js +0 -2
  180. package/dist/components/security/SecurityTabPanel.js +0 -2
  181. package/dist/components/security/agentClient.js +0 -2
  182. package/dist/components/security/hooks.js +0 -2
  183. package/dist/components/security/types.js +0 -2
  184. package/dist/components/sessions/CollaboratorsList.js +0 -2
  185. package/dist/components/sessions/ControlStatusBar.js +0 -2
  186. package/dist/components/sessions/EntityInfoPopover.js +0 -2
  187. package/dist/components/sessions/SessionCard.js +0 -2
  188. package/dist/components/sessions/SessionGroup.js +0 -2
  189. package/dist/components/sessions/SessionInfoPanel.js +0 -2
  190. package/dist/components/sessions/SessionList.js +0 -2
  191. package/dist/components/sessions/SessionPublicLinkPanel.js +0 -2
  192. package/dist/components/sessions/SessionShareDialog.js +0 -2
  193. package/dist/components/sessions/SessionStatusBadge.js +0 -2
  194. package/dist/components/sessions/SessionWorkbenchDrawer.js +0 -2
  195. package/dist/components/sessions/SessionsCommandPalette.js +0 -2
  196. package/dist/components/sessions/SharedTerminalPanel.js +0 -2
  197. package/dist/components/sessions/ShortcutCheatsheet.js +0 -2
  198. package/dist/components/sessions/TerminalIframe.js +0 -2
  199. package/dist/components/sessions/TerminalPanel.js +0 -2
  200. package/dist/components/sessions/groupSessions.js +0 -2
  201. package/dist/components/sessions/sessionShortcuts.js +0 -2
  202. package/dist/components/settings/AdvancedSection.js +0 -2
  203. package/dist/components/settings/IdePreferencesSection.js +0 -2
  204. package/dist/components/settings/NotificationsSection.js +0 -2
  205. package/dist/components/settings/SettingsForm.js +0 -2
  206. package/dist/components/settings/WorkspaceDefaultsSection.js +0 -2
  207. package/dist/components/shared/ActionMenu.js +0 -2
  208. package/dist/components/shared/AgentEventsConnector.js +0 -2
  209. package/dist/components/shared/AgentSelector.js +0 -2
  210. package/dist/components/shared/AgentSetupBanner.js +0 -2
  211. package/dist/components/shared/Card.js +0 -2
  212. package/dist/components/shared/ConfirmDialog.js +0 -2
  213. package/dist/components/shared/EmptyState.js +0 -2
  214. package/dist/components/shared/EnableRemoteTaskDialog.js +0 -2
  215. package/dist/components/shared/EntityTagPicker.js +0 -2
  216. package/dist/components/shared/EntityVibeLinkControl.js +0 -2
  217. package/dist/components/shared/ErrorState.js +0 -2
  218. package/dist/components/shared/FilterDropdown.js +0 -2
  219. package/dist/components/shared/GetHelpButton.js +0 -2
  220. package/dist/components/shared/InstallTabs.js +0 -2
  221. package/dist/components/shared/LinkToVibePanel.js +0 -2
  222. package/dist/components/shared/LoadingState.js +0 -2
  223. package/dist/components/shared/MotionTabPanel.js +0 -2
  224. package/dist/components/shared/NotificationToast.js +0 -2
  225. package/dist/components/shared/PageHeader.js +0 -2
  226. package/dist/components/shared/PageSkeleton.js +0 -2
  227. package/dist/components/shared/PlatformIcon.js +0 -2
  228. package/dist/components/shared/PluginGate.js +0 -2
  229. package/dist/components/shared/PromptDialog.js +0 -2
  230. package/dist/components/shared/QuotaExhaustedDialog.js +0 -2
  231. package/dist/components/shared/RequireAgentReachable.js +0 -2
  232. package/dist/components/shared/SearchInput.js +0 -2
  233. package/dist/components/shared/SearchableSelect.js +0 -2
  234. package/dist/components/shared/SelectionCheckbox.js +0 -2
  235. package/dist/components/shared/SessionNotificationBanner.js +0 -2
  236. package/dist/components/shared/StatCard.js +0 -2
  237. package/dist/components/shared/StatusBadge.js +0 -2
  238. package/dist/components/shared/TagFilter.js +0 -2
  239. package/dist/components/shared/cardMotion.js +0 -2
  240. package/dist/components/shared/platformIconPaths.js +0 -2
  241. package/dist/components/sharing/EntityShareButton.js +0 -2
  242. package/dist/components/sharing/NoteShareDialog.js +0 -2
  243. package/dist/components/sharing/SharedWithMePanel.js +0 -2
  244. package/dist/components/sharing/VibeShareButton.js +0 -2
  245. package/dist/components/sharing/entityShareOps.js +0 -2
  246. package/dist/components/sharing/shareControllerTypes.js +0 -2
  247. package/dist/components/sharing/shareRegistry.js +0 -2
  248. package/dist/components/sharing/useEntityShareController.js +0 -2
  249. package/dist/components/sharing/useNoteShareController.js +0 -2
  250. package/dist/components/sharing/useVibeShareController.js +0 -2
  251. package/dist/components/targets/TargetCard.js +0 -2
  252. package/dist/components/templates/PublishTemplateForm.js +0 -2
  253. package/dist/components/templates/TemplateCard.js +0 -2
  254. package/dist/components/templates/TemplateVariableEditor.js +0 -2
  255. package/dist/components/templates/TemplateWizard.js +0 -2
  256. package/dist/components/tunnels/DomainVerificationBadge.js +0 -2
  257. package/dist/components/tunnels/ProviderBadge.js +0 -2
  258. package/dist/components/tunnels/TunnelCard.js +0 -2
  259. package/dist/components/tunnels/TunnelConnectionCard.js +0 -2
  260. package/dist/components/tunnels/TunnelCopyButton.js +0 -2
  261. package/dist/components/tunnels/TunnelCreateWizard.js +0 -2
  262. package/dist/components/tunnels/TunnelMetricTiles.js +0 -2
  263. package/dist/components/tunnels/TunnelPublicAccessPanel.js +0 -2
  264. package/dist/components/tunnels/TunnelSparkline.js +0 -2
  265. package/dist/components/tunnels/TunnelStatusBadge.js +0 -2
  266. package/dist/components/tunnels/tunnelEndpoints.js +0 -2
  267. package/dist/components/tunnels/tunnelMetrics.js +0 -2
  268. package/dist/components/vibe/VibeAgentEmptyState.js +0 -2
  269. package/dist/components/vibe/VibeAgentSwitcher.js +0 -2
  270. package/dist/components/vibe/VibeEnvVarsPanel.js +0 -2
  271. package/dist/components/vibe/VibeLinkedEntitiesPanel.js +0 -2
  272. package/dist/components/vibe/VibeLlmContextAdminPanel.js +0 -2
  273. package/dist/components/vibe/VibeLlmContextTabPanel.js +0 -2
  274. package/dist/components/vibecalendar/LogsDrawer.js +0 -2
  275. package/dist/components/vibecalendar/ScheduleTaskModal.js +0 -2
  276. package/dist/components/vibecalendar/VibeCalAgendaView.js +0 -2
  277. package/dist/components/vibecalendar/VibeCalDayView.js +0 -2
  278. package/dist/components/vibecalendar/VibeCalMonthView.js +0 -2
  279. package/dist/components/vibecalendar/VibeCalWeekView.js +0 -2
  280. package/dist/components/vibecalendar/VibeCalendarHeader.js +0 -2
  281. package/dist/components/vibecalendar/VibeTaskBlock.js +0 -2
  282. package/dist/components/vibecalendar/expandOccurrences.js +0 -2
  283. package/dist/components/vibecalendar/types.js +0 -2
  284. package/dist/components/vibedeck/VibeDeckButtonForm.js +0 -2
  285. package/dist/components/vibedeck/VibeDeckButtonTile.js +0 -2
  286. package/dist/components/vibedeck/VibeDeckExecutionLog.js +0 -2
  287. package/dist/components/vibedeck/VibeDeckForm.js +0 -2
  288. package/dist/components/vibedeck/VibeDeckGrid.js +0 -2
  289. package/dist/components/vibedeck/VibeDeckPublicLinkPanel.js +0 -2
  290. package/dist/components/vibedeck/VibeDeckShareDialog.js +0 -2
  291. package/dist/components/vibedeck/VibeDeckSwitcher.js +0 -2
  292. package/dist/components/vibes/DeleteVibeDialog.js +0 -2
  293. package/dist/components/vibes/VibeCard.js +0 -2
  294. package/dist/components/vibes/VibeList.js +0 -2
  295. package/dist/components/vibes/icons.js +0 -2
  296. package/dist/components/webhooks/types.js +0 -2
  297. package/dist/config/assistantUsecases.js +0 -2
  298. package/dist/config/index.js +0 -2
  299. package/dist/constants/aiTabs.js +0 -2
  300. package/dist/constants/permissions.js +0 -2
  301. package/dist/constants/pluginCatalog.js +0 -2
  302. package/dist/generated/wspace-operations.js +0 -2
  303. package/dist/generated/wspace-types.js +0 -2
  304. package/dist/hooks/useActiveAgentProfile.js +0 -2
  305. package/dist/hooks/useAgentConnectivity.js +0 -2
  306. package/dist/hooks/useAgentEvents.js +0 -2
  307. package/dist/hooks/useAgentManagerKeyboard.js +0 -2
  308. package/dist/hooks/useAgentManagerStreaming.js +0 -2
  309. package/dist/hooks/useAiCreditsQuota.js +0 -2
  310. package/dist/hooks/useCachedInitialData.js +0 -2
  311. package/dist/hooks/useDraftEntityTags.js +0 -2
  312. package/dist/hooks/useEntityTags.js +0 -2
  313. package/dist/hooks/useGitops.js +0 -2
  314. package/dist/hooks/useInitialDataLoader.js +0 -2
  315. package/dist/hooks/useOfferedAssistantMode.js +0 -2
  316. package/dist/hooks/useOpenAssistantHelp.js +0 -2
  317. package/dist/hooks/usePluginAvailability.js +0 -2
  318. package/dist/hooks/useQueryBackedTab.js +0 -2
  319. package/dist/hooks/useTenantContext.js +0 -2
  320. package/dist/hooks/useTerminalCapabilityUrl.js +0 -2
  321. package/dist/hooks/useToggleAgentBookmark.js +0 -2
  322. package/dist/hooks/useVoiceMode.js +0 -2
  323. package/dist/hooks/useWorkspaceWriteAccess.js +0 -2
  324. package/dist/lib/apolloCache.js +0 -2
  325. package/dist/lib/toast.js +0 -2
  326. package/dist/lib/vibeFeatures.js +0 -2
  327. package/dist/node_modules/@apollo/client/errors/CombinedGraphQLErrors.js +0 -2
  328. package/dist/node_modules/@apollo/client/errors/ServerError.js +0 -2
  329. package/dist/node_modules/@apollo/client/errors/ServerParseError.js +0 -2
  330. package/dist/node_modules/@apollo/client/errors/utils.js +0 -2
  331. package/dist/node_modules/@apollo/client/link/batch/batchLink.js +0 -2
  332. package/dist/node_modules/@apollo/client/link/batch/batching.js +0 -2
  333. package/dist/node_modules/@apollo/client/link/batch-http/BaseBatchHttpLink.js +0 -2
  334. package/dist/node_modules/@apollo/client/link/batch-http/batchHttpLink.js +0 -2
  335. package/dist/node_modules/@apollo/client/link/client-awareness/ClientAwarenessLink.js +0 -2
  336. package/dist/node_modules/@apollo/client/link/core/ApolloLink.js +0 -2
  337. package/dist/node_modules/@apollo/client/link/http/checkFetcher.js +0 -2
  338. package/dist/node_modules/@apollo/client/link/http/parseAndCheckHttpResponse.js +0 -2
  339. package/dist/node_modules/@apollo/client/link/http/selectHttpOptionsAndBody.js +0 -2
  340. package/dist/node_modules/@apollo/client/link/http/selectURI.js +0 -2
  341. package/dist/node_modules/@apollo/client/link/utils/createOperation.js +0 -2
  342. package/dist/node_modules/@apollo/client/link/utils/filterOperationVariables.js +0 -2
  343. package/dist/node_modules/@apollo/client/utilities/caching/sizes.js +0 -2
  344. package/dist/node_modules/@apollo/client/utilities/graphql/print.js +0 -2
  345. package/dist/node_modules/@apollo/client/utilities/internal/caches.js +0 -2
  346. package/dist/node_modules/@apollo/client/utilities/internal/checkDocument.js +0 -2
  347. package/dist/node_modules/@apollo/client/utilities/internal/compact.js +0 -2
  348. package/dist/node_modules/@apollo/client/utilities/internal/getMainDefinition.js +0 -2
  349. package/dist/node_modules/@apollo/client/utilities/internal/getMemoryInternals.js +0 -2
  350. package/dist/node_modules/@apollo/client/utilities/internal/getOperationDefinition.js +0 -2
  351. package/dist/node_modules/@apollo/client/utilities/internal/getOperationName.js +0 -2
  352. package/dist/node_modules/@apollo/client/utilities/internal/globals/global.js +0 -2
  353. package/dist/node_modules/@apollo/client/utilities/internal/globals/maybe.js +0 -2
  354. package/dist/node_modules/@apollo/client/utilities/internal/makeUniqueId.js +0 -2
  355. package/dist/node_modules/@apollo/client/utilities/internal/memoize.js +0 -2
  356. package/dist/node_modules/@apollo/client/utilities/internal/stringifyForDisplay.js +0 -2
  357. package/dist/node_modules/@apollo/client/utilities/invariant/index.js +0 -2
  358. package/dist/node_modules/@apollo/client/version.js +0 -2
  359. package/dist/node_modules/@wry/caches/lib/weak.js +0 -2
  360. package/dist/node_modules/@wry/trie/lib/index.js +0 -2
  361. package/dist/node_modules/clsx/dist/clsx.js +0 -2
  362. package/dist/node_modules/d3-array/src/ascending.js +0 -2
  363. package/dist/node_modules/d3-array/src/bisect.js +0 -2
  364. package/dist/node_modules/d3-array/src/bisector.js +0 -2
  365. package/dist/node_modules/d3-array/src/descending.js +0 -2
  366. package/dist/node_modules/d3-array/src/max.js +0 -2
  367. package/dist/node_modules/d3-array/src/min.js +0 -2
  368. package/dist/node_modules/d3-array/src/number.js +0 -2
  369. package/dist/node_modules/d3-array/src/quantile.js +0 -2
  370. package/dist/node_modules/d3-array/src/quickselect.js +0 -2
  371. package/dist/node_modules/d3-array/src/range.js +0 -2
  372. package/dist/node_modules/d3-array/src/sort.js +0 -2
  373. package/dist/node_modules/d3-array/src/ticks.js +0 -2
  374. package/dist/node_modules/d3-color/src/color.js +0 -2
  375. package/dist/node_modules/d3-color/src/define.js +0 -2
  376. package/dist/node_modules/d3-format/src/defaultLocale.js +0 -2
  377. package/dist/node_modules/d3-format/src/exponent.js +0 -2
  378. package/dist/node_modules/d3-format/src/formatDecimal.js +0 -2
  379. package/dist/node_modules/d3-format/src/formatGroup.js +0 -2
  380. package/dist/node_modules/d3-format/src/formatNumerals.js +0 -2
  381. package/dist/node_modules/d3-format/src/formatPrefixAuto.js +0 -2
  382. package/dist/node_modules/d3-format/src/formatRounded.js +0 -2
  383. package/dist/node_modules/d3-format/src/formatSpecifier.js +0 -2
  384. package/dist/node_modules/d3-format/src/formatTrim.js +0 -2
  385. package/dist/node_modules/d3-format/src/formatTypes.js +0 -2
  386. package/dist/node_modules/d3-format/src/identity.js +0 -2
  387. package/dist/node_modules/d3-format/src/locale.js +0 -2
  388. package/dist/node_modules/d3-format/src/precisionFixed.js +0 -2
  389. package/dist/node_modules/d3-format/src/precisionPrefix.js +0 -2
  390. package/dist/node_modules/d3-format/src/precisionRound.js +0 -2
  391. package/dist/node_modules/d3-interpolate/src/array.js +0 -2
  392. package/dist/node_modules/d3-interpolate/src/basis.js +0 -2
  393. package/dist/node_modules/d3-interpolate/src/basisClosed.js +0 -2
  394. package/dist/node_modules/d3-interpolate/src/color.js +0 -2
  395. package/dist/node_modules/d3-interpolate/src/constant.js +0 -2
  396. package/dist/node_modules/d3-interpolate/src/date.js +0 -2
  397. package/dist/node_modules/d3-interpolate/src/number.js +0 -2
  398. package/dist/node_modules/d3-interpolate/src/numberArray.js +0 -2
  399. package/dist/node_modules/d3-interpolate/src/object.js +0 -2
  400. package/dist/node_modules/d3-interpolate/src/piecewise.js +0 -2
  401. package/dist/node_modules/d3-interpolate/src/rgb.js +0 -2
  402. package/dist/node_modules/d3-interpolate/src/round.js +0 -2
  403. package/dist/node_modules/d3-interpolate/src/string.js +0 -2
  404. package/dist/node_modules/d3-interpolate/src/value.js +0 -2
  405. package/dist/node_modules/d3-path/src/path.js +0 -2
  406. package/dist/node_modules/d3-scale/src/band.js +0 -2
  407. package/dist/node_modules/d3-scale/src/constant.js +0 -2
  408. package/dist/node_modules/d3-scale/src/continuous.js +0 -2
  409. package/dist/node_modules/d3-scale/src/diverging.js +0 -2
  410. package/dist/node_modules/d3-scale/src/identity.js +0 -2
  411. package/dist/node_modules/d3-scale/src/init.js +0 -2
  412. package/dist/node_modules/d3-scale/src/linear.js +0 -2
  413. package/dist/node_modules/d3-scale/src/log.js +0 -2
  414. package/dist/node_modules/d3-scale/src/nice.js +0 -2
  415. package/dist/node_modules/d3-scale/src/number.js +0 -2
  416. package/dist/node_modules/d3-scale/src/ordinal.js +0 -2
  417. package/dist/node_modules/d3-scale/src/pow.js +0 -2
  418. package/dist/node_modules/d3-scale/src/quantile.js +0 -2
  419. package/dist/node_modules/d3-scale/src/quantize.js +0 -2
  420. package/dist/node_modules/d3-scale/src/radial.js +0 -2
  421. package/dist/node_modules/d3-scale/src/sequential.js +0 -2
  422. package/dist/node_modules/d3-scale/src/sequentialQuantile.js +0 -2
  423. package/dist/node_modules/d3-scale/src/symlog.js +0 -2
  424. package/dist/node_modules/d3-scale/src/threshold.js +0 -2
  425. package/dist/node_modules/d3-scale/src/tickFormat.js +0 -2
  426. package/dist/node_modules/d3-scale/src/time.js +0 -2
  427. package/dist/node_modules/d3-scale/src/utcTime.js +0 -2
  428. package/dist/node_modules/d3-shape/src/area.js +0 -2
  429. package/dist/node_modules/d3-shape/src/array.js +0 -2
  430. package/dist/node_modules/d3-shape/src/constant.js +0 -2
  431. package/dist/node_modules/d3-shape/src/curve/basis.js +0 -2
  432. package/dist/node_modules/d3-shape/src/curve/basisClosed.js +0 -2
  433. package/dist/node_modules/d3-shape/src/curve/basisOpen.js +0 -2
  434. package/dist/node_modules/d3-shape/src/curve/bump.js +0 -2
  435. package/dist/node_modules/d3-shape/src/curve/linear.js +0 -2
  436. package/dist/node_modules/d3-shape/src/curve/linearClosed.js +0 -2
  437. package/dist/node_modules/d3-shape/src/curve/monotone.js +0 -2
  438. package/dist/node_modules/d3-shape/src/curve/natural.js +0 -2
  439. package/dist/node_modules/d3-shape/src/curve/step.js +0 -2
  440. package/dist/node_modules/d3-shape/src/line.js +0 -2
  441. package/dist/node_modules/d3-shape/src/math.js +0 -2
  442. package/dist/node_modules/d3-shape/src/noop.js +0 -2
  443. package/dist/node_modules/d3-shape/src/offset/expand.js +0 -2
  444. package/dist/node_modules/d3-shape/src/offset/none.js +0 -2
  445. package/dist/node_modules/d3-shape/src/offset/silhouette.js +0 -2
  446. package/dist/node_modules/d3-shape/src/offset/wiggle.js +0 -2
  447. package/dist/node_modules/d3-shape/src/order/none.js +0 -2
  448. package/dist/node_modules/d3-shape/src/path.js +0 -2
  449. package/dist/node_modules/d3-shape/src/point.js +0 -2
  450. package/dist/node_modules/d3-shape/src/stack.js +0 -2
  451. package/dist/node_modules/d3-shape/src/symbol/circle.js +0 -2
  452. package/dist/node_modules/d3-shape/src/symbol/cross.js +0 -2
  453. package/dist/node_modules/d3-shape/src/symbol/diamond.js +0 -2
  454. package/dist/node_modules/d3-shape/src/symbol/square.js +0 -2
  455. package/dist/node_modules/d3-shape/src/symbol/star.js +0 -2
  456. package/dist/node_modules/d3-shape/src/symbol/triangle.js +0 -2
  457. package/dist/node_modules/d3-shape/src/symbol/wye.js +0 -2
  458. package/dist/node_modules/d3-shape/src/symbol.js +0 -2
  459. package/dist/node_modules/d3-time/src/day.js +0 -2
  460. package/dist/node_modules/d3-time/src/duration.js +0 -2
  461. package/dist/node_modules/d3-time/src/hour.js +0 -2
  462. package/dist/node_modules/d3-time/src/interval.js +0 -2
  463. package/dist/node_modules/d3-time/src/millisecond.js +0 -2
  464. package/dist/node_modules/d3-time/src/minute.js +0 -2
  465. package/dist/node_modules/d3-time/src/month.js +0 -2
  466. package/dist/node_modules/d3-time/src/second.js +0 -2
  467. package/dist/node_modules/d3-time/src/ticks.js +0 -2
  468. package/dist/node_modules/d3-time/src/week.js +0 -2
  469. package/dist/node_modules/d3-time/src/year.js +0 -2
  470. package/dist/node_modules/d3-time-format/src/defaultLocale.js +0 -2
  471. package/dist/node_modules/d3-time-format/src/locale.js +0 -2
  472. package/dist/node_modules/dagre/index.js +0 -2
  473. package/dist/node_modules/dagre/lib/acyclic.js +0 -2
  474. package/dist/node_modules/dagre/lib/add-border-segments.js +0 -2
  475. package/dist/node_modules/dagre/lib/coordinate-system.js +0 -2
  476. package/dist/node_modules/dagre/lib/data/list.js +0 -2
  477. package/dist/node_modules/dagre/lib/debug.js +0 -2
  478. package/dist/node_modules/dagre/lib/graphlib.js +0 -2
  479. package/dist/node_modules/dagre/lib/greedy-fas.js +0 -2
  480. package/dist/node_modules/dagre/lib/layout.js +0 -2
  481. package/dist/node_modules/dagre/lib/lodash.js +0 -2
  482. package/dist/node_modules/dagre/lib/nesting-graph.js +0 -2
  483. package/dist/node_modules/dagre/lib/normalize.js +0 -2
  484. package/dist/node_modules/dagre/lib/order/add-subgraph-constraints.js +0 -2
  485. package/dist/node_modules/dagre/lib/order/barycenter.js +0 -2
  486. package/dist/node_modules/dagre/lib/order/build-layer-graph.js +0 -2
  487. package/dist/node_modules/dagre/lib/order/cross-count.js +0 -2
  488. package/dist/node_modules/dagre/lib/order/index.js +0 -2
  489. package/dist/node_modules/dagre/lib/order/init-order.js +0 -2
  490. package/dist/node_modules/dagre/lib/order/resolve-conflicts.js +0 -2
  491. package/dist/node_modules/dagre/lib/order/sort-subgraph.js +0 -2
  492. package/dist/node_modules/dagre/lib/order/sort.js +0 -2
  493. package/dist/node_modules/dagre/lib/parent-dummy-chains.js +0 -2
  494. package/dist/node_modules/dagre/lib/position/bk.js +0 -2
  495. package/dist/node_modules/dagre/lib/position/index.js +0 -2
  496. package/dist/node_modules/dagre/lib/rank/feasible-tree.js +0 -2
  497. package/dist/node_modules/dagre/lib/rank/index.js +0 -2
  498. package/dist/node_modules/dagre/lib/rank/network-simplex.js +0 -2
  499. package/dist/node_modules/dagre/lib/rank/util.js +0 -2
  500. package/dist/node_modules/dagre/lib/util.js +0 -2
  501. package/dist/node_modules/dagre/lib/version.js +0 -2
  502. package/dist/node_modules/decimal.js-light/decimal.js +0 -2
  503. package/dist/node_modules/eventemitter3/index.js +0 -2
  504. package/dist/node_modules/fast-equals/dist/es/index.js +0 -2
  505. package/dist/node_modules/graphlib/index.js +0 -2
  506. package/dist/node_modules/graphlib/lib/alg/components.js +0 -2
  507. package/dist/node_modules/graphlib/lib/alg/dfs.js +0 -2
  508. package/dist/node_modules/graphlib/lib/alg/dijkstra-all.js +0 -2
  509. package/dist/node_modules/graphlib/lib/alg/dijkstra.js +0 -2
  510. package/dist/node_modules/graphlib/lib/alg/find-cycles.js +0 -2
  511. package/dist/node_modules/graphlib/lib/alg/floyd-warshall.js +0 -2
  512. package/dist/node_modules/graphlib/lib/alg/index.js +0 -2
  513. package/dist/node_modules/graphlib/lib/alg/is-acyclic.js +0 -2
  514. package/dist/node_modules/graphlib/lib/alg/postorder.js +0 -2
  515. package/dist/node_modules/graphlib/lib/alg/preorder.js +0 -2
  516. package/dist/node_modules/graphlib/lib/alg/prim.js +0 -2
  517. package/dist/node_modules/graphlib/lib/alg/tarjan.js +0 -2
  518. package/dist/node_modules/graphlib/lib/alg/topsort.js +0 -2
  519. package/dist/node_modules/graphlib/lib/data/priority-queue.js +0 -2
  520. package/dist/node_modules/graphlib/lib/graph.js +0 -2
  521. package/dist/node_modules/graphlib/lib/index.js +0 -2
  522. package/dist/node_modules/graphlib/lib/json.js +0 -2
  523. package/dist/node_modules/graphlib/lib/lodash.js +0 -2
  524. package/dist/node_modules/graphlib/lib/version.js +0 -2
  525. package/dist/node_modules/internmap/src/index.js +0 -2
  526. package/dist/node_modules/lodash/_DataView.js +0 -2
  527. package/dist/node_modules/lodash/_Hash.js +0 -2
  528. package/dist/node_modules/lodash/_ListCache.js +0 -2
  529. package/dist/node_modules/lodash/_Map.js +0 -2
  530. package/dist/node_modules/lodash/_MapCache.js +0 -2
  531. package/dist/node_modules/lodash/_Promise.js +0 -2
  532. package/dist/node_modules/lodash/_Set.js +0 -2
  533. package/dist/node_modules/lodash/_SetCache.js +0 -2
  534. package/dist/node_modules/lodash/_Stack.js +0 -2
  535. package/dist/node_modules/lodash/_Symbol.js +0 -2
  536. package/dist/node_modules/lodash/_Uint8Array.js +0 -2
  537. package/dist/node_modules/lodash/_WeakMap.js +0 -2
  538. package/dist/node_modules/lodash/_apply.js +0 -2
  539. package/dist/node_modules/lodash/_arrayEach.js +0 -2
  540. package/dist/node_modules/lodash/_arrayEvery.js +0 -2
  541. package/dist/node_modules/lodash/_arrayFilter.js +0 -2
  542. package/dist/node_modules/lodash/_arrayIncludes.js +0 -2
  543. package/dist/node_modules/lodash/_arrayIncludesWith.js +0 -2
  544. package/dist/node_modules/lodash/_arrayLikeKeys.js +0 -2
  545. package/dist/node_modules/lodash/_arrayMap.js +0 -2
  546. package/dist/node_modules/lodash/_arrayPush.js +0 -2
  547. package/dist/node_modules/lodash/_arrayReduce.js +0 -2
  548. package/dist/node_modules/lodash/_arraySome.js +0 -2
  549. package/dist/node_modules/lodash/_asciiSize.js +0 -2
  550. package/dist/node_modules/lodash/_asciiToArray.js +0 -2
  551. package/dist/node_modules/lodash/_assignMergeValue.js +0 -2
  552. package/dist/node_modules/lodash/_assignValue.js +0 -2
  553. package/dist/node_modules/lodash/_assocIndexOf.js +0 -2
  554. package/dist/node_modules/lodash/_baseAssign.js +0 -2
  555. package/dist/node_modules/lodash/_baseAssignIn.js +0 -2
  556. package/dist/node_modules/lodash/_baseAssignValue.js +0 -2
  557. package/dist/node_modules/lodash/_baseClone.js +0 -2
  558. package/dist/node_modules/lodash/_baseCreate.js +0 -2
  559. package/dist/node_modules/lodash/_baseEach.js +0 -2
  560. package/dist/node_modules/lodash/_baseEvery.js +0 -2
  561. package/dist/node_modules/lodash/_baseExtremum.js +0 -2
  562. package/dist/node_modules/lodash/_baseFilter.js +0 -2
  563. package/dist/node_modules/lodash/_baseFindIndex.js +0 -2
  564. package/dist/node_modules/lodash/_baseFlatten.js +0 -2
  565. package/dist/node_modules/lodash/_baseFor.js +0 -2
  566. package/dist/node_modules/lodash/_baseForOwn.js +0 -2
  567. package/dist/node_modules/lodash/_baseGet.js +0 -2
  568. package/dist/node_modules/lodash/_baseGetAllKeys.js +0 -2
  569. package/dist/node_modules/lodash/_baseGetTag.js +0 -2
  570. package/dist/node_modules/lodash/_baseGt.js +0 -2
  571. package/dist/node_modules/lodash/_baseHas.js +0 -2
  572. package/dist/node_modules/lodash/_baseHasIn.js +0 -2
  573. package/dist/node_modules/lodash/_baseIndexOf.js +0 -2
  574. package/dist/node_modules/lodash/_baseIsArguments.js +0 -2
  575. package/dist/node_modules/lodash/_baseIsEqual.js +0 -2
  576. package/dist/node_modules/lodash/_baseIsEqualDeep.js +0 -2
  577. package/dist/node_modules/lodash/_baseIsMap.js +0 -2
  578. package/dist/node_modules/lodash/_baseIsMatch.js +0 -2
  579. package/dist/node_modules/lodash/_baseIsNaN.js +0 -2
  580. package/dist/node_modules/lodash/_baseIsNative.js +0 -2
  581. package/dist/node_modules/lodash/_baseIsSet.js +0 -2
  582. package/dist/node_modules/lodash/_baseIsTypedArray.js +0 -2
  583. package/dist/node_modules/lodash/_baseIteratee.js +0 -2
  584. package/dist/node_modules/lodash/_baseKeys.js +0 -2
  585. package/dist/node_modules/lodash/_baseKeysIn.js +0 -2
  586. package/dist/node_modules/lodash/_baseLt.js +0 -2
  587. package/dist/node_modules/lodash/_baseMap.js +0 -2
  588. package/dist/node_modules/lodash/_baseMatches.js +0 -2
  589. package/dist/node_modules/lodash/_baseMatchesProperty.js +0 -2
  590. package/dist/node_modules/lodash/_baseMerge.js +0 -2
  591. package/dist/node_modules/lodash/_baseMergeDeep.js +0 -2
  592. package/dist/node_modules/lodash/_baseOrderBy.js +0 -2
  593. package/dist/node_modules/lodash/_basePick.js +0 -2
  594. package/dist/node_modules/lodash/_basePickBy.js +0 -2
  595. package/dist/node_modules/lodash/_baseProperty.js +0 -2
  596. package/dist/node_modules/lodash/_basePropertyDeep.js +0 -2
  597. package/dist/node_modules/lodash/_baseRange.js +0 -2
  598. package/dist/node_modules/lodash/_baseReduce.js +0 -2
  599. package/dist/node_modules/lodash/_baseRest.js +0 -2
  600. package/dist/node_modules/lodash/_baseSet.js +0 -2
  601. package/dist/node_modules/lodash/_baseSetToString.js +0 -2
  602. package/dist/node_modules/lodash/_baseSlice.js +0 -2
  603. package/dist/node_modules/lodash/_baseSome.js +0 -2
  604. package/dist/node_modules/lodash/_baseSortBy.js +0 -2
  605. package/dist/node_modules/lodash/_baseTimes.js +0 -2
  606. package/dist/node_modules/lodash/_baseToString.js +0 -2
  607. package/dist/node_modules/lodash/_baseTrim.js +0 -2
  608. package/dist/node_modules/lodash/_baseUnary.js +0 -2
  609. package/dist/node_modules/lodash/_baseUniq.js +0 -2
  610. package/dist/node_modules/lodash/_baseValues.js +0 -2
  611. package/dist/node_modules/lodash/_baseZipObject.js +0 -2
  612. package/dist/node_modules/lodash/_cacheHas.js +0 -2
  613. package/dist/node_modules/lodash/_castFunction.js +0 -2
  614. package/dist/node_modules/lodash/_castPath.js +0 -2
  615. package/dist/node_modules/lodash/_castSlice.js +0 -2
  616. package/dist/node_modules/lodash/_cloneArrayBuffer.js +0 -2
  617. package/dist/node_modules/lodash/_cloneBuffer.js +0 -2
  618. package/dist/node_modules/lodash/_cloneDataView.js +0 -2
  619. package/dist/node_modules/lodash/_cloneRegExp.js +0 -2
  620. package/dist/node_modules/lodash/_cloneSymbol.js +0 -2
  621. package/dist/node_modules/lodash/_cloneTypedArray.js +0 -2
  622. package/dist/node_modules/lodash/_compareAscending.js +0 -2
  623. package/dist/node_modules/lodash/_compareMultiple.js +0 -2
  624. package/dist/node_modules/lodash/_copyArray.js +0 -2
  625. package/dist/node_modules/lodash/_copyObject.js +0 -2
  626. package/dist/node_modules/lodash/_copySymbols.js +0 -2
  627. package/dist/node_modules/lodash/_copySymbolsIn.js +0 -2
  628. package/dist/node_modules/lodash/_coreJsData.js +0 -2
  629. package/dist/node_modules/lodash/_createAssigner.js +0 -2
  630. package/dist/node_modules/lodash/_createBaseEach.js +0 -2
  631. package/dist/node_modules/lodash/_createBaseFor.js +0 -2
  632. package/dist/node_modules/lodash/_createCaseFirst.js +0 -2
  633. package/dist/node_modules/lodash/_createFind.js +0 -2
  634. package/dist/node_modules/lodash/_createRange.js +0 -2
  635. package/dist/node_modules/lodash/_createSet.js +0 -2
  636. package/dist/node_modules/lodash/_defineProperty.js +0 -2
  637. package/dist/node_modules/lodash/_equalArrays.js +0 -2
  638. package/dist/node_modules/lodash/_equalByTag.js +0 -2
  639. package/dist/node_modules/lodash/_equalObjects.js +0 -2
  640. package/dist/node_modules/lodash/_flatRest.js +0 -2
  641. package/dist/node_modules/lodash/_freeGlobal.js +0 -2
  642. package/dist/node_modules/lodash/_getAllKeys.js +0 -2
  643. package/dist/node_modules/lodash/_getAllKeysIn.js +0 -2
  644. package/dist/node_modules/lodash/_getMapData.js +0 -2
  645. package/dist/node_modules/lodash/_getMatchData.js +0 -2
  646. package/dist/node_modules/lodash/_getNative.js +0 -2
  647. package/dist/node_modules/lodash/_getPrototype.js +0 -2
  648. package/dist/node_modules/lodash/_getRawTag.js +0 -2
  649. package/dist/node_modules/lodash/_getSymbols.js +0 -2
  650. package/dist/node_modules/lodash/_getSymbolsIn.js +0 -2
  651. package/dist/node_modules/lodash/_getTag.js +0 -2
  652. package/dist/node_modules/lodash/_getValue.js +0 -2
  653. package/dist/node_modules/lodash/_hasPath.js +0 -2
  654. package/dist/node_modules/lodash/_hasUnicode.js +0 -2
  655. package/dist/node_modules/lodash/_hashClear.js +0 -2
  656. package/dist/node_modules/lodash/_hashDelete.js +0 -2
  657. package/dist/node_modules/lodash/_hashGet.js +0 -2
  658. package/dist/node_modules/lodash/_hashHas.js +0 -2
  659. package/dist/node_modules/lodash/_hashSet.js +0 -2
  660. package/dist/node_modules/lodash/_initCloneArray.js +0 -2
  661. package/dist/node_modules/lodash/_initCloneByTag.js +0 -2
  662. package/dist/node_modules/lodash/_initCloneObject.js +0 -2
  663. package/dist/node_modules/lodash/_isFlattenable.js +0 -2
  664. package/dist/node_modules/lodash/_isIndex.js +0 -2
  665. package/dist/node_modules/lodash/_isIterateeCall.js +0 -2
  666. package/dist/node_modules/lodash/_isKey.js +0 -2
  667. package/dist/node_modules/lodash/_isKeyable.js +0 -2
  668. package/dist/node_modules/lodash/_isMasked.js +0 -2
  669. package/dist/node_modules/lodash/_isPrototype.js +0 -2
  670. package/dist/node_modules/lodash/_isStrictComparable.js +0 -2
  671. package/dist/node_modules/lodash/_listCacheClear.js +0 -2
  672. package/dist/node_modules/lodash/_listCacheDelete.js +0 -2
  673. package/dist/node_modules/lodash/_listCacheGet.js +0 -2
  674. package/dist/node_modules/lodash/_listCacheHas.js +0 -2
  675. package/dist/node_modules/lodash/_listCacheSet.js +0 -2
  676. package/dist/node_modules/lodash/_mapCacheClear.js +0 -2
  677. package/dist/node_modules/lodash/_mapCacheDelete.js +0 -2
  678. package/dist/node_modules/lodash/_mapCacheGet.js +0 -2
  679. package/dist/node_modules/lodash/_mapCacheHas.js +0 -2
  680. package/dist/node_modules/lodash/_mapCacheSet.js +0 -2
  681. package/dist/node_modules/lodash/_mapToArray.js +0 -2
  682. package/dist/node_modules/lodash/_matchesStrictComparable.js +0 -2
  683. package/dist/node_modules/lodash/_memoizeCapped.js +0 -2
  684. package/dist/node_modules/lodash/_nativeCreate.js +0 -2
  685. package/dist/node_modules/lodash/_nativeKeys.js +0 -2
  686. package/dist/node_modules/lodash/_nativeKeysIn.js +0 -2
  687. package/dist/node_modules/lodash/_nodeUtil.js +0 -2
  688. package/dist/node_modules/lodash/_objectToString.js +0 -2
  689. package/dist/node_modules/lodash/_overArg.js +0 -2
  690. package/dist/node_modules/lodash/_overRest.js +0 -2
  691. package/dist/node_modules/lodash/_root.js +0 -2
  692. package/dist/node_modules/lodash/_safeGet.js +0 -2
  693. package/dist/node_modules/lodash/_setCacheAdd.js +0 -2
  694. package/dist/node_modules/lodash/_setCacheHas.js +0 -2
  695. package/dist/node_modules/lodash/_setToArray.js +0 -2
  696. package/dist/node_modules/lodash/_setToString.js +0 -2
  697. package/dist/node_modules/lodash/_shortOut.js +0 -2
  698. package/dist/node_modules/lodash/_stackClear.js +0 -2
  699. package/dist/node_modules/lodash/_stackDelete.js +0 -2
  700. package/dist/node_modules/lodash/_stackGet.js +0 -2
  701. package/dist/node_modules/lodash/_stackHas.js +0 -2
  702. package/dist/node_modules/lodash/_stackSet.js +0 -2
  703. package/dist/node_modules/lodash/_strictIndexOf.js +0 -2
  704. package/dist/node_modules/lodash/_stringSize.js +0 -2
  705. package/dist/node_modules/lodash/_stringToArray.js +0 -2
  706. package/dist/node_modules/lodash/_stringToPath.js +0 -2
  707. package/dist/node_modules/lodash/_toKey.js +0 -2
  708. package/dist/node_modules/lodash/_toSource.js +0 -2
  709. package/dist/node_modules/lodash/_trimmedEndIndex.js +0 -2
  710. package/dist/node_modules/lodash/_unicodeSize.js +0 -2
  711. package/dist/node_modules/lodash/_unicodeToArray.js +0 -2
  712. package/dist/node_modules/lodash/clone.js +0 -2
  713. package/dist/node_modules/lodash/cloneDeep.js +0 -2
  714. package/dist/node_modules/lodash/constant.js +0 -2
  715. package/dist/node_modules/lodash/debounce.js +0 -2
  716. package/dist/node_modules/lodash/defaults.js +0 -2
  717. package/dist/node_modules/lodash/each.js +0 -2
  718. package/dist/node_modules/lodash/eq.js +0 -2
  719. package/dist/node_modules/lodash/every.js +0 -2
  720. package/dist/node_modules/lodash/filter.js +0 -2
  721. package/dist/node_modules/lodash/find.js +0 -2
  722. package/dist/node_modules/lodash/findIndex.js +0 -2
  723. package/dist/node_modules/lodash/flatMap.js +0 -2
  724. package/dist/node_modules/lodash/flatten.js +0 -2
  725. package/dist/node_modules/lodash/forEach.js +0 -2
  726. package/dist/node_modules/lodash/forIn.js +0 -2
  727. package/dist/node_modules/lodash/get.js +0 -2
  728. package/dist/node_modules/lodash/has.js +0 -2
  729. package/dist/node_modules/lodash/hasIn.js +0 -2
  730. package/dist/node_modules/lodash/identity.js +0 -2
  731. package/dist/node_modules/lodash/isArguments.js +0 -2
  732. package/dist/node_modules/lodash/isArray.js +0 -2
  733. package/dist/node_modules/lodash/isArrayLike.js +0 -2
  734. package/dist/node_modules/lodash/isArrayLikeObject.js +0 -2
  735. package/dist/node_modules/lodash/isBoolean.js +0 -2
  736. package/dist/node_modules/lodash/isBuffer.js +0 -2
  737. package/dist/node_modules/lodash/isEmpty.js +0 -2
  738. package/dist/node_modules/lodash/isEqual.js +0 -2
  739. package/dist/node_modules/lodash/isFunction.js +0 -2
  740. package/dist/node_modules/lodash/isLength.js +0 -2
  741. package/dist/node_modules/lodash/isMap.js +0 -2
  742. package/dist/node_modules/lodash/isNaN.js +0 -2
  743. package/dist/node_modules/lodash/isNil.js +0 -2
  744. package/dist/node_modules/lodash/isNumber.js +0 -2
  745. package/dist/node_modules/lodash/isObject.js +0 -2
  746. package/dist/node_modules/lodash/isObjectLike.js +0 -2
  747. package/dist/node_modules/lodash/isPlainObject.js +0 -2
  748. package/dist/node_modules/lodash/isSet.js +0 -2
  749. package/dist/node_modules/lodash/isString.js +0 -2
  750. package/dist/node_modules/lodash/isSymbol.js +0 -2
  751. package/dist/node_modules/lodash/isTypedArray.js +0 -2
  752. package/dist/node_modules/lodash/isUndefined.js +0 -2
  753. package/dist/node_modules/lodash/keys.js +0 -2
  754. package/dist/node_modules/lodash/keysIn.js +0 -2
  755. package/dist/node_modules/lodash/last.js +0 -2
  756. package/dist/node_modules/lodash/map.js +0 -2
  757. package/dist/node_modules/lodash/mapValues.js +0 -2
  758. package/dist/node_modules/lodash/max.js +0 -2
  759. package/dist/node_modules/lodash/maxBy.js +0 -2
  760. package/dist/node_modules/lodash/memoize.js +0 -2
  761. package/dist/node_modules/lodash/merge.js +0 -2
  762. package/dist/node_modules/lodash/min.js +0 -2
  763. package/dist/node_modules/lodash/minBy.js +0 -2
  764. package/dist/node_modules/lodash/noop.js +0 -2
  765. package/dist/node_modules/lodash/now.js +0 -2
  766. package/dist/node_modules/lodash/pick.js +0 -2
  767. package/dist/node_modules/lodash/property.js +0 -2
  768. package/dist/node_modules/lodash/range.js +0 -2
  769. package/dist/node_modules/lodash/reduce.js +0 -2
  770. package/dist/node_modules/lodash/size.js +0 -2
  771. package/dist/node_modules/lodash/some.js +0 -2
  772. package/dist/node_modules/lodash/sortBy.js +0 -2
  773. package/dist/node_modules/lodash/stubArray.js +0 -2
  774. package/dist/node_modules/lodash/stubFalse.js +0 -2
  775. package/dist/node_modules/lodash/throttle.js +0 -2
  776. package/dist/node_modules/lodash/toFinite.js +0 -2
  777. package/dist/node_modules/lodash/toInteger.js +0 -2
  778. package/dist/node_modules/lodash/toNumber.js +0 -2
  779. package/dist/node_modules/lodash/toPlainObject.js +0 -2
  780. package/dist/node_modules/lodash/toString.js +0 -2
  781. package/dist/node_modules/lodash/transform.js +0 -2
  782. package/dist/node_modules/lodash/union.js +0 -2
  783. package/dist/node_modules/lodash/uniqBy.js +0 -2
  784. package/dist/node_modules/lodash/uniqueId.js +0 -2
  785. package/dist/node_modules/lodash/upperFirst.js +0 -2
  786. package/dist/node_modules/lodash/values.js +0 -2
  787. package/dist/node_modules/lodash/zipObject.js +0 -2
  788. package/dist/node_modules/object-assign/index.js +0 -2
  789. package/dist/node_modules/prop-types/checkPropTypes.js +0 -2
  790. package/dist/node_modules/prop-types/factoryWithThrowingShims.js +0 -2
  791. package/dist/node_modules/prop-types/factoryWithTypeCheckers.js +0 -2
  792. package/dist/node_modules/prop-types/index.js +0 -2
  793. package/dist/node_modules/prop-types/lib/ReactPropTypesSecret.js +0 -2
  794. package/dist/node_modules/prop-types/lib/has.js +0 -2
  795. package/dist/node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js +0 -2
  796. package/dist/node_modules/prop-types/node_modules/react-is/cjs/react-is.production.min.js +0 -2
  797. package/dist/node_modules/prop-types/node_modules/react-is/index.js +0 -2
  798. package/dist/node_modules/react-is/cjs/react-is.development.js +0 -2
  799. package/dist/node_modules/react-is/cjs/react-is.production.min.js +0 -2
  800. package/dist/node_modules/react-is/index.js +0 -2
  801. package/dist/node_modules/react-smooth/es6/Animate.js +0 -2
  802. package/dist/node_modules/react-smooth/es6/AnimateManager.js +0 -2
  803. package/dist/node_modules/react-smooth/es6/configUpdate.js +0 -2
  804. package/dist/node_modules/react-smooth/es6/easing.js +0 -2
  805. package/dist/node_modules/react-smooth/es6/index.js +0 -2
  806. package/dist/node_modules/react-smooth/es6/setRafTimeout.js +0 -2
  807. package/dist/node_modules/react-smooth/es6/util.js +0 -2
  808. package/dist/node_modules/recharts/es6/cartesian/Area.js +0 -2
  809. package/dist/node_modules/recharts/es6/cartesian/Bar.js +0 -2
  810. package/dist/node_modules/recharts/es6/cartesian/Brush.js +0 -2
  811. package/dist/node_modules/recharts/es6/cartesian/CartesianAxis.js +0 -2
  812. package/dist/node_modules/recharts/es6/cartesian/CartesianGrid.js +0 -2
  813. package/dist/node_modules/recharts/es6/cartesian/ErrorBar.js +0 -2
  814. package/dist/node_modules/recharts/es6/cartesian/ReferenceArea.js +0 -2
  815. package/dist/node_modules/recharts/es6/cartesian/ReferenceDot.js +0 -2
  816. package/dist/node_modules/recharts/es6/cartesian/ReferenceLine.js +0 -2
  817. package/dist/node_modules/recharts/es6/cartesian/XAxis.js +0 -2
  818. package/dist/node_modules/recharts/es6/cartesian/YAxis.js +0 -2
  819. package/dist/node_modules/recharts/es6/cartesian/getEquidistantTicks.js +0 -2
  820. package/dist/node_modules/recharts/es6/cartesian/getTicks.js +0 -2
  821. package/dist/node_modules/recharts/es6/chart/AccessibilityManager.js +0 -2
  822. package/dist/node_modules/recharts/es6/chart/AreaChart.js +0 -2
  823. package/dist/node_modules/recharts/es6/chart/PieChart.js +0 -2
  824. package/dist/node_modules/recharts/es6/chart/generateCategoricalChart.js +0 -2
  825. package/dist/node_modules/recharts/es6/component/Cell.js +0 -2
  826. package/dist/node_modules/recharts/es6/component/Cursor.js +0 -2
  827. package/dist/node_modules/recharts/es6/component/DefaultLegendContent.js +0 -2
  828. package/dist/node_modules/recharts/es6/component/DefaultTooltipContent.js +0 -2
  829. package/dist/node_modules/recharts/es6/component/Label.js +0 -2
  830. package/dist/node_modules/recharts/es6/component/LabelList.js +0 -2
  831. package/dist/node_modules/recharts/es6/component/Legend.js +0 -2
  832. package/dist/node_modules/recharts/es6/component/ResponsiveContainer.js +0 -2
  833. package/dist/node_modules/recharts/es6/component/Text.js +0 -2
  834. package/dist/node_modules/recharts/es6/component/Tooltip.js +0 -2
  835. package/dist/node_modules/recharts/es6/component/TooltipBoundingBox.js +0 -2
  836. package/dist/node_modules/recharts/es6/container/Layer.js +0 -2
  837. package/dist/node_modules/recharts/es6/container/Surface.js +0 -2
  838. package/dist/node_modules/recharts/es6/context/chartLayoutContext.js +0 -2
  839. package/dist/node_modules/recharts/es6/polar/Pie.js +0 -2
  840. package/dist/node_modules/recharts/es6/polar/PolarAngleAxis.js +0 -2
  841. package/dist/node_modules/recharts/es6/polar/PolarRadiusAxis.js +0 -2
  842. package/dist/node_modules/recharts/es6/shape/Cross.js +0 -2
  843. package/dist/node_modules/recharts/es6/shape/Curve.js +0 -2
  844. package/dist/node_modules/recharts/es6/shape/Dot.js +0 -2
  845. package/dist/node_modules/recharts/es6/shape/Polygon.js +0 -2
  846. package/dist/node_modules/recharts/es6/shape/Rectangle.js +0 -2
  847. package/dist/node_modules/recharts/es6/shape/Sector.js +0 -2
  848. package/dist/node_modules/recharts/es6/shape/Symbols.js +0 -2
  849. package/dist/node_modules/recharts/es6/shape/Trapezoid.js +0 -2
  850. package/dist/node_modules/recharts/es6/util/ActiveShapeUtils.js +0 -2
  851. package/dist/node_modules/recharts/es6/util/BarUtils.js +0 -2
  852. package/dist/node_modules/recharts/es6/util/CartesianUtils.js +0 -2
  853. package/dist/node_modules/recharts/es6/util/ChartUtils.js +0 -2
  854. package/dist/node_modules/recharts/es6/util/CssPrefixUtils.js +0 -2
  855. package/dist/node_modules/recharts/es6/util/DOMUtils.js +0 -2
  856. package/dist/node_modules/recharts/es6/util/DataUtils.js +0 -2
  857. package/dist/node_modules/recharts/es6/util/DetectReferenceElementsDomain.js +0 -2
  858. package/dist/node_modules/recharts/es6/util/Events.js +0 -2
  859. package/dist/node_modules/recharts/es6/util/Global.js +0 -2
  860. package/dist/node_modules/recharts/es6/util/IfOverflowMatches.js +0 -2
  861. package/dist/node_modules/recharts/es6/util/LogUtils.js +0 -2
  862. package/dist/node_modules/recharts/es6/util/PolarUtils.js +0 -2
  863. package/dist/node_modules/recharts/es6/util/ReactUtils.js +0 -2
  864. package/dist/node_modules/recharts/es6/util/ReduceCSSCalc.js +0 -2
  865. package/dist/node_modules/recharts/es6/util/ShallowEqual.js +0 -2
  866. package/dist/node_modules/recharts/es6/util/TickUtils.js +0 -2
  867. package/dist/node_modules/recharts/es6/util/calculateViewBox.js +0 -2
  868. package/dist/node_modules/recharts/es6/util/cursor/getCursorPoints.js +0 -2
  869. package/dist/node_modules/recharts/es6/util/cursor/getCursorRectangle.js +0 -2
  870. package/dist/node_modules/recharts/es6/util/cursor/getRadialCursorPoints.js +0 -2
  871. package/dist/node_modules/recharts/es6/util/getEveryNthWithCondition.js +0 -2
  872. package/dist/node_modules/recharts/es6/util/getLegendProps.js +0 -2
  873. package/dist/node_modules/recharts/es6/util/isDomainSpecifiedByUser.js +0 -2
  874. package/dist/node_modules/recharts/es6/util/payload/getUniqPayload.js +0 -2
  875. package/dist/node_modules/recharts/es6/util/tooltip/translate.js +0 -2
  876. package/dist/node_modules/recharts/es6/util/types.js +0 -2
  877. package/dist/node_modules/recharts-scale/es6/getNiceTickValues.js +0 -2
  878. package/dist/node_modules/recharts-scale/es6/util/arithmetic.js +0 -2
  879. package/dist/node_modules/recharts-scale/es6/util/utils.js +0 -2
  880. package/dist/node_modules/rxjs/dist/esm5/internal/NotificationFactories.js +0 -2
  881. package/dist/node_modules/rxjs/dist/esm5/internal/Observable.js +0 -2
  882. package/dist/node_modules/rxjs/dist/esm5/internal/Subscriber.js +0 -2
  883. package/dist/node_modules/rxjs/dist/esm5/internal/Subscription.js +0 -2
  884. package/dist/node_modules/rxjs/dist/esm5/internal/config.js +0 -2
  885. package/dist/node_modules/rxjs/dist/esm5/internal/observable/empty.js +0 -2
  886. package/dist/node_modules/rxjs/dist/esm5/internal/observable/throwError.js +0 -2
  887. package/dist/node_modules/rxjs/dist/esm5/internal/scheduler/timeoutProvider.js +0 -2
  888. package/dist/node_modules/rxjs/dist/esm5/internal/symbol/observable.js +0 -2
  889. package/dist/node_modules/rxjs/dist/esm5/internal/util/UnsubscriptionError.js +0 -2
  890. package/dist/node_modules/rxjs/dist/esm5/internal/util/arrRemove.js +0 -2
  891. package/dist/node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js +0 -2
  892. package/dist/node_modules/rxjs/dist/esm5/internal/util/errorContext.js +0 -2
  893. package/dist/node_modules/rxjs/dist/esm5/internal/util/identity.js +0 -2
  894. package/dist/node_modules/rxjs/dist/esm5/internal/util/isFunction.js +0 -2
  895. package/dist/node_modules/rxjs/dist/esm5/internal/util/noop.js +0 -2
  896. package/dist/node_modules/rxjs/dist/esm5/internal/util/pipe.js +0 -2
  897. package/dist/node_modules/rxjs/dist/esm5/internal/util/reportUnhandledError.js +0 -2
  898. package/dist/node_modules/rxjs/node_modules/tslib/tslib.es6.js +0 -2
  899. package/dist/node_modules/tiny-invariant/dist/esm/tiny-invariant.js +0 -2
  900. package/dist/node_modules/victory-vendor/es/d3-scale.js +0 -2
  901. package/dist/pages/ActionsPage.js +0 -2
  902. package/dist/pages/AgentDetailsPage.js +0 -2
  903. package/dist/pages/AgentGraphPage.js +0 -2
  904. package/dist/pages/AgentsLandingPage.js +0 -2
  905. package/dist/pages/AgentsPage.js +0 -2
  906. package/dist/pages/AnalyticsPage.js +0 -2
  907. package/dist/pages/CatalogDetailPage.js +0 -2
  908. package/dist/pages/CatalogDocsPage.js +0 -2
  909. package/dist/pages/CatalogPage.js +0 -2
  910. package/dist/pages/ComponentDetailPage.js +0 -2
  911. package/dist/pages/ComponentDocsPage.js +0 -2
  912. package/dist/pages/ComponentsPage.js +0 -2
  913. package/dist/pages/EnvTopologyPage.js +0 -2
  914. package/dist/pages/GettingStartedPage.js +0 -2
  915. package/dist/pages/HealthPage.js +0 -2
  916. package/dist/pages/LogsPage.js +0 -2
  917. package/dist/pages/NoteDetailsPage.js +0 -2
  918. package/dist/pages/OverviewPage.js +0 -2
  919. package/dist/pages/PluginDetailPage.js +0 -2
  920. package/dist/pages/PluginsCatalogPage.js +0 -2
  921. package/dist/pages/ScheduledJobDetailPage.js +0 -2
  922. package/dist/pages/SessionDetailsPage.js +0 -2
  923. package/dist/pages/SessionsPage.js +0 -2
  924. package/dist/pages/SettingsPage.js +0 -2
  925. package/dist/pages/SharedSessionPage.js +0 -2
  926. package/dist/pages/SharedVibeDeckPage.js +0 -2
  927. package/dist/pages/TargetDetailsPage.js +0 -2
  928. package/dist/pages/TargetsPage.js +0 -2
  929. package/dist/pages/TemplateDetailPage.js +0 -2
  930. package/dist/pages/TemplatesPage.js +0 -2
  931. package/dist/pages/TunnelsLandingPage.js +0 -2
  932. package/dist/pages/VibeAuditPage.js +0 -2
  933. package/dist/pages/VibeCalendarPage.js +0 -2
  934. package/dist/pages/VibeDeckPage.js +0 -2
  935. package/dist/pages/VibeDetailsPage.js +0 -2
  936. package/dist/pages/VibeDocsPage.js +0 -2
  937. package/dist/pages/VibeTaskDetailPage.js +0 -2
  938. package/dist/pages/VibesPage.js +0 -2
  939. package/dist/pages/WebhooksPage.js +0 -2
  940. package/dist/pages/ai/AIBookmarksPage.js +0 -2
  941. package/dist/pages/ai/AIBuilderPage.js +0 -2
  942. package/dist/pages/ai/AIPage.js +0 -2
  943. package/dist/pages/ai/AISessionDetailPage.js +0 -2
  944. package/dist/pages/ai/AgentManagerPage.js +0 -2
  945. package/dist/pages/tunnels/AuditTab.js +0 -2
  946. package/dist/pages/tunnels/DomainsTab.js +0 -2
  947. package/dist/pages/tunnels/ProvidersTab.js +0 -2
  948. package/dist/pages/tunnels/SessionsTab.js +0 -2
  949. package/dist/pages/tunnels/TunnelDetailsPage.js +0 -2
  950. package/dist/pages/tunnels/TunnelsTab.js +0 -2
  951. package/dist/pages/tunnels/UsageTab.js +0 -2
  952. package/dist/pages/tunnels/tabs/TunnelAuditTab.js +0 -2
  953. package/dist/pages/tunnels/tabs/TunnelCliTab.js +0 -2
  954. package/dist/pages/tunnels/tabs/TunnelDomainsTab.js +0 -2
  955. package/dist/pages/tunnels/tabs/TunnelEndpointsTab.js +0 -2
  956. package/dist/pages/tunnels/tabs/TunnelOverviewTab.js +0 -2
  957. package/dist/pages/tunnels/tabs/TunnelSessionsTab.js +0 -2
  958. package/dist/pages/tunnels/tabs/TunnelSettingsTab.js +0 -2
  959. package/dist/pages/tunnels/tabs/TunnelUsageTab.js +0 -2
  960. package/dist/plugin.js +0 -2
  961. package/dist/providers/AgentEventsProvider.js +0 -2
  962. package/dist/providers/QuotaExhaustedProvider.js +0 -2
  963. package/dist/providers/VibeControlsProvider.js +0 -2
  964. package/dist/services/agentRemoteTaskGates.js +0 -2
  965. package/dist/services/aiApi.js +0 -2
  966. package/dist/services/assistantApi.js +0 -2
  967. package/dist/services/createSandboxAssistantTransport.js +0 -2
  968. package/dist/services/gitopsApi.js +0 -2
  969. package/dist/services/iframeToken.js +0 -2
  970. package/dist/services/planApi.js +0 -2
  971. package/dist/services/schedulerApi.js +0 -2
  972. package/dist/shared/hooks/useField.js +0 -2
  973. package/dist/shared/hooks/useTr.js +0 -2
  974. package/dist/store/agentManagerStore.js +0 -2
  975. package/dist/store/vibeControlsStore.js +0 -2
  976. package/dist/translations/en.js +0 -2
  977. package/dist/types/assistant.js +0 -2
  978. package/dist/utils/agentApiPath.js +0 -2
  979. package/dist/utils/agentHealth.js +0 -2
  980. package/dist/utils/agentStatus.js +0 -2
  981. package/dist/utils/agentVisibility.js +0 -2
  982. package/dist/utils/aiCredits.js +0 -2
  983. package/dist/utils/aiCreditsLedger.js +0 -2
  984. package/dist/utils/aiSessionNotFound.js +0 -2
  985. package/dist/utils/assistantPrompt.js +0 -2
  986. package/dist/utils/onboardingUtils.js +0 -2
  987. package/dist/utils/pageContext.js +0 -2
  988. package/dist/utils/quotaUtils.js +0 -2
  989. package/dist/utils/randomSessionName.js +0 -2
  990. package/dist/utils/relativeTime.js +0 -2
  991. package/dist/utils/shareUrl.js +0 -2
  992. package/package.json +4 -3
  993. package/dist/VibeControlsRoot.js.map +0 -1
  994. package/dist/VibeControlsRoutes.js.map +0 -1
  995. package/dist/components/actions/ActionCard.js.map +0 -1
  996. package/dist/components/actions/ActionForm.js.map +0 -1
  997. package/dist/components/actions/ActionSchedulesList.js.map +0 -1
  998. package/dist/components/actions/ActionTypeBadge.js.map +0 -1
  999. package/dist/components/actions/ActionWebhookEndpoint.js.map +0 -1
  1000. package/dist/components/actions/ExecutionHistory.js.map +0 -1
  1001. package/dist/components/actions/RemoteExecutionEnableNotice.js.map +0 -1
  1002. package/dist/components/agent-manager/AgentManagerAdminBar.js.map +0 -1
  1003. package/dist/components/agent-manager/AgentManagerBookmarksDrawer.js.map +0 -1
  1004. package/dist/components/agent-manager/AgentManagerBulkActions.js.map +0 -1
  1005. package/dist/components/agent-manager/AgentManagerCenter.js.map +0 -1
  1006. package/dist/components/agent-manager/AgentManagerChatPane.js.map +0 -1
  1007. package/dist/components/agent-manager/AgentManagerDetailPanel.js.map +0 -1
  1008. package/dist/components/agent-manager/AgentManagerInputArea.js.map +0 -1
  1009. package/dist/components/agent-manager/AgentManagerLayout.js.map +0 -1
  1010. package/dist/components/agent-manager/AgentManagerMessageItem.js.map +0 -1
  1011. package/dist/components/agent-manager/AgentManagerMessageList.js.map +0 -1
  1012. package/dist/components/agent-manager/AgentManagerSessionItem.js.map +0 -1
  1013. package/dist/components/agent-manager/AgentManagerSessionList.js.map +0 -1
  1014. package/dist/components/agent-manager/AgentManagerSidebar.js.map +0 -1
  1015. package/dist/components/agent-manager/AgentManagerStreamingIndicator.js.map +0 -1
  1016. package/dist/components/agent-manager/AgentManagerTab.js.map +0 -1
  1017. package/dist/components/agent-manager/AgentManagerTabBar.js.map +0 -1
  1018. package/dist/components/agent-manager/BridleConfigPanel.js.map +0 -1
  1019. package/dist/components/agent-manager/ChatInsertPicker.js.map +0 -1
  1020. package/dist/components/agent-manager/FilePickerModal.js.map +0 -1
  1021. package/dist/components/agent-manager/PluginInstallModal.js.map +0 -1
  1022. package/dist/components/agent-manager/ProfilesPanel.js.map +0 -1
  1023. package/dist/components/agent-manager/controls/AutonomySelector.js.map +0 -1
  1024. package/dist/components/agent-manager/controls/ContextLevelToggle.js.map +0 -1
  1025. package/dist/components/agent-manager/controls/FileAttachButton.js.map +0 -1
  1026. package/dist/components/agent-manager/controls/McpServerSelector.js.map +0 -1
  1027. package/dist/components/agent-manager/controls/ModelSelector.js.map +0 -1
  1028. package/dist/components/agent-manager/controls/SdkSelector.js.map +0 -1
  1029. package/dist/components/agent-manager/controls/VoiceToggle.js.map +0 -1
  1030. package/dist/components/agent-manager/controls/createDropHandlers.js.map +0 -1
  1031. package/dist/components/agent-manager/detail/SessionConfigPanel.js.map +0 -1
  1032. package/dist/components/agent-manager/detail/SessionLogsPanel.js.map +0 -1
  1033. package/dist/components/agent-manager/detail/SessionStatsPanel.js.map +0 -1
  1034. package/dist/components/agent-manager/detail/SessionToolsPanel.js.map +0 -1
  1035. package/dist/components/agent-manager/dialogs/ExportSessionDialog.js.map +0 -1
  1036. package/dist/components/agent-manager/dialogs/NewSessionDialog.js.map +0 -1
  1037. package/dist/components/agent-manager/dialogs/RenameSessionDialog.js.map +0 -1
  1038. package/dist/components/agent-manager/dialogs/SessionSearchDialog.js.map +0 -1
  1039. package/dist/components/agent-manager/modelDefaults.js.map +0 -1
  1040. package/dist/components/agents/AgentCard.js.map +0 -1
  1041. package/dist/components/agents/AgentConnectionRecovery.js.map +0 -1
  1042. package/dist/components/agents/AgentForm.js.map +0 -1
  1043. package/dist/components/agents/AgentList.js.map +0 -1
  1044. package/dist/components/agents/AgentMaintenanceTab.js.map +0 -1
  1045. package/dist/components/agents/AgentStatusBadge.js.map +0 -1
  1046. package/dist/components/agents/AgentStorageConfig.js.map +0 -1
  1047. package/dist/components/agents/AgentVisibilityCard.js.map +0 -1
  1048. package/dist/components/agents/ConfigureAgentDialog.js.map +0 -1
  1049. package/dist/components/agents/ConnectionLogPanel.js.map +0 -1
  1050. package/dist/components/agents/CreateSessionDialog.js.map +0 -1
  1051. package/dist/components/agents/GatewayAuthCard.js.map +0 -1
  1052. package/dist/components/agents/OpenInBrowserEditorButton.js.map +0 -1
  1053. package/dist/components/agents/OpenInEditorMenu.js.map +0 -1
  1054. package/dist/components/agents/PluginUIPanel.js.map +0 -1
  1055. package/dist/components/agents/RemoteTaskPermissionsCard.js.map +0 -1
  1056. package/dist/components/agents/VibeOpenInEditorMenu.js.map +0 -1
  1057. package/dist/components/agents/agentStatus.js.map +0 -1
  1058. package/dist/components/agents/backup/AgentBackupTab.js.map +0 -1
  1059. package/dist/components/agents/idePresets.js.map +0 -1
  1060. package/dist/components/ai/AIContextsTab.js.map +0 -1
  1061. package/dist/components/ai/AIKeysTab.js.map +0 -1
  1062. package/dist/components/ai/AIModeToggle.js.map +0 -1
  1063. package/dist/components/ai/AIOverviewTab.js.map +0 -1
  1064. package/dist/components/ai/AIPlanPanel.js.map +0 -1
  1065. package/dist/components/ai/AIPlaygroundTab.js.map +0 -1
  1066. package/dist/components/ai/AIPromptsTab.js.map +0 -1
  1067. package/dist/components/ai/AIProviderCredentialsCard.js.map +0 -1
  1068. package/dist/components/ai/AIQueueTab.js.map +0 -1
  1069. package/dist/components/ai/AISessionsTab.js.map +0 -1
  1070. package/dist/components/ai/AIStatsTab.js.map +0 -1
  1071. package/dist/components/ai/AITasksTab.js.map +0 -1
  1072. package/dist/components/ai/AITemplatesTab.js.map +0 -1
  1073. package/dist/components/ai/AiSectionTabs.js.map +0 -1
  1074. package/dist/components/ai/BridleTab.js.map +0 -1
  1075. package/dist/components/ai/ClaudeCredentialsCard.js.map +0 -1
  1076. package/dist/components/ai/InstructionFilesManager.js.map +0 -1
  1077. package/dist/components/ai/PluginHarnessPicker.js.map +0 -1
  1078. package/dist/components/ai/aiProviderCredentials.js.map +0 -1
  1079. package/dist/components/aliases/AliasManager.js.map +0 -1
  1080. package/dist/components/aliases/aliasReservedNames.js.map +0 -1
  1081. package/dist/components/analytics/AnalyticsBreakdownChart.js.map +0 -1
  1082. package/dist/components/analytics/AnalyticsBreakdownTable.js.map +0 -1
  1083. package/dist/components/analytics/AnalyticsEntityTabs.js.map +0 -1
  1084. package/dist/components/analytics/AnalyticsFilterBar.js.map +0 -1
  1085. package/dist/components/analytics/AnalyticsKpiGrid.js.map +0 -1
  1086. package/dist/components/analytics/AnalyticsTimeSeriesChart.js.map +0 -1
  1087. package/dist/components/analytics/SandboxAnalyticsSection.js.map +0 -1
  1088. package/dist/components/analytics/types.js.map +0 -1
  1089. package/dist/components/assistant/AIAssistantPanel.js.map +0 -1
  1090. package/dist/components/assistant/AiCreditsMeter.js.map +0 -1
  1091. package/dist/components/assistant/ProductMarkdown.js.map +0 -1
  1092. package/dist/components/assistant/assistantProduct.js.map +0 -1
  1093. package/dist/components/assistant/recordAdapters.js.map +0 -1
  1094. package/dist/components/audit/AuditExportButton.js.map +0 -1
  1095. package/dist/components/audit/AuditLogDetail.js.map +0 -1
  1096. package/dist/components/audit/AuditLogFilters.js.map +0 -1
  1097. package/dist/components/audit/AuditLogStats.js.map +0 -1
  1098. package/dist/components/audit/AuditLogTable.js.map +0 -1
  1099. package/dist/components/catalog/CatalogCard.js.map +0 -1
  1100. package/dist/components/catalog/CatalogForm.js.map +0 -1
  1101. package/dist/components/common/ActionAgentTargetNotice.js.map +0 -1
  1102. package/dist/components/common/CommandEditor.js.map +0 -1
  1103. package/dist/components/common/actionAgentTarget.js.map +0 -1
  1104. package/dist/components/common/commandHighlight.js.map +0 -1
  1105. package/dist/components/components/ComponentHealthCell.js.map +0 -1
  1106. package/dist/components/components/ComponentTierBadge.js.map +0 -1
  1107. package/dist/components/components/ComponentsTable.js.map +0 -1
  1108. package/dist/components/docs/DocsCompileStatus.js.map +0 -1
  1109. package/dist/components/docs/DocsEditPanel.js.map +0 -1
  1110. package/dist/components/docs/DocsEmptyState.js.map +0 -1
  1111. package/dist/components/docs/DocsFullScreenViewer.js.map +0 -1
  1112. package/dist/components/docs/DocsPageEditor.js.map +0 -1
  1113. package/dist/components/docs/DocsPageTree.js.map +0 -1
  1114. package/dist/components/docs/DocsPreviewPanel.js.map +0 -1
  1115. package/dist/components/docs/DocsRevisionHistory.js.map +0 -1
  1116. package/dist/components/docs/DocsSettingsPanel.js.map +0 -1
  1117. package/dist/components/docs/DocsTabPanel.js.map +0 -1
  1118. package/dist/components/docs/previewHtml.js.map +0 -1
  1119. package/dist/components/docs/types.js.map +0 -1
  1120. package/dist/components/gitops/CIDurationChart.js.map +0 -1
  1121. package/dist/components/gitops/CIFailedRuns.js.map +0 -1
  1122. package/dist/components/gitops/CIPipelineRunsTable.js.map +0 -1
  1123. package/dist/components/gitops/CISuccessRateChart.js.map +0 -1
  1124. package/dist/components/gitops/CITab.js.map +0 -1
  1125. package/dist/components/gitops/CIWorkflowList.js.map +0 -1
  1126. package/dist/components/gitops/GitOpsProviderPicker.js.map +0 -1
  1127. package/dist/components/gitops/GitOpsSetup.js.map +0 -1
  1128. package/dist/components/gitops/GitOpsSkeleton.js.map +0 -1
  1129. package/dist/components/gitops/GitOpsStatusBadge.js.map +0 -1
  1130. package/dist/components/gitops/ProviderIcon.js.map +0 -1
  1131. package/dist/components/gitops/RepoActivityCard.js.map +0 -1
  1132. package/dist/components/gitops/RepoIssuesCard.js.map +0 -1
  1133. package/dist/components/gitops/RepoLanguagesCard.js.map +0 -1
  1134. package/dist/components/gitops/RepoOverviewCard.js.map +0 -1
  1135. package/dist/components/gitops/RepoPullRequestsCard.js.map +0 -1
  1136. package/dist/components/gitops/RepoSecurityCard.js.map +0 -1
  1137. package/dist/components/gitops/RepoStatsTab.js.map +0 -1
  1138. package/dist/components/gitops/VibeGitOpsTab.js.map +0 -1
  1139. package/dist/components/gitops/types.js.map +0 -1
  1140. package/dist/components/graph/ConnectionPermissionsDialog.js.map +0 -1
  1141. package/dist/components/graph/MeshAgentNode.js.map +0 -1
  1142. package/dist/components/graph/MeshDeployWizard.js.map +0 -1
  1143. package/dist/components/graph/MeshGraphView.js.map +0 -1
  1144. package/dist/components/graph/MeshNodeActions.js.map +0 -1
  1145. package/dist/components/graph/MeshRequestPanel.js.map +0 -1
  1146. package/dist/components/graph/meshTypes.js.map +0 -1
  1147. package/dist/components/graph/nodeIcons.js.map +0 -1
  1148. package/dist/components/idp-components/ComponentCard.js.map +0 -1
  1149. package/dist/components/idp-components/ComponentForm.js.map +0 -1
  1150. package/dist/components/idp-components/DependencyGraphTab.js.map +0 -1
  1151. package/dist/components/logs/LogViewer.js.map +0 -1
  1152. package/dist/components/notes/NoteCard.js.map +0 -1
  1153. package/dist/components/notes/NoteEditor.js.map +0 -1
  1154. package/dist/components/notes/NoteList.js.map +0 -1
  1155. package/dist/components/notes/NotesTabPanel.js.map +0 -1
  1156. package/dist/components/overview/FleetActivityAreaChart.js.map +0 -1
  1157. package/dist/components/overview/FleetActivityChart.js.map +0 -1
  1158. package/dist/components/overview/FleetHealthCard.js.map +0 -1
  1159. package/dist/components/overview/QuickActionsCard.js.map +0 -1
  1160. package/dist/components/overview/useFleetAnalytics.js.map +0 -1
  1161. package/dist/components/plugins/AddTabDialog.js.map +0 -1
  1162. package/dist/components/plugins/FleetRolloutDialog.js.map +0 -1
  1163. package/dist/components/plugins/PluginIframeMount.js.map +0 -1
  1164. package/dist/components/plugins/useFleetPluginMatrix.js.map +0 -1
  1165. package/dist/components/scorecard/MetricTrend.js.map +0 -1
  1166. package/dist/components/scorecard/ScorecardEmptyState.js.map +0 -1
  1167. package/dist/components/scorecard/ScorecardPanel.js.map +0 -1
  1168. package/dist/components/scorecard/ScorecardsOverviewPanel.js.map +0 -1
  1169. package/dist/components/scorecard/scorecardConstants.js.map +0 -1
  1170. package/dist/components/security/SecurityRunButton.js.map +0 -1
  1171. package/dist/components/security/SecurityScanList.js.map +0 -1
  1172. package/dist/components/security/SecurityTabPanel.js.map +0 -1
  1173. package/dist/components/security/agentClient.js.map +0 -1
  1174. package/dist/components/security/hooks.js.map +0 -1
  1175. package/dist/components/security/types.js.map +0 -1
  1176. package/dist/components/sessions/CollaboratorsList.js.map +0 -1
  1177. package/dist/components/sessions/ControlStatusBar.js.map +0 -1
  1178. package/dist/components/sessions/EntityInfoPopover.js.map +0 -1
  1179. package/dist/components/sessions/SessionCard.js.map +0 -1
  1180. package/dist/components/sessions/SessionGroup.js.map +0 -1
  1181. package/dist/components/sessions/SessionInfoPanel.js.map +0 -1
  1182. package/dist/components/sessions/SessionList.js.map +0 -1
  1183. package/dist/components/sessions/SessionPublicLinkPanel.js.map +0 -1
  1184. package/dist/components/sessions/SessionShareDialog.js.map +0 -1
  1185. package/dist/components/sessions/SessionStatusBadge.js.map +0 -1
  1186. package/dist/components/sessions/SessionWorkbenchDrawer.js.map +0 -1
  1187. package/dist/components/sessions/SessionsCommandPalette.js.map +0 -1
  1188. package/dist/components/sessions/SharedTerminalPanel.js.map +0 -1
  1189. package/dist/components/sessions/ShortcutCheatsheet.js.map +0 -1
  1190. package/dist/components/sessions/TerminalIframe.js.map +0 -1
  1191. package/dist/components/sessions/TerminalPanel.js.map +0 -1
  1192. package/dist/components/sessions/groupSessions.js.map +0 -1
  1193. package/dist/components/sessions/sessionShortcuts.js.map +0 -1
  1194. package/dist/components/settings/AdvancedSection.js.map +0 -1
  1195. package/dist/components/settings/IdePreferencesSection.js.map +0 -1
  1196. package/dist/components/settings/NotificationsSection.js.map +0 -1
  1197. package/dist/components/settings/SettingsForm.js.map +0 -1
  1198. package/dist/components/settings/WorkspaceDefaultsSection.js.map +0 -1
  1199. package/dist/components/shared/ActionMenu.js.map +0 -1
  1200. package/dist/components/shared/AgentEventsConnector.js.map +0 -1
  1201. package/dist/components/shared/AgentSelector.js.map +0 -1
  1202. package/dist/components/shared/AgentSetupBanner.js.map +0 -1
  1203. package/dist/components/shared/Card.js.map +0 -1
  1204. package/dist/components/shared/ConfirmDialog.js.map +0 -1
  1205. package/dist/components/shared/EmptyState.js.map +0 -1
  1206. package/dist/components/shared/EnableRemoteTaskDialog.js.map +0 -1
  1207. package/dist/components/shared/EntityTagPicker.js.map +0 -1
  1208. package/dist/components/shared/EntityVibeLinkControl.js.map +0 -1
  1209. package/dist/components/shared/ErrorState.js.map +0 -1
  1210. package/dist/components/shared/FilterDropdown.js.map +0 -1
  1211. package/dist/components/shared/GetHelpButton.js.map +0 -1
  1212. package/dist/components/shared/InstallTabs.js.map +0 -1
  1213. package/dist/components/shared/LinkToVibePanel.js.map +0 -1
  1214. package/dist/components/shared/LoadingState.js.map +0 -1
  1215. package/dist/components/shared/MotionTabPanel.js.map +0 -1
  1216. package/dist/components/shared/NotificationToast.js.map +0 -1
  1217. package/dist/components/shared/PageHeader.js.map +0 -1
  1218. package/dist/components/shared/PageSkeleton.js.map +0 -1
  1219. package/dist/components/shared/PlatformIcon.js.map +0 -1
  1220. package/dist/components/shared/PluginGate.js.map +0 -1
  1221. package/dist/components/shared/PromptDialog.js.map +0 -1
  1222. package/dist/components/shared/QuotaExhaustedDialog.js.map +0 -1
  1223. package/dist/components/shared/RequireAgentReachable.js.map +0 -1
  1224. package/dist/components/shared/SearchInput.js.map +0 -1
  1225. package/dist/components/shared/SearchableSelect.js.map +0 -1
  1226. package/dist/components/shared/SelectionCheckbox.js.map +0 -1
  1227. package/dist/components/shared/SessionNotificationBanner.js.map +0 -1
  1228. package/dist/components/shared/StatCard.js.map +0 -1
  1229. package/dist/components/shared/StatusBadge.js.map +0 -1
  1230. package/dist/components/shared/TagFilter.js.map +0 -1
  1231. package/dist/components/shared/cardMotion.js.map +0 -1
  1232. package/dist/components/shared/platformIconPaths.js.map +0 -1
  1233. package/dist/components/sharing/EntityShareButton.js.map +0 -1
  1234. package/dist/components/sharing/NoteShareDialog.js.map +0 -1
  1235. package/dist/components/sharing/SharedWithMePanel.js.map +0 -1
  1236. package/dist/components/sharing/VibeShareButton.js.map +0 -1
  1237. package/dist/components/sharing/entityShareOps.js.map +0 -1
  1238. package/dist/components/sharing/shareControllerTypes.js.map +0 -1
  1239. package/dist/components/sharing/shareRegistry.js.map +0 -1
  1240. package/dist/components/sharing/useEntityShareController.js.map +0 -1
  1241. package/dist/components/sharing/useNoteShareController.js.map +0 -1
  1242. package/dist/components/sharing/useVibeShareController.js.map +0 -1
  1243. package/dist/components/targets/TargetCard.js.map +0 -1
  1244. package/dist/components/templates/PublishTemplateForm.js.map +0 -1
  1245. package/dist/components/templates/TemplateCard.js.map +0 -1
  1246. package/dist/components/templates/TemplateVariableEditor.js.map +0 -1
  1247. package/dist/components/templates/TemplateWizard.js.map +0 -1
  1248. package/dist/components/tunnels/DomainVerificationBadge.js.map +0 -1
  1249. package/dist/components/tunnels/ProviderBadge.js.map +0 -1
  1250. package/dist/components/tunnels/TunnelCard.js.map +0 -1
  1251. package/dist/components/tunnels/TunnelConnectionCard.js.map +0 -1
  1252. package/dist/components/tunnels/TunnelCopyButton.js.map +0 -1
  1253. package/dist/components/tunnels/TunnelCreateWizard.js.map +0 -1
  1254. package/dist/components/tunnels/TunnelMetricTiles.js.map +0 -1
  1255. package/dist/components/tunnels/TunnelPublicAccessPanel.js.map +0 -1
  1256. package/dist/components/tunnels/TunnelSparkline.js.map +0 -1
  1257. package/dist/components/tunnels/TunnelStatusBadge.js.map +0 -1
  1258. package/dist/components/tunnels/tunnelEndpoints.js.map +0 -1
  1259. package/dist/components/tunnels/tunnelMetrics.js.map +0 -1
  1260. package/dist/components/vibe/VibeAgentEmptyState.js.map +0 -1
  1261. package/dist/components/vibe/VibeAgentSwitcher.js.map +0 -1
  1262. package/dist/components/vibe/VibeEnvVarsPanel.js.map +0 -1
  1263. package/dist/components/vibe/VibeLinkedEntitiesPanel.js.map +0 -1
  1264. package/dist/components/vibe/VibeLlmContextAdminPanel.js.map +0 -1
  1265. package/dist/components/vibe/VibeLlmContextTabPanel.js.map +0 -1
  1266. package/dist/components/vibecalendar/LogsDrawer.js.map +0 -1
  1267. package/dist/components/vibecalendar/ScheduleTaskModal.js.map +0 -1
  1268. package/dist/components/vibecalendar/VibeCalAgendaView.js.map +0 -1
  1269. package/dist/components/vibecalendar/VibeCalDayView.js.map +0 -1
  1270. package/dist/components/vibecalendar/VibeCalMonthView.js.map +0 -1
  1271. package/dist/components/vibecalendar/VibeCalWeekView.js.map +0 -1
  1272. package/dist/components/vibecalendar/VibeCalendarHeader.js.map +0 -1
  1273. package/dist/components/vibecalendar/VibeTaskBlock.js.map +0 -1
  1274. package/dist/components/vibecalendar/expandOccurrences.js.map +0 -1
  1275. package/dist/components/vibecalendar/types.js.map +0 -1
  1276. package/dist/components/vibedeck/VibeDeckButtonForm.js.map +0 -1
  1277. package/dist/components/vibedeck/VibeDeckButtonTile.js.map +0 -1
  1278. package/dist/components/vibedeck/VibeDeckExecutionLog.js.map +0 -1
  1279. package/dist/components/vibedeck/VibeDeckForm.js.map +0 -1
  1280. package/dist/components/vibedeck/VibeDeckGrid.js.map +0 -1
  1281. package/dist/components/vibedeck/VibeDeckPublicLinkPanel.js.map +0 -1
  1282. package/dist/components/vibedeck/VibeDeckShareDialog.js.map +0 -1
  1283. package/dist/components/vibedeck/VibeDeckSwitcher.js.map +0 -1
  1284. package/dist/components/vibes/DeleteVibeDialog.js.map +0 -1
  1285. package/dist/components/vibes/VibeCard.js.map +0 -1
  1286. package/dist/components/vibes/VibeList.js.map +0 -1
  1287. package/dist/components/vibes/icons.js.map +0 -1
  1288. package/dist/components/webhooks/types.js.map +0 -1
  1289. package/dist/config/assistantUsecases.js.map +0 -1
  1290. package/dist/config/index.js.map +0 -1
  1291. package/dist/constants/aiTabs.js.map +0 -1
  1292. package/dist/constants/permissions.js.map +0 -1
  1293. package/dist/constants/pluginCatalog.js.map +0 -1
  1294. package/dist/generated/wspace-operations.js.map +0 -1
  1295. package/dist/generated/wspace-types.js.map +0 -1
  1296. package/dist/hooks/useActiveAgentProfile.js.map +0 -1
  1297. package/dist/hooks/useAgentConnectivity.js.map +0 -1
  1298. package/dist/hooks/useAgentEvents.js.map +0 -1
  1299. package/dist/hooks/useAgentManagerKeyboard.js.map +0 -1
  1300. package/dist/hooks/useAgentManagerStreaming.js.map +0 -1
  1301. package/dist/hooks/useAiCreditsQuota.js.map +0 -1
  1302. package/dist/hooks/useCachedInitialData.js.map +0 -1
  1303. package/dist/hooks/useDraftEntityTags.js.map +0 -1
  1304. package/dist/hooks/useEntityTags.js.map +0 -1
  1305. package/dist/hooks/useGitops.js.map +0 -1
  1306. package/dist/hooks/useInitialDataLoader.js.map +0 -1
  1307. package/dist/hooks/useOfferedAssistantMode.js.map +0 -1
  1308. package/dist/hooks/useOpenAssistantHelp.js.map +0 -1
  1309. package/dist/hooks/usePluginAvailability.js.map +0 -1
  1310. package/dist/hooks/useQueryBackedTab.js.map +0 -1
  1311. package/dist/hooks/useTenantContext.js.map +0 -1
  1312. package/dist/hooks/useTerminalCapabilityUrl.js.map +0 -1
  1313. package/dist/hooks/useToggleAgentBookmark.js.map +0 -1
  1314. package/dist/hooks/useVoiceMode.js.map +0 -1
  1315. package/dist/hooks/useWorkspaceWriteAccess.js.map +0 -1
  1316. package/dist/lib/apolloCache.js.map +0 -1
  1317. package/dist/lib/toast.js.map +0 -1
  1318. package/dist/lib/vibeFeatures.js.map +0 -1
  1319. package/dist/node_modules/@apollo/client/errors/CombinedGraphQLErrors.js.map +0 -1
  1320. package/dist/node_modules/@apollo/client/errors/ServerError.js.map +0 -1
  1321. package/dist/node_modules/@apollo/client/errors/ServerParseError.js.map +0 -1
  1322. package/dist/node_modules/@apollo/client/errors/utils.js.map +0 -1
  1323. package/dist/node_modules/@apollo/client/link/batch/batchLink.js.map +0 -1
  1324. package/dist/node_modules/@apollo/client/link/batch/batching.js.map +0 -1
  1325. package/dist/node_modules/@apollo/client/link/batch-http/BaseBatchHttpLink.js.map +0 -1
  1326. package/dist/node_modules/@apollo/client/link/batch-http/batchHttpLink.js.map +0 -1
  1327. package/dist/node_modules/@apollo/client/link/client-awareness/ClientAwarenessLink.js.map +0 -1
  1328. package/dist/node_modules/@apollo/client/link/core/ApolloLink.js.map +0 -1
  1329. package/dist/node_modules/@apollo/client/link/http/checkFetcher.js.map +0 -1
  1330. package/dist/node_modules/@apollo/client/link/http/parseAndCheckHttpResponse.js.map +0 -1
  1331. package/dist/node_modules/@apollo/client/link/http/selectHttpOptionsAndBody.js.map +0 -1
  1332. package/dist/node_modules/@apollo/client/link/http/selectURI.js.map +0 -1
  1333. package/dist/node_modules/@apollo/client/link/utils/createOperation.js.map +0 -1
  1334. package/dist/node_modules/@apollo/client/link/utils/filterOperationVariables.js.map +0 -1
  1335. package/dist/node_modules/@apollo/client/utilities/caching/sizes.js.map +0 -1
  1336. package/dist/node_modules/@apollo/client/utilities/graphql/print.js.map +0 -1
  1337. package/dist/node_modules/@apollo/client/utilities/internal/caches.js.map +0 -1
  1338. package/dist/node_modules/@apollo/client/utilities/internal/checkDocument.js.map +0 -1
  1339. package/dist/node_modules/@apollo/client/utilities/internal/compact.js.map +0 -1
  1340. package/dist/node_modules/@apollo/client/utilities/internal/getMainDefinition.js.map +0 -1
  1341. package/dist/node_modules/@apollo/client/utilities/internal/getMemoryInternals.js.map +0 -1
  1342. package/dist/node_modules/@apollo/client/utilities/internal/getOperationDefinition.js.map +0 -1
  1343. package/dist/node_modules/@apollo/client/utilities/internal/getOperationName.js.map +0 -1
  1344. package/dist/node_modules/@apollo/client/utilities/internal/globals/global.js.map +0 -1
  1345. package/dist/node_modules/@apollo/client/utilities/internal/globals/maybe.js.map +0 -1
  1346. package/dist/node_modules/@apollo/client/utilities/internal/makeUniqueId.js.map +0 -1
  1347. package/dist/node_modules/@apollo/client/utilities/internal/memoize.js.map +0 -1
  1348. package/dist/node_modules/@apollo/client/utilities/internal/stringifyForDisplay.js.map +0 -1
  1349. package/dist/node_modules/@apollo/client/utilities/invariant/index.js.map +0 -1
  1350. package/dist/node_modules/@apollo/client/version.js.map +0 -1
  1351. package/dist/node_modules/@wry/caches/lib/weak.js.map +0 -1
  1352. package/dist/node_modules/@wry/trie/lib/index.js.map +0 -1
  1353. package/dist/node_modules/clsx/dist/clsx.js.map +0 -1
  1354. package/dist/node_modules/d3-array/src/ascending.js.map +0 -1
  1355. package/dist/node_modules/d3-array/src/bisect.js.map +0 -1
  1356. package/dist/node_modules/d3-array/src/bisector.js.map +0 -1
  1357. package/dist/node_modules/d3-array/src/descending.js.map +0 -1
  1358. package/dist/node_modules/d3-array/src/max.js.map +0 -1
  1359. package/dist/node_modules/d3-array/src/min.js.map +0 -1
  1360. package/dist/node_modules/d3-array/src/number.js.map +0 -1
  1361. package/dist/node_modules/d3-array/src/quantile.js.map +0 -1
  1362. package/dist/node_modules/d3-array/src/quickselect.js.map +0 -1
  1363. package/dist/node_modules/d3-array/src/range.js.map +0 -1
  1364. package/dist/node_modules/d3-array/src/sort.js.map +0 -1
  1365. package/dist/node_modules/d3-array/src/ticks.js.map +0 -1
  1366. package/dist/node_modules/d3-color/src/color.js.map +0 -1
  1367. package/dist/node_modules/d3-color/src/define.js.map +0 -1
  1368. package/dist/node_modules/d3-format/src/defaultLocale.js.map +0 -1
  1369. package/dist/node_modules/d3-format/src/exponent.js.map +0 -1
  1370. package/dist/node_modules/d3-format/src/formatDecimal.js.map +0 -1
  1371. package/dist/node_modules/d3-format/src/formatGroup.js.map +0 -1
  1372. package/dist/node_modules/d3-format/src/formatNumerals.js.map +0 -1
  1373. package/dist/node_modules/d3-format/src/formatPrefixAuto.js.map +0 -1
  1374. package/dist/node_modules/d3-format/src/formatRounded.js.map +0 -1
  1375. package/dist/node_modules/d3-format/src/formatSpecifier.js.map +0 -1
  1376. package/dist/node_modules/d3-format/src/formatTrim.js.map +0 -1
  1377. package/dist/node_modules/d3-format/src/formatTypes.js.map +0 -1
  1378. package/dist/node_modules/d3-format/src/identity.js.map +0 -1
  1379. package/dist/node_modules/d3-format/src/locale.js.map +0 -1
  1380. package/dist/node_modules/d3-format/src/precisionFixed.js.map +0 -1
  1381. package/dist/node_modules/d3-format/src/precisionPrefix.js.map +0 -1
  1382. package/dist/node_modules/d3-format/src/precisionRound.js.map +0 -1
  1383. package/dist/node_modules/d3-interpolate/src/array.js.map +0 -1
  1384. package/dist/node_modules/d3-interpolate/src/basis.js.map +0 -1
  1385. package/dist/node_modules/d3-interpolate/src/basisClosed.js.map +0 -1
  1386. package/dist/node_modules/d3-interpolate/src/color.js.map +0 -1
  1387. package/dist/node_modules/d3-interpolate/src/constant.js.map +0 -1
  1388. package/dist/node_modules/d3-interpolate/src/date.js.map +0 -1
  1389. package/dist/node_modules/d3-interpolate/src/number.js.map +0 -1
  1390. package/dist/node_modules/d3-interpolate/src/numberArray.js.map +0 -1
  1391. package/dist/node_modules/d3-interpolate/src/object.js.map +0 -1
  1392. package/dist/node_modules/d3-interpolate/src/piecewise.js.map +0 -1
  1393. package/dist/node_modules/d3-interpolate/src/rgb.js.map +0 -1
  1394. package/dist/node_modules/d3-interpolate/src/round.js.map +0 -1
  1395. package/dist/node_modules/d3-interpolate/src/string.js.map +0 -1
  1396. package/dist/node_modules/d3-interpolate/src/value.js.map +0 -1
  1397. package/dist/node_modules/d3-path/src/path.js.map +0 -1
  1398. package/dist/node_modules/d3-scale/src/band.js.map +0 -1
  1399. package/dist/node_modules/d3-scale/src/constant.js.map +0 -1
  1400. package/dist/node_modules/d3-scale/src/continuous.js.map +0 -1
  1401. package/dist/node_modules/d3-scale/src/diverging.js.map +0 -1
  1402. package/dist/node_modules/d3-scale/src/identity.js.map +0 -1
  1403. package/dist/node_modules/d3-scale/src/init.js.map +0 -1
  1404. package/dist/node_modules/d3-scale/src/linear.js.map +0 -1
  1405. package/dist/node_modules/d3-scale/src/log.js.map +0 -1
  1406. package/dist/node_modules/d3-scale/src/nice.js.map +0 -1
  1407. package/dist/node_modules/d3-scale/src/number.js.map +0 -1
  1408. package/dist/node_modules/d3-scale/src/ordinal.js.map +0 -1
  1409. package/dist/node_modules/d3-scale/src/pow.js.map +0 -1
  1410. package/dist/node_modules/d3-scale/src/quantile.js.map +0 -1
  1411. package/dist/node_modules/d3-scale/src/quantize.js.map +0 -1
  1412. package/dist/node_modules/d3-scale/src/radial.js.map +0 -1
  1413. package/dist/node_modules/d3-scale/src/sequential.js.map +0 -1
  1414. package/dist/node_modules/d3-scale/src/sequentialQuantile.js.map +0 -1
  1415. package/dist/node_modules/d3-scale/src/symlog.js.map +0 -1
  1416. package/dist/node_modules/d3-scale/src/threshold.js.map +0 -1
  1417. package/dist/node_modules/d3-scale/src/tickFormat.js.map +0 -1
  1418. package/dist/node_modules/d3-scale/src/time.js.map +0 -1
  1419. package/dist/node_modules/d3-scale/src/utcTime.js.map +0 -1
  1420. package/dist/node_modules/d3-shape/src/area.js.map +0 -1
  1421. package/dist/node_modules/d3-shape/src/array.js.map +0 -1
  1422. package/dist/node_modules/d3-shape/src/constant.js.map +0 -1
  1423. package/dist/node_modules/d3-shape/src/curve/basis.js.map +0 -1
  1424. package/dist/node_modules/d3-shape/src/curve/basisClosed.js.map +0 -1
  1425. package/dist/node_modules/d3-shape/src/curve/basisOpen.js.map +0 -1
  1426. package/dist/node_modules/d3-shape/src/curve/bump.js.map +0 -1
  1427. package/dist/node_modules/d3-shape/src/curve/linear.js.map +0 -1
  1428. package/dist/node_modules/d3-shape/src/curve/linearClosed.js.map +0 -1
  1429. package/dist/node_modules/d3-shape/src/curve/monotone.js.map +0 -1
  1430. package/dist/node_modules/d3-shape/src/curve/natural.js.map +0 -1
  1431. package/dist/node_modules/d3-shape/src/curve/step.js.map +0 -1
  1432. package/dist/node_modules/d3-shape/src/line.js.map +0 -1
  1433. package/dist/node_modules/d3-shape/src/math.js.map +0 -1
  1434. package/dist/node_modules/d3-shape/src/noop.js.map +0 -1
  1435. package/dist/node_modules/d3-shape/src/offset/expand.js.map +0 -1
  1436. package/dist/node_modules/d3-shape/src/offset/none.js.map +0 -1
  1437. package/dist/node_modules/d3-shape/src/offset/silhouette.js.map +0 -1
  1438. package/dist/node_modules/d3-shape/src/offset/wiggle.js.map +0 -1
  1439. package/dist/node_modules/d3-shape/src/order/none.js.map +0 -1
  1440. package/dist/node_modules/d3-shape/src/path.js.map +0 -1
  1441. package/dist/node_modules/d3-shape/src/point.js.map +0 -1
  1442. package/dist/node_modules/d3-shape/src/stack.js.map +0 -1
  1443. package/dist/node_modules/d3-shape/src/symbol/circle.js.map +0 -1
  1444. package/dist/node_modules/d3-shape/src/symbol/cross.js.map +0 -1
  1445. package/dist/node_modules/d3-shape/src/symbol/diamond.js.map +0 -1
  1446. package/dist/node_modules/d3-shape/src/symbol/square.js.map +0 -1
  1447. package/dist/node_modules/d3-shape/src/symbol/star.js.map +0 -1
  1448. package/dist/node_modules/d3-shape/src/symbol/triangle.js.map +0 -1
  1449. package/dist/node_modules/d3-shape/src/symbol/wye.js.map +0 -1
  1450. package/dist/node_modules/d3-shape/src/symbol.js.map +0 -1
  1451. package/dist/node_modules/d3-time/src/day.js.map +0 -1
  1452. package/dist/node_modules/d3-time/src/duration.js.map +0 -1
  1453. package/dist/node_modules/d3-time/src/hour.js.map +0 -1
  1454. package/dist/node_modules/d3-time/src/interval.js.map +0 -1
  1455. package/dist/node_modules/d3-time/src/millisecond.js.map +0 -1
  1456. package/dist/node_modules/d3-time/src/minute.js.map +0 -1
  1457. package/dist/node_modules/d3-time/src/month.js.map +0 -1
  1458. package/dist/node_modules/d3-time/src/second.js.map +0 -1
  1459. package/dist/node_modules/d3-time/src/ticks.js.map +0 -1
  1460. package/dist/node_modules/d3-time/src/week.js.map +0 -1
  1461. package/dist/node_modules/d3-time/src/year.js.map +0 -1
  1462. package/dist/node_modules/d3-time-format/src/defaultLocale.js.map +0 -1
  1463. package/dist/node_modules/d3-time-format/src/locale.js.map +0 -1
  1464. package/dist/node_modules/dagre/index.js.map +0 -1
  1465. package/dist/node_modules/dagre/lib/acyclic.js.map +0 -1
  1466. package/dist/node_modules/dagre/lib/add-border-segments.js.map +0 -1
  1467. package/dist/node_modules/dagre/lib/coordinate-system.js.map +0 -1
  1468. package/dist/node_modules/dagre/lib/data/list.js.map +0 -1
  1469. package/dist/node_modules/dagre/lib/debug.js.map +0 -1
  1470. package/dist/node_modules/dagre/lib/graphlib.js.map +0 -1
  1471. package/dist/node_modules/dagre/lib/greedy-fas.js.map +0 -1
  1472. package/dist/node_modules/dagre/lib/layout.js.map +0 -1
  1473. package/dist/node_modules/dagre/lib/lodash.js.map +0 -1
  1474. package/dist/node_modules/dagre/lib/nesting-graph.js.map +0 -1
  1475. package/dist/node_modules/dagre/lib/normalize.js.map +0 -1
  1476. package/dist/node_modules/dagre/lib/order/add-subgraph-constraints.js.map +0 -1
  1477. package/dist/node_modules/dagre/lib/order/barycenter.js.map +0 -1
  1478. package/dist/node_modules/dagre/lib/order/build-layer-graph.js.map +0 -1
  1479. package/dist/node_modules/dagre/lib/order/cross-count.js.map +0 -1
  1480. package/dist/node_modules/dagre/lib/order/index.js.map +0 -1
  1481. package/dist/node_modules/dagre/lib/order/init-order.js.map +0 -1
  1482. package/dist/node_modules/dagre/lib/order/resolve-conflicts.js.map +0 -1
  1483. package/dist/node_modules/dagre/lib/order/sort-subgraph.js.map +0 -1
  1484. package/dist/node_modules/dagre/lib/order/sort.js.map +0 -1
  1485. package/dist/node_modules/dagre/lib/parent-dummy-chains.js.map +0 -1
  1486. package/dist/node_modules/dagre/lib/position/bk.js.map +0 -1
  1487. package/dist/node_modules/dagre/lib/position/index.js.map +0 -1
  1488. package/dist/node_modules/dagre/lib/rank/feasible-tree.js.map +0 -1
  1489. package/dist/node_modules/dagre/lib/rank/index.js.map +0 -1
  1490. package/dist/node_modules/dagre/lib/rank/network-simplex.js.map +0 -1
  1491. package/dist/node_modules/dagre/lib/rank/util.js.map +0 -1
  1492. package/dist/node_modules/dagre/lib/util.js.map +0 -1
  1493. package/dist/node_modules/dagre/lib/version.js.map +0 -1
  1494. package/dist/node_modules/decimal.js-light/decimal.js.map +0 -1
  1495. package/dist/node_modules/eventemitter3/index.js.map +0 -1
  1496. package/dist/node_modules/fast-equals/dist/es/index.js.map +0 -1
  1497. package/dist/node_modules/graphlib/index.js.map +0 -1
  1498. package/dist/node_modules/graphlib/lib/alg/components.js.map +0 -1
  1499. package/dist/node_modules/graphlib/lib/alg/dfs.js.map +0 -1
  1500. package/dist/node_modules/graphlib/lib/alg/dijkstra-all.js.map +0 -1
  1501. package/dist/node_modules/graphlib/lib/alg/dijkstra.js.map +0 -1
  1502. package/dist/node_modules/graphlib/lib/alg/find-cycles.js.map +0 -1
  1503. package/dist/node_modules/graphlib/lib/alg/floyd-warshall.js.map +0 -1
  1504. package/dist/node_modules/graphlib/lib/alg/index.js.map +0 -1
  1505. package/dist/node_modules/graphlib/lib/alg/is-acyclic.js.map +0 -1
  1506. package/dist/node_modules/graphlib/lib/alg/postorder.js.map +0 -1
  1507. package/dist/node_modules/graphlib/lib/alg/preorder.js.map +0 -1
  1508. package/dist/node_modules/graphlib/lib/alg/prim.js.map +0 -1
  1509. package/dist/node_modules/graphlib/lib/alg/tarjan.js.map +0 -1
  1510. package/dist/node_modules/graphlib/lib/alg/topsort.js.map +0 -1
  1511. package/dist/node_modules/graphlib/lib/data/priority-queue.js.map +0 -1
  1512. package/dist/node_modules/graphlib/lib/graph.js.map +0 -1
  1513. package/dist/node_modules/graphlib/lib/index.js.map +0 -1
  1514. package/dist/node_modules/graphlib/lib/json.js.map +0 -1
  1515. package/dist/node_modules/graphlib/lib/lodash.js.map +0 -1
  1516. package/dist/node_modules/graphlib/lib/version.js.map +0 -1
  1517. package/dist/node_modules/internmap/src/index.js.map +0 -1
  1518. package/dist/node_modules/lodash/_DataView.js.map +0 -1
  1519. package/dist/node_modules/lodash/_Hash.js.map +0 -1
  1520. package/dist/node_modules/lodash/_ListCache.js.map +0 -1
  1521. package/dist/node_modules/lodash/_Map.js.map +0 -1
  1522. package/dist/node_modules/lodash/_MapCache.js.map +0 -1
  1523. package/dist/node_modules/lodash/_Promise.js.map +0 -1
  1524. package/dist/node_modules/lodash/_Set.js.map +0 -1
  1525. package/dist/node_modules/lodash/_SetCache.js.map +0 -1
  1526. package/dist/node_modules/lodash/_Stack.js.map +0 -1
  1527. package/dist/node_modules/lodash/_Symbol.js.map +0 -1
  1528. package/dist/node_modules/lodash/_Uint8Array.js.map +0 -1
  1529. package/dist/node_modules/lodash/_WeakMap.js.map +0 -1
  1530. package/dist/node_modules/lodash/_apply.js.map +0 -1
  1531. package/dist/node_modules/lodash/_arrayEach.js.map +0 -1
  1532. package/dist/node_modules/lodash/_arrayEvery.js.map +0 -1
  1533. package/dist/node_modules/lodash/_arrayFilter.js.map +0 -1
  1534. package/dist/node_modules/lodash/_arrayIncludes.js.map +0 -1
  1535. package/dist/node_modules/lodash/_arrayIncludesWith.js.map +0 -1
  1536. package/dist/node_modules/lodash/_arrayLikeKeys.js.map +0 -1
  1537. package/dist/node_modules/lodash/_arrayMap.js.map +0 -1
  1538. package/dist/node_modules/lodash/_arrayPush.js.map +0 -1
  1539. package/dist/node_modules/lodash/_arrayReduce.js.map +0 -1
  1540. package/dist/node_modules/lodash/_arraySome.js.map +0 -1
  1541. package/dist/node_modules/lodash/_asciiSize.js.map +0 -1
  1542. package/dist/node_modules/lodash/_asciiToArray.js.map +0 -1
  1543. package/dist/node_modules/lodash/_assignMergeValue.js.map +0 -1
  1544. package/dist/node_modules/lodash/_assignValue.js.map +0 -1
  1545. package/dist/node_modules/lodash/_assocIndexOf.js.map +0 -1
  1546. package/dist/node_modules/lodash/_baseAssign.js.map +0 -1
  1547. package/dist/node_modules/lodash/_baseAssignIn.js.map +0 -1
  1548. package/dist/node_modules/lodash/_baseAssignValue.js.map +0 -1
  1549. package/dist/node_modules/lodash/_baseClone.js.map +0 -1
  1550. package/dist/node_modules/lodash/_baseCreate.js.map +0 -1
  1551. package/dist/node_modules/lodash/_baseEach.js.map +0 -1
  1552. package/dist/node_modules/lodash/_baseEvery.js.map +0 -1
  1553. package/dist/node_modules/lodash/_baseExtremum.js.map +0 -1
  1554. package/dist/node_modules/lodash/_baseFilter.js.map +0 -1
  1555. package/dist/node_modules/lodash/_baseFindIndex.js.map +0 -1
  1556. package/dist/node_modules/lodash/_baseFlatten.js.map +0 -1
  1557. package/dist/node_modules/lodash/_baseFor.js.map +0 -1
  1558. package/dist/node_modules/lodash/_baseForOwn.js.map +0 -1
  1559. package/dist/node_modules/lodash/_baseGet.js.map +0 -1
  1560. package/dist/node_modules/lodash/_baseGetAllKeys.js.map +0 -1
  1561. package/dist/node_modules/lodash/_baseGetTag.js.map +0 -1
  1562. package/dist/node_modules/lodash/_baseGt.js.map +0 -1
  1563. package/dist/node_modules/lodash/_baseHas.js.map +0 -1
  1564. package/dist/node_modules/lodash/_baseHasIn.js.map +0 -1
  1565. package/dist/node_modules/lodash/_baseIndexOf.js.map +0 -1
  1566. package/dist/node_modules/lodash/_baseIsArguments.js.map +0 -1
  1567. package/dist/node_modules/lodash/_baseIsEqual.js.map +0 -1
  1568. package/dist/node_modules/lodash/_baseIsEqualDeep.js.map +0 -1
  1569. package/dist/node_modules/lodash/_baseIsMap.js.map +0 -1
  1570. package/dist/node_modules/lodash/_baseIsMatch.js.map +0 -1
  1571. package/dist/node_modules/lodash/_baseIsNaN.js.map +0 -1
  1572. package/dist/node_modules/lodash/_baseIsNative.js.map +0 -1
  1573. package/dist/node_modules/lodash/_baseIsSet.js.map +0 -1
  1574. package/dist/node_modules/lodash/_baseIsTypedArray.js.map +0 -1
  1575. package/dist/node_modules/lodash/_baseIteratee.js.map +0 -1
  1576. package/dist/node_modules/lodash/_baseKeys.js.map +0 -1
  1577. package/dist/node_modules/lodash/_baseKeysIn.js.map +0 -1
  1578. package/dist/node_modules/lodash/_baseLt.js.map +0 -1
  1579. package/dist/node_modules/lodash/_baseMap.js.map +0 -1
  1580. package/dist/node_modules/lodash/_baseMatches.js.map +0 -1
  1581. package/dist/node_modules/lodash/_baseMatchesProperty.js.map +0 -1
  1582. package/dist/node_modules/lodash/_baseMerge.js.map +0 -1
  1583. package/dist/node_modules/lodash/_baseMergeDeep.js.map +0 -1
  1584. package/dist/node_modules/lodash/_baseOrderBy.js.map +0 -1
  1585. package/dist/node_modules/lodash/_basePick.js.map +0 -1
  1586. package/dist/node_modules/lodash/_basePickBy.js.map +0 -1
  1587. package/dist/node_modules/lodash/_baseProperty.js.map +0 -1
  1588. package/dist/node_modules/lodash/_basePropertyDeep.js.map +0 -1
  1589. package/dist/node_modules/lodash/_baseRange.js.map +0 -1
  1590. package/dist/node_modules/lodash/_baseReduce.js.map +0 -1
  1591. package/dist/node_modules/lodash/_baseRest.js.map +0 -1
  1592. package/dist/node_modules/lodash/_baseSet.js.map +0 -1
  1593. package/dist/node_modules/lodash/_baseSetToString.js.map +0 -1
  1594. package/dist/node_modules/lodash/_baseSlice.js.map +0 -1
  1595. package/dist/node_modules/lodash/_baseSome.js.map +0 -1
  1596. package/dist/node_modules/lodash/_baseSortBy.js.map +0 -1
  1597. package/dist/node_modules/lodash/_baseTimes.js.map +0 -1
  1598. package/dist/node_modules/lodash/_baseToString.js.map +0 -1
  1599. package/dist/node_modules/lodash/_baseTrim.js.map +0 -1
  1600. package/dist/node_modules/lodash/_baseUnary.js.map +0 -1
  1601. package/dist/node_modules/lodash/_baseUniq.js.map +0 -1
  1602. package/dist/node_modules/lodash/_baseValues.js.map +0 -1
  1603. package/dist/node_modules/lodash/_baseZipObject.js.map +0 -1
  1604. package/dist/node_modules/lodash/_cacheHas.js.map +0 -1
  1605. package/dist/node_modules/lodash/_castFunction.js.map +0 -1
  1606. package/dist/node_modules/lodash/_castPath.js.map +0 -1
  1607. package/dist/node_modules/lodash/_castSlice.js.map +0 -1
  1608. package/dist/node_modules/lodash/_cloneArrayBuffer.js.map +0 -1
  1609. package/dist/node_modules/lodash/_cloneBuffer.js.map +0 -1
  1610. package/dist/node_modules/lodash/_cloneDataView.js.map +0 -1
  1611. package/dist/node_modules/lodash/_cloneRegExp.js.map +0 -1
  1612. package/dist/node_modules/lodash/_cloneSymbol.js.map +0 -1
  1613. package/dist/node_modules/lodash/_cloneTypedArray.js.map +0 -1
  1614. package/dist/node_modules/lodash/_compareAscending.js.map +0 -1
  1615. package/dist/node_modules/lodash/_compareMultiple.js.map +0 -1
  1616. package/dist/node_modules/lodash/_copyArray.js.map +0 -1
  1617. package/dist/node_modules/lodash/_copyObject.js.map +0 -1
  1618. package/dist/node_modules/lodash/_copySymbols.js.map +0 -1
  1619. package/dist/node_modules/lodash/_copySymbolsIn.js.map +0 -1
  1620. package/dist/node_modules/lodash/_coreJsData.js.map +0 -1
  1621. package/dist/node_modules/lodash/_createAssigner.js.map +0 -1
  1622. package/dist/node_modules/lodash/_createBaseEach.js.map +0 -1
  1623. package/dist/node_modules/lodash/_createBaseFor.js.map +0 -1
  1624. package/dist/node_modules/lodash/_createCaseFirst.js.map +0 -1
  1625. package/dist/node_modules/lodash/_createFind.js.map +0 -1
  1626. package/dist/node_modules/lodash/_createRange.js.map +0 -1
  1627. package/dist/node_modules/lodash/_createSet.js.map +0 -1
  1628. package/dist/node_modules/lodash/_defineProperty.js.map +0 -1
  1629. package/dist/node_modules/lodash/_equalArrays.js.map +0 -1
  1630. package/dist/node_modules/lodash/_equalByTag.js.map +0 -1
  1631. package/dist/node_modules/lodash/_equalObjects.js.map +0 -1
  1632. package/dist/node_modules/lodash/_flatRest.js.map +0 -1
  1633. package/dist/node_modules/lodash/_freeGlobal.js.map +0 -1
  1634. package/dist/node_modules/lodash/_getAllKeys.js.map +0 -1
  1635. package/dist/node_modules/lodash/_getAllKeysIn.js.map +0 -1
  1636. package/dist/node_modules/lodash/_getMapData.js.map +0 -1
  1637. package/dist/node_modules/lodash/_getMatchData.js.map +0 -1
  1638. package/dist/node_modules/lodash/_getNative.js.map +0 -1
  1639. package/dist/node_modules/lodash/_getPrototype.js.map +0 -1
  1640. package/dist/node_modules/lodash/_getRawTag.js.map +0 -1
  1641. package/dist/node_modules/lodash/_getSymbols.js.map +0 -1
  1642. package/dist/node_modules/lodash/_getSymbolsIn.js.map +0 -1
  1643. package/dist/node_modules/lodash/_getTag.js.map +0 -1
  1644. package/dist/node_modules/lodash/_getValue.js.map +0 -1
  1645. package/dist/node_modules/lodash/_hasPath.js.map +0 -1
  1646. package/dist/node_modules/lodash/_hasUnicode.js.map +0 -1
  1647. package/dist/node_modules/lodash/_hashClear.js.map +0 -1
  1648. package/dist/node_modules/lodash/_hashDelete.js.map +0 -1
  1649. package/dist/node_modules/lodash/_hashGet.js.map +0 -1
  1650. package/dist/node_modules/lodash/_hashHas.js.map +0 -1
  1651. package/dist/node_modules/lodash/_hashSet.js.map +0 -1
  1652. package/dist/node_modules/lodash/_initCloneArray.js.map +0 -1
  1653. package/dist/node_modules/lodash/_initCloneByTag.js.map +0 -1
  1654. package/dist/node_modules/lodash/_initCloneObject.js.map +0 -1
  1655. package/dist/node_modules/lodash/_isFlattenable.js.map +0 -1
  1656. package/dist/node_modules/lodash/_isIndex.js.map +0 -1
  1657. package/dist/node_modules/lodash/_isIterateeCall.js.map +0 -1
  1658. package/dist/node_modules/lodash/_isKey.js.map +0 -1
  1659. package/dist/node_modules/lodash/_isKeyable.js.map +0 -1
  1660. package/dist/node_modules/lodash/_isMasked.js.map +0 -1
  1661. package/dist/node_modules/lodash/_isPrototype.js.map +0 -1
  1662. package/dist/node_modules/lodash/_isStrictComparable.js.map +0 -1
  1663. package/dist/node_modules/lodash/_listCacheClear.js.map +0 -1
  1664. package/dist/node_modules/lodash/_listCacheDelete.js.map +0 -1
  1665. package/dist/node_modules/lodash/_listCacheGet.js.map +0 -1
  1666. package/dist/node_modules/lodash/_listCacheHas.js.map +0 -1
  1667. package/dist/node_modules/lodash/_listCacheSet.js.map +0 -1
  1668. package/dist/node_modules/lodash/_mapCacheClear.js.map +0 -1
  1669. package/dist/node_modules/lodash/_mapCacheDelete.js.map +0 -1
  1670. package/dist/node_modules/lodash/_mapCacheGet.js.map +0 -1
  1671. package/dist/node_modules/lodash/_mapCacheHas.js.map +0 -1
  1672. package/dist/node_modules/lodash/_mapCacheSet.js.map +0 -1
  1673. package/dist/node_modules/lodash/_mapToArray.js.map +0 -1
  1674. package/dist/node_modules/lodash/_matchesStrictComparable.js.map +0 -1
  1675. package/dist/node_modules/lodash/_memoizeCapped.js.map +0 -1
  1676. package/dist/node_modules/lodash/_nativeCreate.js.map +0 -1
  1677. package/dist/node_modules/lodash/_nativeKeys.js.map +0 -1
  1678. package/dist/node_modules/lodash/_nativeKeysIn.js.map +0 -1
  1679. package/dist/node_modules/lodash/_nodeUtil.js.map +0 -1
  1680. package/dist/node_modules/lodash/_objectToString.js.map +0 -1
  1681. package/dist/node_modules/lodash/_overArg.js.map +0 -1
  1682. package/dist/node_modules/lodash/_overRest.js.map +0 -1
  1683. package/dist/node_modules/lodash/_root.js.map +0 -1
  1684. package/dist/node_modules/lodash/_safeGet.js.map +0 -1
  1685. package/dist/node_modules/lodash/_setCacheAdd.js.map +0 -1
  1686. package/dist/node_modules/lodash/_setCacheHas.js.map +0 -1
  1687. package/dist/node_modules/lodash/_setToArray.js.map +0 -1
  1688. package/dist/node_modules/lodash/_setToString.js.map +0 -1
  1689. package/dist/node_modules/lodash/_shortOut.js.map +0 -1
  1690. package/dist/node_modules/lodash/_stackClear.js.map +0 -1
  1691. package/dist/node_modules/lodash/_stackDelete.js.map +0 -1
  1692. package/dist/node_modules/lodash/_stackGet.js.map +0 -1
  1693. package/dist/node_modules/lodash/_stackHas.js.map +0 -1
  1694. package/dist/node_modules/lodash/_stackSet.js.map +0 -1
  1695. package/dist/node_modules/lodash/_strictIndexOf.js.map +0 -1
  1696. package/dist/node_modules/lodash/_stringSize.js.map +0 -1
  1697. package/dist/node_modules/lodash/_stringToArray.js.map +0 -1
  1698. package/dist/node_modules/lodash/_stringToPath.js.map +0 -1
  1699. package/dist/node_modules/lodash/_toKey.js.map +0 -1
  1700. package/dist/node_modules/lodash/_toSource.js.map +0 -1
  1701. package/dist/node_modules/lodash/_trimmedEndIndex.js.map +0 -1
  1702. package/dist/node_modules/lodash/_unicodeSize.js.map +0 -1
  1703. package/dist/node_modules/lodash/_unicodeToArray.js.map +0 -1
  1704. package/dist/node_modules/lodash/clone.js.map +0 -1
  1705. package/dist/node_modules/lodash/cloneDeep.js.map +0 -1
  1706. package/dist/node_modules/lodash/constant.js.map +0 -1
  1707. package/dist/node_modules/lodash/debounce.js.map +0 -1
  1708. package/dist/node_modules/lodash/defaults.js.map +0 -1
  1709. package/dist/node_modules/lodash/each.js.map +0 -1
  1710. package/dist/node_modules/lodash/eq.js.map +0 -1
  1711. package/dist/node_modules/lodash/every.js.map +0 -1
  1712. package/dist/node_modules/lodash/filter.js.map +0 -1
  1713. package/dist/node_modules/lodash/find.js.map +0 -1
  1714. package/dist/node_modules/lodash/findIndex.js.map +0 -1
  1715. package/dist/node_modules/lodash/flatMap.js.map +0 -1
  1716. package/dist/node_modules/lodash/flatten.js.map +0 -1
  1717. package/dist/node_modules/lodash/forEach.js.map +0 -1
  1718. package/dist/node_modules/lodash/forIn.js.map +0 -1
  1719. package/dist/node_modules/lodash/get.js.map +0 -1
  1720. package/dist/node_modules/lodash/has.js.map +0 -1
  1721. package/dist/node_modules/lodash/hasIn.js.map +0 -1
  1722. package/dist/node_modules/lodash/identity.js.map +0 -1
  1723. package/dist/node_modules/lodash/isArguments.js.map +0 -1
  1724. package/dist/node_modules/lodash/isArray.js.map +0 -1
  1725. package/dist/node_modules/lodash/isArrayLike.js.map +0 -1
  1726. package/dist/node_modules/lodash/isArrayLikeObject.js.map +0 -1
  1727. package/dist/node_modules/lodash/isBoolean.js.map +0 -1
  1728. package/dist/node_modules/lodash/isBuffer.js.map +0 -1
  1729. package/dist/node_modules/lodash/isEmpty.js.map +0 -1
  1730. package/dist/node_modules/lodash/isEqual.js.map +0 -1
  1731. package/dist/node_modules/lodash/isFunction.js.map +0 -1
  1732. package/dist/node_modules/lodash/isLength.js.map +0 -1
  1733. package/dist/node_modules/lodash/isMap.js.map +0 -1
  1734. package/dist/node_modules/lodash/isNaN.js.map +0 -1
  1735. package/dist/node_modules/lodash/isNil.js.map +0 -1
  1736. package/dist/node_modules/lodash/isNumber.js.map +0 -1
  1737. package/dist/node_modules/lodash/isObject.js.map +0 -1
  1738. package/dist/node_modules/lodash/isObjectLike.js.map +0 -1
  1739. package/dist/node_modules/lodash/isPlainObject.js.map +0 -1
  1740. package/dist/node_modules/lodash/isSet.js.map +0 -1
  1741. package/dist/node_modules/lodash/isString.js.map +0 -1
  1742. package/dist/node_modules/lodash/isSymbol.js.map +0 -1
  1743. package/dist/node_modules/lodash/isTypedArray.js.map +0 -1
  1744. package/dist/node_modules/lodash/isUndefined.js.map +0 -1
  1745. package/dist/node_modules/lodash/keys.js.map +0 -1
  1746. package/dist/node_modules/lodash/keysIn.js.map +0 -1
  1747. package/dist/node_modules/lodash/last.js.map +0 -1
  1748. package/dist/node_modules/lodash/map.js.map +0 -1
  1749. package/dist/node_modules/lodash/mapValues.js.map +0 -1
  1750. package/dist/node_modules/lodash/max.js.map +0 -1
  1751. package/dist/node_modules/lodash/maxBy.js.map +0 -1
  1752. package/dist/node_modules/lodash/memoize.js.map +0 -1
  1753. package/dist/node_modules/lodash/merge.js.map +0 -1
  1754. package/dist/node_modules/lodash/min.js.map +0 -1
  1755. package/dist/node_modules/lodash/minBy.js.map +0 -1
  1756. package/dist/node_modules/lodash/noop.js.map +0 -1
  1757. package/dist/node_modules/lodash/now.js.map +0 -1
  1758. package/dist/node_modules/lodash/pick.js.map +0 -1
  1759. package/dist/node_modules/lodash/property.js.map +0 -1
  1760. package/dist/node_modules/lodash/range.js.map +0 -1
  1761. package/dist/node_modules/lodash/reduce.js.map +0 -1
  1762. package/dist/node_modules/lodash/size.js.map +0 -1
  1763. package/dist/node_modules/lodash/some.js.map +0 -1
  1764. package/dist/node_modules/lodash/sortBy.js.map +0 -1
  1765. package/dist/node_modules/lodash/stubArray.js.map +0 -1
  1766. package/dist/node_modules/lodash/stubFalse.js.map +0 -1
  1767. package/dist/node_modules/lodash/throttle.js.map +0 -1
  1768. package/dist/node_modules/lodash/toFinite.js.map +0 -1
  1769. package/dist/node_modules/lodash/toInteger.js.map +0 -1
  1770. package/dist/node_modules/lodash/toNumber.js.map +0 -1
  1771. package/dist/node_modules/lodash/toPlainObject.js.map +0 -1
  1772. package/dist/node_modules/lodash/toString.js.map +0 -1
  1773. package/dist/node_modules/lodash/transform.js.map +0 -1
  1774. package/dist/node_modules/lodash/union.js.map +0 -1
  1775. package/dist/node_modules/lodash/uniqBy.js.map +0 -1
  1776. package/dist/node_modules/lodash/uniqueId.js.map +0 -1
  1777. package/dist/node_modules/lodash/upperFirst.js.map +0 -1
  1778. package/dist/node_modules/lodash/values.js.map +0 -1
  1779. package/dist/node_modules/lodash/zipObject.js.map +0 -1
  1780. package/dist/node_modules/object-assign/index.js.map +0 -1
  1781. package/dist/node_modules/prop-types/checkPropTypes.js.map +0 -1
  1782. package/dist/node_modules/prop-types/factoryWithThrowingShims.js.map +0 -1
  1783. package/dist/node_modules/prop-types/factoryWithTypeCheckers.js.map +0 -1
  1784. package/dist/node_modules/prop-types/index.js.map +0 -1
  1785. package/dist/node_modules/prop-types/lib/ReactPropTypesSecret.js.map +0 -1
  1786. package/dist/node_modules/prop-types/lib/has.js.map +0 -1
  1787. package/dist/node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js.map +0 -1
  1788. package/dist/node_modules/prop-types/node_modules/react-is/cjs/react-is.production.min.js.map +0 -1
  1789. package/dist/node_modules/prop-types/node_modules/react-is/index.js.map +0 -1
  1790. package/dist/node_modules/react-is/cjs/react-is.development.js.map +0 -1
  1791. package/dist/node_modules/react-is/cjs/react-is.production.min.js.map +0 -1
  1792. package/dist/node_modules/react-is/index.js.map +0 -1
  1793. package/dist/node_modules/react-smooth/es6/Animate.js.map +0 -1
  1794. package/dist/node_modules/react-smooth/es6/AnimateManager.js.map +0 -1
  1795. package/dist/node_modules/react-smooth/es6/configUpdate.js.map +0 -1
  1796. package/dist/node_modules/react-smooth/es6/easing.js.map +0 -1
  1797. package/dist/node_modules/react-smooth/es6/index.js.map +0 -1
  1798. package/dist/node_modules/react-smooth/es6/setRafTimeout.js.map +0 -1
  1799. package/dist/node_modules/react-smooth/es6/util.js.map +0 -1
  1800. package/dist/node_modules/recharts/es6/cartesian/Area.js.map +0 -1
  1801. package/dist/node_modules/recharts/es6/cartesian/Bar.js.map +0 -1
  1802. package/dist/node_modules/recharts/es6/cartesian/Brush.js.map +0 -1
  1803. package/dist/node_modules/recharts/es6/cartesian/CartesianAxis.js.map +0 -1
  1804. package/dist/node_modules/recharts/es6/cartesian/CartesianGrid.js.map +0 -1
  1805. package/dist/node_modules/recharts/es6/cartesian/ErrorBar.js.map +0 -1
  1806. package/dist/node_modules/recharts/es6/cartesian/ReferenceArea.js.map +0 -1
  1807. package/dist/node_modules/recharts/es6/cartesian/ReferenceDot.js.map +0 -1
  1808. package/dist/node_modules/recharts/es6/cartesian/ReferenceLine.js.map +0 -1
  1809. package/dist/node_modules/recharts/es6/cartesian/XAxis.js.map +0 -1
  1810. package/dist/node_modules/recharts/es6/cartesian/YAxis.js.map +0 -1
  1811. package/dist/node_modules/recharts/es6/cartesian/getEquidistantTicks.js.map +0 -1
  1812. package/dist/node_modules/recharts/es6/cartesian/getTicks.js.map +0 -1
  1813. package/dist/node_modules/recharts/es6/chart/AccessibilityManager.js.map +0 -1
  1814. package/dist/node_modules/recharts/es6/chart/AreaChart.js.map +0 -1
  1815. package/dist/node_modules/recharts/es6/chart/PieChart.js.map +0 -1
  1816. package/dist/node_modules/recharts/es6/chart/generateCategoricalChart.js.map +0 -1
  1817. package/dist/node_modules/recharts/es6/component/Cell.js.map +0 -1
  1818. package/dist/node_modules/recharts/es6/component/Cursor.js.map +0 -1
  1819. package/dist/node_modules/recharts/es6/component/DefaultLegendContent.js.map +0 -1
  1820. package/dist/node_modules/recharts/es6/component/DefaultTooltipContent.js.map +0 -1
  1821. package/dist/node_modules/recharts/es6/component/Label.js.map +0 -1
  1822. package/dist/node_modules/recharts/es6/component/LabelList.js.map +0 -1
  1823. package/dist/node_modules/recharts/es6/component/Legend.js.map +0 -1
  1824. package/dist/node_modules/recharts/es6/component/ResponsiveContainer.js.map +0 -1
  1825. package/dist/node_modules/recharts/es6/component/Text.js.map +0 -1
  1826. package/dist/node_modules/recharts/es6/component/Tooltip.js.map +0 -1
  1827. package/dist/node_modules/recharts/es6/component/TooltipBoundingBox.js.map +0 -1
  1828. package/dist/node_modules/recharts/es6/container/Layer.js.map +0 -1
  1829. package/dist/node_modules/recharts/es6/container/Surface.js.map +0 -1
  1830. package/dist/node_modules/recharts/es6/context/chartLayoutContext.js.map +0 -1
  1831. package/dist/node_modules/recharts/es6/polar/Pie.js.map +0 -1
  1832. package/dist/node_modules/recharts/es6/polar/PolarAngleAxis.js.map +0 -1
  1833. package/dist/node_modules/recharts/es6/polar/PolarRadiusAxis.js.map +0 -1
  1834. package/dist/node_modules/recharts/es6/shape/Cross.js.map +0 -1
  1835. package/dist/node_modules/recharts/es6/shape/Curve.js.map +0 -1
  1836. package/dist/node_modules/recharts/es6/shape/Dot.js.map +0 -1
  1837. package/dist/node_modules/recharts/es6/shape/Polygon.js.map +0 -1
  1838. package/dist/node_modules/recharts/es6/shape/Rectangle.js.map +0 -1
  1839. package/dist/node_modules/recharts/es6/shape/Sector.js.map +0 -1
  1840. package/dist/node_modules/recharts/es6/shape/Symbols.js.map +0 -1
  1841. package/dist/node_modules/recharts/es6/shape/Trapezoid.js.map +0 -1
  1842. package/dist/node_modules/recharts/es6/util/ActiveShapeUtils.js.map +0 -1
  1843. package/dist/node_modules/recharts/es6/util/BarUtils.js.map +0 -1
  1844. package/dist/node_modules/recharts/es6/util/CartesianUtils.js.map +0 -1
  1845. package/dist/node_modules/recharts/es6/util/ChartUtils.js.map +0 -1
  1846. package/dist/node_modules/recharts/es6/util/CssPrefixUtils.js.map +0 -1
  1847. package/dist/node_modules/recharts/es6/util/DOMUtils.js.map +0 -1
  1848. package/dist/node_modules/recharts/es6/util/DataUtils.js.map +0 -1
  1849. package/dist/node_modules/recharts/es6/util/DetectReferenceElementsDomain.js.map +0 -1
  1850. package/dist/node_modules/recharts/es6/util/Events.js.map +0 -1
  1851. package/dist/node_modules/recharts/es6/util/Global.js.map +0 -1
  1852. package/dist/node_modules/recharts/es6/util/IfOverflowMatches.js.map +0 -1
  1853. package/dist/node_modules/recharts/es6/util/LogUtils.js.map +0 -1
  1854. package/dist/node_modules/recharts/es6/util/PolarUtils.js.map +0 -1
  1855. package/dist/node_modules/recharts/es6/util/ReactUtils.js.map +0 -1
  1856. package/dist/node_modules/recharts/es6/util/ReduceCSSCalc.js.map +0 -1
  1857. package/dist/node_modules/recharts/es6/util/ShallowEqual.js.map +0 -1
  1858. package/dist/node_modules/recharts/es6/util/TickUtils.js.map +0 -1
  1859. package/dist/node_modules/recharts/es6/util/calculateViewBox.js.map +0 -1
  1860. package/dist/node_modules/recharts/es6/util/cursor/getCursorPoints.js.map +0 -1
  1861. package/dist/node_modules/recharts/es6/util/cursor/getCursorRectangle.js.map +0 -1
  1862. package/dist/node_modules/recharts/es6/util/cursor/getRadialCursorPoints.js.map +0 -1
  1863. package/dist/node_modules/recharts/es6/util/getEveryNthWithCondition.js.map +0 -1
  1864. package/dist/node_modules/recharts/es6/util/getLegendProps.js.map +0 -1
  1865. package/dist/node_modules/recharts/es6/util/isDomainSpecifiedByUser.js.map +0 -1
  1866. package/dist/node_modules/recharts/es6/util/payload/getUniqPayload.js.map +0 -1
  1867. package/dist/node_modules/recharts/es6/util/tooltip/translate.js.map +0 -1
  1868. package/dist/node_modules/recharts/es6/util/types.js.map +0 -1
  1869. package/dist/node_modules/recharts-scale/es6/getNiceTickValues.js.map +0 -1
  1870. package/dist/node_modules/recharts-scale/es6/util/arithmetic.js.map +0 -1
  1871. package/dist/node_modules/recharts-scale/es6/util/utils.js.map +0 -1
  1872. package/dist/node_modules/rxjs/dist/esm5/internal/NotificationFactories.js.map +0 -1
  1873. package/dist/node_modules/rxjs/dist/esm5/internal/Observable.js.map +0 -1
  1874. package/dist/node_modules/rxjs/dist/esm5/internal/Subscriber.js.map +0 -1
  1875. package/dist/node_modules/rxjs/dist/esm5/internal/Subscription.js.map +0 -1
  1876. package/dist/node_modules/rxjs/dist/esm5/internal/config.js.map +0 -1
  1877. package/dist/node_modules/rxjs/dist/esm5/internal/observable/empty.js.map +0 -1
  1878. package/dist/node_modules/rxjs/dist/esm5/internal/observable/throwError.js.map +0 -1
  1879. package/dist/node_modules/rxjs/dist/esm5/internal/scheduler/timeoutProvider.js.map +0 -1
  1880. package/dist/node_modules/rxjs/dist/esm5/internal/symbol/observable.js.map +0 -1
  1881. package/dist/node_modules/rxjs/dist/esm5/internal/util/UnsubscriptionError.js.map +0 -1
  1882. package/dist/node_modules/rxjs/dist/esm5/internal/util/arrRemove.js.map +0 -1
  1883. package/dist/node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js.map +0 -1
  1884. package/dist/node_modules/rxjs/dist/esm5/internal/util/errorContext.js.map +0 -1
  1885. package/dist/node_modules/rxjs/dist/esm5/internal/util/identity.js.map +0 -1
  1886. package/dist/node_modules/rxjs/dist/esm5/internal/util/isFunction.js.map +0 -1
  1887. package/dist/node_modules/rxjs/dist/esm5/internal/util/noop.js.map +0 -1
  1888. package/dist/node_modules/rxjs/dist/esm5/internal/util/pipe.js.map +0 -1
  1889. package/dist/node_modules/rxjs/dist/esm5/internal/util/reportUnhandledError.js.map +0 -1
  1890. package/dist/node_modules/rxjs/node_modules/tslib/tslib.es6.js.map +0 -1
  1891. package/dist/node_modules/tiny-invariant/dist/esm/tiny-invariant.js.map +0 -1
  1892. package/dist/node_modules/victory-vendor/es/d3-scale.js.map +0 -1
  1893. package/dist/pages/ActionsPage.js.map +0 -1
  1894. package/dist/pages/AgentDetailsPage.js.map +0 -1
  1895. package/dist/pages/AgentGraphPage.js.map +0 -1
  1896. package/dist/pages/AgentsLandingPage.js.map +0 -1
  1897. package/dist/pages/AgentsPage.js.map +0 -1
  1898. package/dist/pages/AnalyticsPage.js.map +0 -1
  1899. package/dist/pages/CatalogDetailPage.js.map +0 -1
  1900. package/dist/pages/CatalogDocsPage.js.map +0 -1
  1901. package/dist/pages/CatalogPage.js.map +0 -1
  1902. package/dist/pages/ComponentDetailPage.js.map +0 -1
  1903. package/dist/pages/ComponentDocsPage.js.map +0 -1
  1904. package/dist/pages/ComponentsPage.js.map +0 -1
  1905. package/dist/pages/EnvTopologyPage.js.map +0 -1
  1906. package/dist/pages/GettingStartedPage.js.map +0 -1
  1907. package/dist/pages/HealthPage.js.map +0 -1
  1908. package/dist/pages/LogsPage.js.map +0 -1
  1909. package/dist/pages/NoteDetailsPage.js.map +0 -1
  1910. package/dist/pages/OverviewPage.js.map +0 -1
  1911. package/dist/pages/PluginDetailPage.js.map +0 -1
  1912. package/dist/pages/PluginsCatalogPage.js.map +0 -1
  1913. package/dist/pages/ScheduledJobDetailPage.js.map +0 -1
  1914. package/dist/pages/SessionDetailsPage.js.map +0 -1
  1915. package/dist/pages/SessionsPage.js.map +0 -1
  1916. package/dist/pages/SettingsPage.js.map +0 -1
  1917. package/dist/pages/SharedSessionPage.js.map +0 -1
  1918. package/dist/pages/SharedVibeDeckPage.js.map +0 -1
  1919. package/dist/pages/TargetDetailsPage.js.map +0 -1
  1920. package/dist/pages/TargetsPage.js.map +0 -1
  1921. package/dist/pages/TemplateDetailPage.js.map +0 -1
  1922. package/dist/pages/TemplatesPage.js.map +0 -1
  1923. package/dist/pages/TunnelsLandingPage.js.map +0 -1
  1924. package/dist/pages/VibeAuditPage.js.map +0 -1
  1925. package/dist/pages/VibeCalendarPage.js.map +0 -1
  1926. package/dist/pages/VibeDeckPage.js.map +0 -1
  1927. package/dist/pages/VibeDetailsPage.js.map +0 -1
  1928. package/dist/pages/VibeDocsPage.js.map +0 -1
  1929. package/dist/pages/VibeTaskDetailPage.js.map +0 -1
  1930. package/dist/pages/VibesPage.js.map +0 -1
  1931. package/dist/pages/WebhooksPage.js.map +0 -1
  1932. package/dist/pages/ai/AIBookmarksPage.js.map +0 -1
  1933. package/dist/pages/ai/AIBuilderPage.js.map +0 -1
  1934. package/dist/pages/ai/AIPage.js.map +0 -1
  1935. package/dist/pages/ai/AISessionDetailPage.js.map +0 -1
  1936. package/dist/pages/ai/AgentManagerPage.js.map +0 -1
  1937. package/dist/pages/tunnels/AuditTab.js.map +0 -1
  1938. package/dist/pages/tunnels/DomainsTab.js.map +0 -1
  1939. package/dist/pages/tunnels/ProvidersTab.js.map +0 -1
  1940. package/dist/pages/tunnels/SessionsTab.js.map +0 -1
  1941. package/dist/pages/tunnels/TunnelDetailsPage.js.map +0 -1
  1942. package/dist/pages/tunnels/TunnelsTab.js.map +0 -1
  1943. package/dist/pages/tunnels/UsageTab.js.map +0 -1
  1944. package/dist/pages/tunnels/tabs/TunnelAuditTab.js.map +0 -1
  1945. package/dist/pages/tunnels/tabs/TunnelCliTab.js.map +0 -1
  1946. package/dist/pages/tunnels/tabs/TunnelDomainsTab.js.map +0 -1
  1947. package/dist/pages/tunnels/tabs/TunnelEndpointsTab.js.map +0 -1
  1948. package/dist/pages/tunnels/tabs/TunnelOverviewTab.js.map +0 -1
  1949. package/dist/pages/tunnels/tabs/TunnelSessionsTab.js.map +0 -1
  1950. package/dist/pages/tunnels/tabs/TunnelSettingsTab.js.map +0 -1
  1951. package/dist/pages/tunnels/tabs/TunnelUsageTab.js.map +0 -1
  1952. package/dist/plugin.js.map +0 -1
  1953. package/dist/providers/AgentEventsProvider.js.map +0 -1
  1954. package/dist/providers/QuotaExhaustedProvider.js.map +0 -1
  1955. package/dist/providers/VibeControlsProvider.js.map +0 -1
  1956. package/dist/services/agentRemoteTaskGates.js.map +0 -1
  1957. package/dist/services/aiApi.js.map +0 -1
  1958. package/dist/services/assistantApi.js.map +0 -1
  1959. package/dist/services/createSandboxAssistantTransport.js.map +0 -1
  1960. package/dist/services/gitopsApi.js.map +0 -1
  1961. package/dist/services/iframeToken.js.map +0 -1
  1962. package/dist/services/planApi.js.map +0 -1
  1963. package/dist/services/schedulerApi.js.map +0 -1
  1964. package/dist/shared/hooks/useField.js.map +0 -1
  1965. package/dist/shared/hooks/useTr.js.map +0 -1
  1966. package/dist/store/agentManagerStore.js.map +0 -1
  1967. package/dist/store/vibeControlsStore.js.map +0 -1
  1968. package/dist/translations/en.js.map +0 -1
  1969. package/dist/types/assistant.js.map +0 -1
  1970. package/dist/utils/agentApiPath.js.map +0 -1
  1971. package/dist/utils/agentHealth.js.map +0 -1
  1972. package/dist/utils/agentStatus.js.map +0 -1
  1973. package/dist/utils/agentVisibility.js.map +0 -1
  1974. package/dist/utils/aiCredits.js.map +0 -1
  1975. package/dist/utils/aiCreditsLedger.js.map +0 -1
  1976. package/dist/utils/aiSessionNotFound.js.map +0 -1
  1977. package/dist/utils/assistantPrompt.js.map +0 -1
  1978. package/dist/utils/onboardingUtils.js.map +0 -1
  1979. package/dist/utils/pageContext.js.map +0 -1
  1980. package/dist/utils/quotaUtils.js.map +0 -1
  1981. package/dist/utils/randomSessionName.js.map +0 -1
  1982. package/dist/utils/relativeTime.js.map +0 -1
  1983. package/dist/utils/shareUrl.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"TemplateWizard.js","names":[],"sources":["../../../src/components/templates/TemplateWizard.tsx"],"sourcesContent":["import type { FC } from 'react';\nimport { useState } from 'react';\nimport { motion, AnimatePresence } from 'framer-motion';\nimport { Copy, ChevronRight, Check, X, Github, Eye, EyeOff } from 'lucide-react';\nimport type { TemplateVariable } from './TemplateVariableEditor';\n\nexport interface GitHubConfig {\n enabled: boolean;\n /** When set, the backend resolves the token via the OAuth connection (token stays server-side) */\n connectionId: string | null;\n repoName: string;\n visibility: 'public' | 'private';\n scope: 'user' | 'org';\n orgName: string;\n /** Personal access token — only used when connectionId is null */\n token: string;\n}\n\nexport interface GitHubConnection {\n id: string;\n name: string;\n externalAccountEmail?: string | null;\n externalAccountName?: string | null;\n provider: { key: string; name: string };\n}\n\ninterface TemplateWizardProps {\n templateName: string;\n variables: TemplateVariable[];\n /** URL of the template's source component repository, used for forking */\n sourceRepoUrl?: string | null;\n /** Active GitHub OAuth connections for the current workspace */\n githubConnections?: GitHubConnection[];\n onClose: () => void;\n onSubmit: (data: {\n name: string;\n description: string;\n variableValues: Record<string, unknown>;\n githubConfig: GitHubConfig | null;\n }) => Promise<void>;\n}\n\nconst inputCls =\n 'w-full px-3 py-2 bg-bg-sunken border border-border-default rounded-md text-text-primary placeholder:text-text-placeholder focus:outline-none focus:border-action-primary-bg text-sm';\n\nfunction toKebab(s: string) {\n return s\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, '-')\n .replace(/^-+|-+$/g, '');\n}\n\nexport const TemplateWizard: FC<TemplateWizardProps> = ({\n templateName,\n variables,\n sourceRepoUrl,\n githubConnections = [],\n onClose,\n onSubmit,\n}) => {\n const hasVariables = variables.length > 0;\n\n // Steps: 0=BasicInfo, 1=Variables(if any), N-1=GitHub, N=Review\n const steps = [\n 'Basic Info',\n ...(hasVariables ? ['Configure Variables'] : []),\n 'GitHub Repo',\n 'Review',\n ];\n const totalSteps = steps.length;\n const githubStep = hasVariables ? 2 : 1;\n const reviewStep = hasVariables ? 3 : 2;\n\n const [step, setStep] = useState(0);\n const [name, setName] = useState('');\n const [description, setDescription] = useState('');\n const [varValues, setVarValues] = useState<Record<string, string>>(() => {\n const init: Record<string, string> = {};\n for (const v of variables) init[v.name] = v.default || '';\n return init;\n });\n\n const hasConnections = githubConnections.length > 0;\n const [githubAuthMode, setGithubAuthMode] = useState<'connection' | 'pat'>(\n hasConnections ? 'connection' : 'pat'\n );\n const [github, setGithub] = useState<GitHubConfig>({\n enabled: !!sourceRepoUrl,\n connectionId: hasConnections ? githubConnections[0].id : null,\n repoName: '',\n visibility: 'private',\n scope: 'user',\n orgName: '',\n token: '',\n });\n\n const [showToken, setShowToken] = useState(false);\n\n const [error, setError] = useState<string | null>(null);\n const [loading, setLoading] = useState(false);\n\n const updateGithub = (patch: Partial<GitHubConfig>) => setGithub((g) => ({ ...g, ...patch }));\n\n // Keep repoName in sync with component name (only if user hasn't manually changed it)\n const [repoNameTouched, setRepoNameTouched] = useState(false);\n\n const handleNameChange = (v: string) => {\n setName(v);\n if (!repoNameTouched) {\n updateGithub({ repoName: toKebab(v) });\n }\n };\n\n const canProceed = (): boolean => {\n if (step === 0) return name.trim().length > 0;\n if (step === 1 && hasVariables) {\n return variables.filter((v) => v.required).every((v) => varValues[v.name]?.trim());\n }\n if (step === githubStep) {\n if (sourceRepoUrl && !github.enabled) return false;\n if (github.enabled) {\n if (!github.repoName.trim()) return false;\n if (github.scope === 'org' && !github.orgName.trim()) return false;\n if (githubAuthMode === 'connection') {\n if (!hasConnections) return false;\n } else {\n if (!github.token.trim()) return false;\n }\n }\n }\n return true;\n };\n\n const next = () => {\n if (!canProceed()) {\n if (step === 0) setError('Component name is required');\n else if (step === 1 && hasVariables) setError('Please fill in all required fields');\n else if (step === githubStep)\n setError(\n sourceRepoUrl\n ? 'A GitHub repository is required to fork this template — enable it and fill in the details'\n : 'Repo name, org (if applicable), and token are required to create a GitHub repo'\n );\n return;\n }\n setError(null);\n setStep((s) => Math.min(s + 1, totalSteps - 1));\n };\n\n const back = () => setStep((s) => Math.max(s - 1, 0));\n\n const handleSubmit = async () => {\n setLoading(true);\n setError(null);\n try {\n const variableValues: Record<string, unknown> = {};\n for (const v of variables) {\n const val = varValues[v.name];\n if (val !== undefined && val !== '') {\n if (v.type === 'number') variableValues[v.name] = Number(val);\n else if (v.type === 'boolean') variableValues[v.name] = val === 'true';\n else variableValues[v.name] = val;\n }\n }\n await onSubmit({\n name,\n description,\n variableValues,\n githubConfig: github.enabled ? github : null,\n });\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Failed to create component');\n } finally {\n setLoading(false);\n }\n };\n\n return (\n <div\n className=\"fixed inset-0 flex items-center justify-center z-50 p-4\"\n style={{ backgroundColor: 'rgba(0,0,0,0.55)' }}\n >\n <motion.div\n initial={{ opacity: 0, scale: 0.95 }}\n animate={{ opacity: 1, scale: 1 }}\n exit={{ opacity: 0, scale: 0.95 }}\n className=\"bg-bg-surface rounded-lg w-full max-w-lg shadow-xl\"\n >\n {/* Header */}\n <div className=\"flex items-center justify-between px-6 py-4 border-b border-border-default\">\n <h2 className=\"text-base font-semibold text-text-primary flex items-center gap-2\">\n <Copy className=\"size-4 text-action-primary-bg\" />\n Use Template: <span className=\"text-action-primary-bg ml-1\">{templateName}</span>\n </h2>\n <button\n type=\"button\"\n onClick={onClose}\n className=\"p-1.5 text-text-secondary hover:text-text-primary rounded-md hover:bg-bg-sunken transition-colors\"\n >\n <X className=\"size-4\" />\n </button>\n </div>\n\n {/* Step pills */}\n <div className=\"px-6 pt-4\">\n <div className=\"flex items-center gap-2 overflow-x-auto pb-1\">\n {steps.map((label, i) => (\n <div key={i} className=\"flex items-center gap-2 flex-shrink-0\">\n <div\n className={`flex items-center justify-center size-6 rounded-full text-xs font-medium transition-colors ${\n i < step\n ? 'bg-status-success-bg-subtle text-status-success-text'\n : i === step\n ? 'bg-action-primary-bg text-action-primary-text'\n : 'bg-bg-sunken text-text-muted'\n }`}\n >\n {i < step ? <Check className=\"size-3\" /> : i + 1}\n </div>\n <span\n className={`text-xs ${i === step ? 'text-text-primary font-medium' : 'text-text-muted'}`}\n >\n {label}\n </span>\n {i < steps.length - 1 && (\n <ChevronRight className=\"size-3 text-text-muted flex-shrink-0\" />\n )}\n </div>\n ))}\n </div>\n </div>\n\n {/* Body */}\n <div className=\"px-6 py-5 min-h-[220px] max-h-[60vh] overflow-y-auto\">\n <AnimatePresence mode=\"wait\">\n {/* Step 0 — Basic Info */}\n {step === 0 && (\n <motion.div\n key=\"step0\"\n initial={{ opacity: 0, x: 20 }}\n animate={{ opacity: 1, x: 0 }}\n exit={{ opacity: 0, x: -20 }}\n transition={{ duration: 0.15 }}\n className=\"space-y-4\"\n >\n <p className=\"text-sm text-text-secondary\">\n This wizard creates a new <strong>component</strong> — a tracked entry in your\n software catalog — pre-configured from the{' '}\n <span className=\"font-medium text-text-primary\">{templateName}</span> blueprint.\n </p>\n <div>\n <label\n htmlFor=\"templatewizard-56\"\n className=\"block text-sm font-medium text-text-primary mb-1\"\n >\n Component Name <span className=\"text-status-error-text\">*</span>\n </label>\n <input\n id=\"templatewizard-56\"\n aria-label=\"my-new-service\"\n className={inputCls}\n placeholder=\"my-new-service\"\n value={name}\n onChange={(e) => handleNameChange(e.target.value)}\n />\n <p className=\"mt-1 text-xs text-text-muted\">\n Name of the new component created from this template.\n </p>\n </div>\n <div>\n <label\n htmlFor=\"templatewizard-55\"\n className=\"block text-sm font-medium text-text-primary mb-1\"\n >\n Description\n </label>\n <textarea\n id=\"templatewizard-55\"\n aria-label=\"What does this component do?\"\n className={`${inputCls} resize-none`}\n rows={3}\n placeholder=\"What does this component do?\"\n value={description}\n onChange={(e) => setDescription(e.target.value)}\n />\n </div>\n </motion.div>\n )}\n\n {/* Step 1 — Variables (if any) */}\n {step === 1 && hasVariables && (\n <motion.div\n key=\"step1\"\n initial={{ opacity: 0, x: 20 }}\n animate={{ opacity: 1, x: 0 }}\n exit={{ opacity: 0, x: -20 }}\n transition={{ duration: 0.15 }}\n className=\"space-y-4\"\n >\n <p className=\"text-sm text-text-secondary\">\n Fill in the configuration values for this template.\n </p>\n {variables.map((v) => (\n <div key={v.name}>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">\n {v.title || v.name}\n {v.required && <span className=\"text-status-error-text ml-1\">*</span>}\n </label>\n {v.options.length > 0 ? (\n <select\n className={inputCls}\n value={varValues[v.name] || ''}\n onChange={(e) => setVarValues({ ...varValues, [v.name]: e.target.value })}\n >\n <option value=\"\">Select…</option>\n {v.options.map((opt) => (\n <option key={opt} value={opt}>\n {opt}\n </option>\n ))}\n </select>\n ) : v.type === 'boolean' ? (\n <select\n className={inputCls}\n value={varValues[v.name] || 'false'}\n onChange={(e) => setVarValues({ ...varValues, [v.name]: e.target.value })}\n >\n <option value=\"true\">Yes</option>\n <option value=\"false\">No</option>\n </select>\n ) : (\n <input\n aria-label=\"control\"\n className={inputCls}\n type={v.type === 'number' ? 'number' : 'text'}\n placeholder={v.placeholder || v.default || ''}\n value={varValues[v.name] || ''}\n onChange={(e) => setVarValues({ ...varValues, [v.name]: e.target.value })}\n />\n )}\n </div>\n ))}\n </motion.div>\n )}\n\n {/* GitHub step */}\n {step === githubStep && (\n <motion.div\n key=\"stepGithub\"\n initial={{ opacity: 0, x: 20 }}\n animate={{ opacity: 1, x: 0 }}\n exit={{ opacity: 0, x: -20 }}\n transition={{ duration: 0.15 }}\n className=\"space-y-4\"\n >\n {/* Source repo fork notice */}\n {sourceRepoUrl && (\n <div className=\"flex items-start gap-2 p-3 bg-status-info-bg rounded-md text-xs text-status-info-text\">\n <Github className=\"size-4 flex-shrink-0 mt-0.5\" />\n <div>\n <p className=\"font-medium\">Source repository detected</p>\n <p className=\"mt-0.5 text-status-info-text/80 break-all\">{sourceRepoUrl}</p>\n <p className=\"mt-1\">\n Enabling GitHub will <strong>fork</strong> this repository into your new\n repo (with fallback to a new empty repo if the fork is unavailable).\n </p>\n </div>\n </div>\n )}\n\n <div className=\"flex items-start gap-3\">\n {sourceRepoUrl ? (\n <div className=\"mt-0.5 flex-shrink-0 w-9 h-5 rounded-full bg-action-primary-bg relative opacity-70 cursor-not-allowed\">\n <span className=\"absolute top-0.5 size-4 rounded-full bg-bg-surface shadow translate-x-4\" />\n </div>\n ) : (\n <button\n type=\"button\"\n onClick={() => updateGithub({ enabled: !github.enabled })}\n className={`mt-0.5 flex-shrink-0 w-9 h-5 rounded-full transition-colors relative ${\n github.enabled\n ? 'bg-action-primary-bg'\n : 'bg-bg-sunken border border-border-default'\n }`}\n >\n <span\n className={`absolute top-0.5 size-4 rounded-full bg-bg-surface shadow transition-transform ${\n github.enabled ? 'translate-x-4' : 'translate-x-0.5'\n }`}\n />\n </button>\n )}\n <div>\n <p className=\"text-sm font-medium text-text-primary flex items-center gap-2\">\n <Github className=\"size-4\" />\n {sourceRepoUrl\n ? 'Fork source & create GitHub repository'\n : 'Create a GitHub repository'}\n {sourceRepoUrl && (\n <span className=\"text-xs text-status-error-text font-normal\">Required</span>\n )}\n </p>\n <p className=\"text-xs text-text-muted mt-0.5\">\n {sourceRepoUrl\n ? 'Forks the template source repo and links it to the new component.'\n : 'Automatically creates a new GitHub repo and links it to the component.'}\n </p>\n </div>\n </div>\n\n {github.enabled && (\n <div className=\"space-y-3 pl-12\">\n <div>\n <label\n htmlFor=\"templatewizard-54\"\n className=\"block text-xs font-medium text-text-primary mb-1\"\n >\n Repository name <span className=\"text-status-error-text\">*</span>\n </label>\n <input\n id=\"templatewizard-54\"\n aria-label=\"my-new-service\"\n className={inputCls}\n value={github.repoName}\n onChange={(e) => {\n setRepoNameTouched(true);\n updateGithub({ repoName: e.target.value });\n }}\n placeholder=\"my-new-service\"\n />\n </div>\n\n <div className=\"grid grid-cols-2 gap-3\">\n <div>\n <label\n htmlFor=\"templatewizard-53\"\n className=\"block text-xs font-medium text-text-primary mb-1\"\n >\n Visibility\n </label>\n <select\n id=\"templatewizard-53\"\n className={inputCls}\n value={github.visibility}\n onChange={(e) =>\n updateGithub({\n visibility: e.target.value as GitHubConfig['visibility'],\n })\n }\n >\n <option value=\"private\">Private</option>\n <option value=\"public\">Public</option>\n </select>\n </div>\n <div>\n <label\n htmlFor=\"templatewizard-52\"\n className=\"block text-xs font-medium text-text-primary mb-1\"\n >\n Create under\n </label>\n <select\n id=\"templatewizard-52\"\n className={inputCls}\n value={github.scope}\n onChange={(e) =>\n updateGithub({ scope: e.target.value as GitHubConfig['scope'] })\n }\n >\n <option value=\"user\">My account</option>\n <option value=\"org\">Organization</option>\n </select>\n </div>\n </div>\n\n {github.scope === 'org' && (\n <div>\n <label\n htmlFor=\"templatewizard-51\"\n className=\"block text-xs font-medium text-text-primary mb-1\"\n >\n Organization name <span className=\"text-status-error-text\">*</span>\n </label>\n <input\n id=\"templatewizard-51\"\n aria-label=\"my-org\"\n className={inputCls}\n value={github.orgName}\n onChange={(e) => updateGithub({ orgName: e.target.value })}\n placeholder=\"my-org\"\n />\n </div>\n )}\n\n {/* Auth method toggle — always visible */}\n <div>\n <label\n htmlFor=\"templatewizard-50\"\n className=\"block text-xs font-medium text-text-primary mb-2\"\n >\n Authentication <span className=\"text-status-error-text\">*</span>\n </label>\n <div className=\"flex rounded-md border border-border-default overflow-hidden mb-3\">\n <button\n type=\"button\"\n onClick={() => {\n setGithubAuthMode('connection');\n updateGithub({\n connectionId: githubConnections[0]?.id ?? null,\n token: '',\n });\n }}\n className={`flex-1 py-1.5 text-xs font-medium transition-colors ${\n githubAuthMode === 'connection'\n ? 'bg-action-primary-bg text-action-primary-text'\n : 'bg-bg-surface text-text-secondary hover:bg-bg-sunken'\n }`}\n >\n Connected Account\n </button>\n <button\n type=\"button\"\n onClick={() => {\n setGithubAuthMode('pat');\n updateGithub({ connectionId: null });\n }}\n className={`flex-1 py-1.5 text-xs font-medium transition-colors border-l border-border-default ${\n githubAuthMode === 'pat'\n ? 'bg-action-primary-bg text-action-primary-text'\n : 'bg-bg-surface text-text-secondary hover:bg-bg-sunken'\n }`}\n >\n Personal Token\n </button>\n </div>\n\n {/* Connected account panel */}\n {githubAuthMode === 'connection' &&\n (hasConnections ? (\n <div className=\"space-y-2\">\n <select\n id=\"templatewizard-50\"\n className={inputCls}\n value={github.connectionId ?? githubConnections[0]?.id ?? ''}\n onChange={(e) => updateGithub({ connectionId: e.target.value })}\n >\n {githubConnections.map((conn) => (\n <option key={conn.id} value={conn.id}>\n {conn.externalAccountEmail ||\n conn.externalAccountName ||\n conn.name}{' '}\n — {conn.provider.name}\n </option>\n ))}\n </select>\n <p className=\"text-xs text-status-success-text\">\n Token resolved server-side — never exposed to the browser.\n </p>\n </div>\n ) : (\n <div className=\"p-3 bg-bg-sunken rounded-md text-xs text-text-secondary space-y-1\">\n <p>No GitHub accounts connected to this workspace.</p>\n <p>\n <a\n href=\"/vibecontrols/settings/integrations\"\n target=\"_blank\"\n rel=\"noreferrer\"\n className=\"text-action-primary-bg underline\"\n >\n Connect GitHub in Settings →\n </a>{' '}\n then come back here to use it.\n </p>\n </div>\n ))}\n\n {/* PAT panel */}\n {githubAuthMode === 'pat' && (\n <div>\n <div className=\"relative\">\n <input\n aria-label=\"ghp_••••••••••••••••••••\"\n className={`${inputCls} pr-10`}\n type={showToken ? 'text' : 'password'}\n value={github.token}\n onChange={(e) => updateGithub({ token: e.target.value })}\n placeholder=\"ghp_••••••••••••••••••••\"\n autoComplete=\"off\"\n />\n <button\n type=\"button\"\n onClick={() => setShowToken((v) => !v)}\n className=\"absolute right-2 top-1/2 -translate-y-1/2 text-text-muted hover:text-text-primary\"\n >\n {showToken ? (\n <EyeOff className=\"size-4\" />\n ) : (\n <Eye className=\"size-4\" />\n )}\n </button>\n </div>\n <p className=\"mt-1 text-xs text-text-muted\">\n Needs <code className=\"font-mono\">repo</code> scope.{' '}\n <a\n href=\"https://github.com/settings/tokens/new?scopes=repo&description=VibeControls+scaffolding\"\n target=\"_blank\"\n rel=\"noreferrer\"\n className=\"text-action-primary-bg underline\"\n >\n Generate one →\n </a>\n </p>\n </div>\n )}\n </div>\n </div>\n )}\n\n {!github.enabled && !sourceRepoUrl && (\n <p className=\"text-sm text-text-muted pl-12\">\n Skip this step — the component will be created without a linked repository. You\n can add a repository URL later in the component settings.\n </p>\n )}\n </motion.div>\n )}\n\n {/* Review step */}\n {step === reviewStep && (\n <motion.div\n key=\"review\"\n initial={{ opacity: 0, x: 20 }}\n animate={{ opacity: 1, x: 0 }}\n exit={{ opacity: 0, x: -20 }}\n transition={{ duration: 0.15 }}\n className=\"space-y-4\"\n >\n <p className=\"text-sm text-text-secondary\">\n Review the details before creating your component.\n </p>\n <div className=\"bg-bg-sunken rounded-lg p-4 space-y-3 text-sm\">\n <div className=\"flex gap-3\">\n <span className=\"text-text-muted w-28 flex-shrink-0\">Name</span>\n <span className=\"text-text-primary font-medium\">{name}</span>\n </div>\n {description && (\n <div className=\"flex gap-3\">\n <span className=\"text-text-muted w-28 flex-shrink-0\">Description</span>\n <span className=\"text-text-primary\">{description}</span>\n </div>\n )}\n {hasVariables && variables.length > 0 && (\n <div className=\"pt-2 border-t border-border-default\">\n <p className=\"text-text-muted text-xs mb-2\">Variables</p>\n {variables.map((v) => (\n <div key={v.name} className=\"flex gap-3\">\n <span className=\"text-text-muted w-28 flex-shrink-0 truncate\">\n {v.title || v.name}\n </span>\n <span className=\"text-text-primary font-mono text-xs\">\n {varValues[v.name] || (\n <span className=\"text-text-muted italic\">default</span>\n )}\n </span>\n </div>\n ))}\n </div>\n )}\n <div className=\"pt-2 border-t border-border-default flex gap-3\">\n <span className=\"text-text-muted w-28 flex-shrink-0\">GitHub repo</span>\n {github.enabled ? (\n <span className=\"text-text-primary font-mono text-xs\">\n {github.scope === 'org' ? github.orgName : 'personal'}/{github.repoName}{' '}\n <span className=\"text-text-muted\">({github.visibility})</span>\n {github.connectionId && (\n <span className=\"ml-2 text-status-success-text font-sans font-normal\">\n via connected account\n </span>\n )}\n </span>\n ) : (\n <span className=\"text-text-muted italic\">not creating</span>\n )}\n </div>\n </div>\n </motion.div>\n )}\n </AnimatePresence>\n\n {error && (\n <div className=\"mt-3 p-3 bg-status-error-bg-subtle text-status-error-text text-sm rounded-md\">\n {error}\n </div>\n )}\n </div>\n\n {/* Footer */}\n <div className=\"flex items-center justify-between px-6 py-4 border-t border-border-default\">\n <button\n type=\"button\"\n onClick={step === 0 ? onClose : back}\n disabled={loading}\n className=\"px-4 py-2 text-sm text-text-primary hover:bg-bg-sunken rounded-md transition-colors disabled:opacity-50\"\n >\n {step === 0 ? 'Cancel' : 'Back'}\n </button>\n {step < reviewStep ? (\n <button\n type=\"button\"\n onClick={next}\n className=\"flex items-center gap-2 px-4 py-2 text-sm bg-action-primary-bg text-action-primary-text rounded-md hover:bg-action-primary-bg-hover transition-colors\"\n >\n Next\n <ChevronRight className=\"size-4\" />\n </button>\n ) : (\n <button\n type=\"button\"\n onClick={handleSubmit}\n disabled={loading}\n className=\"flex items-center gap-2 px-4 py-2 text-sm bg-action-primary-bg text-action-primary-text rounded-md hover:bg-action-primary-bg-hover transition-colors disabled:opacity-50\"\n >\n <Copy className=\"size-4\" />\n {loading ? 'Creating...' : 'Create Component'}\n </button>\n )}\n </div>\n </motion.div>\n </div>\n );\n};\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"DomainVerificationBadge.js","names":[],"sources":["../../../src/components/tunnels/DomainVerificationBadge.tsx"],"sourcesContent":["import type { TunnelDomainVerificationStatus } from '@/generated/wspace-types';\n\nconst STYLES: Record<string, string> = {\n PENDING: 'bg-status-warning-bg-subtle text-status-warning-text',\n VERIFYING: 'bg-status-warning-bg-subtle text-status-warning-text',\n VERIFIED: 'bg-status-success-bg-subtle text-status-success-text',\n FAILED: 'bg-status-error-bg-subtle text-status-error-text',\n EXPIRED: 'bg-bg-sunken text-text-muted',\n};\n\nexport function DomainVerificationBadge({\n status,\n}: {\n status: TunnelDomainVerificationStatus | string;\n}) {\n const style = STYLES[status] ?? 'bg-bg-sunken text-text-secondary';\n return (\n <span\n className={`inline-flex items-center rounded-full px-2 py-0.5 text-xs font-medium ${style}`}\n >\n {status}\n </span>\n );\n}\n"],"mappings":";;AAEA,IAAM,IAAiC;CACrC,SAAS;CACT,WAAW;CACX,UAAU;CACV,QAAQ;CACR,SAAS;CACV;AAED,SAAgB,EAAwB,EACtC,aAGC;AAED,QACE,kBAAC,QAAD;EACE,WAAW,yEAHD,EAAO,MAAW;YAK3B;EACI,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ProviderBadge.js","names":[],"sources":["../../../src/components/tunnels/ProviderBadge.tsx"],"sourcesContent":["import type { TunnelProviderKey } from '@/generated/wspace-types';\n\nconst LABELS: Record<string, string> = {\n VIBETUNNELS: 'VibeTunnels',\n CLOUDFLARE: 'Cloudflare',\n};\n\nexport function ProviderBadge({ providerKey }: { providerKey: TunnelProviderKey | string }) {\n return (\n <span className=\"inline-flex items-center rounded-full bg-status-info-bg-subtle px-2 py-0.5 text-xs font-medium text-status-info-text\">\n {LABELS[providerKey] ?? providerKey}\n </span>\n );\n}\n"],"mappings":";;AAEA,IAAM,IAAiC;CACrC,aAAa;CACb,YAAY;CACb;AAED,SAAgB,EAAc,EAAE,kBAA4D;AAC1F,QACE,kBAAC,QAAD;EAAM,WAAU;YACb,EAAO,MAAgB;EACnB,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"TunnelCard.js","names":[],"sources":["../../../src/components/tunnels/TunnelCard.tsx"],"sourcesContent":["import { motion } from 'framer-motion';\nimport { Loader2, Play, Square, Trash2, ExternalLink } from 'lucide-react';\nimport { useTr } from '../../shared/hooks/useTr';\n\nimport type { ListTunnelsQuery } from '@/generated/wspace-operations';\nimport { TunnelStatus, VibeEntityType } from '@/generated/wspace-types';\nimport { TunnelStatusBadge } from './TunnelStatusBadge';\nimport { ProviderBadge } from './ProviderBadge';\nimport { EntityVibeLinkControl } from '../shared/EntityVibeLinkControl';\n\ntype TunnelRow = NonNullable<ListTunnelsQuery['tunnels']>['items'][number];\n\ninterface TunnelCardProps {\n tunnel: TunnelRow;\n isPending?: boolean;\n onOpen: (id: string) => void;\n // Mutation callbacks are optional: the parent omits them when the actor\n // lacks the permission (tunnel:execute for start/stop, tunnel:delete), so\n // the corresponding control is hidden rather than 403-ing on click.\n onStart?: (id: string) => void;\n onStop?: (id: string) => void;\n onDelete?: (id: string, name: string) => void;\n}\n\nexport function TunnelCard({\n tunnel,\n isPending = false,\n onOpen,\n onStart,\n onStop,\n onDelete,\n}: TunnelCardProps) {\n const tr = useTr();\n const canStart =\n !isPending &&\n tunnel.status !== TunnelStatus.Active &&\n tunnel.status !== TunnelStatus.Provisioning;\n const canStop = !isPending && tunnel.status === TunnelStatus.Active;\n const hostname = tunnel.primaryDomain?.hostname;\n const publicUrl = hostname\n ? `${tunnel.protocol.toLowerCase() === 'tcp' ? 'tcp' : 'https'}://${hostname}`\n : null;\n\n return (\n <motion.div\n initial={{ opacity: 0, y: 4 }}\n animate={{ opacity: 1, y: 0 }}\n className=\"rounded-card border border-border-subtle bg-bg-surface shadow-elevation-1 p-5 hover:border-border-strong hover:shadow-elevation-2 transition-all duration-200 ease-[var(--motion-easing-out)]\"\n >\n <div className=\"flex flex-col sm:flex-row sm:items-start sm:justify-between gap-4\">\n <button\n type=\"button\"\n onClick={() => onOpen(tunnel.id)}\n className=\"flex-1 text-left min-w-0 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-focus rounded-button\"\n >\n <div className=\"flex flex-wrap items-center gap-2 mb-1.5\">\n <h3 className=\"text-base font-semibold text-text-primary truncate tracking-tight\">\n {tunnel.name}\n </h3>\n <TunnelStatusBadge status={tunnel.status} />\n <ProviderBadge providerKey={tunnel.providerKey} />\n </div>\n {publicUrl ? (\n <p className=\"text-sm text-text-secondary truncate\">{publicUrl}</p>\n ) : (\n <p className=\"text-sm text-text-muted\">\n {tr('vibecontrols.tunnels.noDomain', 'No domain attached')}\n </p>\n )}\n <p className=\"text-xs font-mono text-text-muted mt-1 tabular-nums\">\n {tunnel.protocol}:{tunnel.localPort} on {tunnel.localHost}\n </p>\n </button>\n\n <div className=\"flex items-center gap-2 flex-shrink-0 flex-wrap\">\n {publicUrl && (\n <a\n href={publicUrl}\n target=\"_blank\"\n rel=\"noreferrer\"\n className=\"inline-flex items-center rounded-button border border-border-subtle px-3 py-1.5 text-xs font-medium text-text-primary hover:bg-bg-sunken hover:border-border-strong transition-colors\"\n onClick={(e) => e.stopPropagation()}\n >\n <ExternalLink className=\"size-3.5 mr-1.5\" />\n {tr('vibecontrols.tunnels.open', 'Open')}\n </a>\n )}\n {isPending && (\n <span className=\"inline-flex items-center rounded-button border border-border-subtle bg-bg-sunken px-3 py-1.5 text-xs text-text-muted\">\n <Loader2 className=\"size-3.5 mr-1.5 animate-spin\" />\n {tunnel.status === 'ACTIVE'\n ? tr('vibecontrols.tunnels.stopping', 'Stopping…')\n : tr('vibecontrols.tunnels.starting', 'Starting…')}\n </span>\n )}\n {canStart && onStart && (\n <button\n type=\"button\"\n onClick={() => onStart(tunnel.id)}\n className=\"inline-flex items-center rounded-button bg-action-primary-bg px-3 py-1.5 text-xs font-medium text-action-primary-text hover:bg-action-primary-bgHover transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-focus\"\n >\n <Play className=\"size-3.5 mr-1.5\" />\n {tr('vibecontrols.tunnels.start', 'Start')}\n </button>\n )}\n {canStop && onStop && (\n <button\n type=\"button\"\n onClick={() => onStop(tunnel.id)}\n className=\"inline-flex items-center rounded-button border border-border-subtle px-3 py-1.5 text-xs font-medium text-text-primary hover:bg-bg-sunken hover:border-border-strong transition-colors\"\n >\n <Square className=\"size-3.5 mr-1.5\" />\n {tr('vibecontrols.tunnels.stop', 'Stop')}\n </button>\n )}\n <EntityVibeLinkControl\n entityType={VibeEntityType.Tunnel}\n entityId={tunnel.id}\n currentVibeId={tunnel.vibeId ?? null}\n currentVisibility={tunnel.visibility ?? null}\n refetchQueries={['ListTunnels']}\n />\n {onDelete && (\n <button\n type=\"button\"\n onClick={() => onDelete(tunnel.id, tunnel.name)}\n className=\"inline-flex items-center rounded-button border border-border-subtle px-2 py-1.5 text-xs text-status-error-text hover:bg-status-error-bg-subtle hover:border-status-error-border transition-colors\"\n aria-label=\"Delete tunnel\"\n >\n <Trash2 className=\"size-3.5\" />\n </button>\n )}\n </div>\n </div>\n {tunnel.lastError && (\n <div className=\"mt-4 rounded-button border border-status-error-border bg-status-error-bg-subtle px-3 py-2 text-xs text-status-error-text\">\n {tunnel.lastError}\n </div>\n )}\n </motion.div>\n );\n}\n"],"mappings":";;;;;;;;;AAwBA,SAAgB,EAAW,EACzB,WACA,eAAY,IACZ,WACA,YACA,WACA,eACkB;CAClB,IAAM,IAAK,GAAO,EACZ,IACJ,CAAC,KACD,EAAO,WAAW,EAAa,UAC/B,EAAO,WAAW,EAAa,cAC3B,IAAU,CAAC,KAAa,EAAO,WAAW,EAAa,QACvD,IAAW,EAAO,eAAe,UACjC,IAAY,IACd,GAAG,EAAO,SAAS,aAAa,KAAK,QAAQ,QAAQ,QAAQ,KAAK,MAClE;AAEJ,QACE,kBAAC,EAAO,KAAR;EACE,SAAS;GAAE,SAAS;GAAG,GAAG;GAAG;EAC7B,SAAS;GAAE,SAAS;GAAG,GAAG;GAAG;EAC7B,WAAU;YAHZ,CAKE,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,UAAD;IACE,MAAK;IACL,eAAe,EAAO,EAAO,GAAG;IAChC,WAAU;cAHZ;KAKE,kBAAC,OAAD;MAAK,WAAU;gBAAf;OACE,kBAAC,MAAD;QAAI,WAAU;kBACX,EAAO;QACL,CAAA;OACL,kBAAC,GAAD,EAAmB,QAAQ,EAAO,QAAU,CAAA;OAC5C,kBAAC,GAAD,EAAe,aAAa,EAAO,aAAe,CAAA;OAC9C;;KACL,IACC,kBAAC,KAAD;MAAG,WAAU;gBAAwC;MAAc,CAAA,GAEnE,kBAAC,KAAD;MAAG,WAAU;gBACV,EAAG,iCAAiC,qBAAqB;MACxD,CAAA;KAEN,kBAAC,KAAD;MAAG,WAAU;gBAAb;OACG,EAAO;OAAS;OAAE,EAAO;OAAU;OAAK,EAAO;OAC9C;;KACG;OAET,kBAAC,OAAD;IAAK,WAAU;cAAf;KACG,KACC,kBAAC,KAAD;MACE,MAAM;MACN,QAAO;MACP,KAAI;MACJ,WAAU;MACV,UAAU,MAAM,EAAE,iBAAiB;gBALrC,CAOE,kBAAC,GAAD,EAAc,WAAU,mBAAoB,CAAA,EAC3C,EAAG,6BAA6B,OAAO,CACtC;;KAEL,KACC,kBAAC,QAAD;MAAM,WAAU;gBAAhB,CACE,kBAAC,GAAD,EAAS,WAAU,gCAAiC,CAAA,EACnD,EAAO,WAAW,WACf,EAAG,iCAAiC,YAAY,GAChD,EAAG,iCAAiC,YAAY,CAC/C;;KAER,KAAY,KACX,kBAAC,UAAD;MACE,MAAK;MACL,eAAe,EAAQ,EAAO,GAAG;MACjC,WAAU;gBAHZ,CAKE,kBAAC,GAAD,EAAM,WAAU,mBAAoB,CAAA,EACnC,EAAG,8BAA8B,QAAQ,CACnC;;KAEV,KAAW,KACV,kBAAC,UAAD;MACE,MAAK;MACL,eAAe,EAAO,EAAO,GAAG;MAChC,WAAU;gBAHZ,CAKE,kBAAC,GAAD,EAAQ,WAAU,mBAAoB,CAAA,EACrC,EAAG,6BAA6B,OAAO,CACjC;;KAEX,kBAAC,GAAD;MACE,YAAY,EAAe;MAC3B,UAAU,EAAO;MACjB,eAAe,EAAO,UAAU;MAChC,mBAAmB,EAAO,cAAc;MACxC,gBAAgB,CAAC,cAAc;MAC/B,CAAA;KACD,KACC,kBAAC,UAAD;MACE,MAAK;MACL,eAAe,EAAS,EAAO,IAAI,EAAO,KAAK;MAC/C,WAAU;MACV,cAAW;gBAEX,kBAAC,GAAD,EAAQ,WAAU,YAAa,CAAA;MACxB,CAAA;KAEP;MACF;MACL,EAAO,aACN,kBAAC,OAAD;GAAK,WAAU;aACZ,EAAO;GACJ,CAAA,CAEG"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"TunnelConnectionCard.js","names":[],"sources":["../../../src/components/tunnels/TunnelConnectionCard.tsx"],"sourcesContent":["import type { FC } from 'react';\nimport { Link2 } from 'lucide-react';\n\nimport type { GetTunnelQuery } from '@/generated/wspace-operations';\nimport { useTr } from '../../shared/hooks/useTr';\nimport { TunnelCopyButton } from './TunnelCopyButton';\nimport { primaryTunnelEndpoint } from './tunnelEndpoints';\n\ntype TunnelDetails = NonNullable<GetTunnelQuery['tunnel']>;\n\ninterface TunnelConnectionCardProps {\n tunnel: TunnelDetails;\n}\n\n/**\n * The one address a client needs, surfaced on Overview so the primary action of\n * the page — \"give me the connection string\" — does not require a tab change.\n *\n * The string is derived from the tunnel's primary domain (the same helper the\n * Endpoints tab uses); when no domain is attached yet there is nothing\n * reachable to copy, so the card explains that instead of offering the local\n * target, which only resolves on the agent host.\n */\nexport const TunnelConnectionCard: FC<TunnelConnectionCardProps> = ({ tunnel }) => {\n const tr = useTr();\n const endpoint = primaryTunnelEndpoint(tunnel);\n\n return (\n <section className=\"rounded-lg border border-border-subtle bg-bg-surface p-4\">\n <h3 className=\"mb-3 flex items-center gap-1.5 text-sm font-semibold text-text-primary\">\n <Link2 className=\"size-4 text-text-secondary\" aria-hidden=\"true\" />\n {tr('vibecontrols.tunnels.overview.connection', 'Connection')}\n </h3>\n\n {endpoint ? (\n <>\n <div className=\"flex items-center gap-2 rounded-md border border-border-subtle bg-bg-sunken px-3 py-2\">\n <code className=\"min-w-0 flex-1 break-all font-mono text-sm text-text-primary\">\n {endpoint.url}\n </code>\n <TunnelCopyButton\n value={endpoint.url}\n ariaLabel={tr(\n 'vibecontrols.tunnels.overview.copyConnection',\n 'Copy connection string'\n )}\n />\n </div>\n <p className=\"mt-2 text-xs text-text-muted\">\n {tr(\n 'vibecontrols.tunnels.overview.connectionHint',\n 'Point your client at this endpoint — it forwards to {{target}}.',\n { target: `${tunnel.localHost}:${tunnel.localPort}` }\n )}\n </p>\n </>\n ) : (\n <p className=\"text-sm text-text-muted\">\n {tr(\n 'vibecontrols.tunnels.overview.connectionPending',\n 'No public endpoint yet. Start the tunnel — its address appears here once a domain is attached.'\n )}\n </p>\n )}\n </section>\n );\n};\n"],"mappings":";;;;;;AAuBA,IAAa,KAAuD,EAAE,gBAAa;CACjF,IAAM,IAAK,GAAO,EACZ,IAAW,EAAsB,EAAO;AAE9C,QACE,kBAAC,WAAD;EAAS,WAAU;YAAnB,CACE,kBAAC,MAAD;GAAI,WAAU;aAAd,CACE,kBAAC,GAAD;IAAO,WAAU;IAA6B,eAAY;IAAS,CAAA,EAClE,EAAG,4CAA4C,aAAa,CAC1D;MAEJ,IACC,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,QAAD;IAAM,WAAU;cACb,EAAS;IACL,CAAA,EACP,kBAAC,GAAD;IACE,OAAO,EAAS;IAChB,WAAW,EACT,gDACA,yBACD;IACD,CAAA,CACE;MACN,kBAAC,KAAD;GAAG,WAAU;aACV,EACC,gDACA,mEACA,EAAE,QAAQ,GAAG,EAAO,UAAU,GAAG,EAAO,aAAa,CACtD;GACC,CAAA,CACH,EAAA,CAAA,GAEH,kBAAC,KAAD;GAAG,WAAU;aACV,EACC,mDACA,iGACD;GACC,CAAA,CAEE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"TunnelCopyButton.js","names":[],"sources":["../../../src/components/tunnels/TunnelCopyButton.tsx"],"sourcesContent":["import type { FC } from 'react';\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport { Copy, Check } from 'lucide-react';\n\nimport { isNative, nativeCopyText, nativeToast } from '@/utils/nativeBridge';\nimport { useTr } from '../../shared/hooks/useTr';\n\ninterface TunnelCopyButtonProps {\n /** Exact text placed on the clipboard. */\n value: string;\n /** Accessible name, e.g. \"Copy connection string\". */\n ariaLabel: string;\n}\n\n/**\n * Copy-to-clipboard control shared by the Endpoints tab and the Overview\n * \"Connection\" card. Routes through the native bridge so the packaged desktop\n * and mobile shells use their own clipboard, and clears its confirmation timer\n * on unmount.\n */\nexport const TunnelCopyButton: FC<TunnelCopyButtonProps> = ({ value, ariaLabel }) => {\n const tr = useTr();\n const [copied, setCopied] = useState(false);\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(\n () => () => {\n if (timerRef.current) clearTimeout(timerRef.current);\n },\n []\n );\n\n const handleCopy = useCallback(async (): Promise<void> => {\n try {\n await nativeCopyText(value);\n } catch {\n // Clipboard access can be denied (insecure context, permission policy).\n // The value stays selectable on screen, so there is nothing to recover.\n return;\n }\n setCopied(true);\n if (isNative()) void nativeToast(tr('vibecontrols.tunnels.copied', 'Copied'));\n if (timerRef.current) clearTimeout(timerRef.current);\n timerRef.current = setTimeout(() => setCopied(false), 1500);\n }, [tr, value]);\n\n return (\n <button\n type=\"button\"\n onClick={() => void handleCopy()}\n aria-label={ariaLabel}\n className=\"inline-flex flex-shrink-0 items-center rounded-md border border-border-default px-2 py-1 text-xs text-text-primary hover:bg-bg-elevated focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-focus\"\n >\n {copied ? (\n <Check className=\"size-3.5\" aria-hidden=\"true\" />\n ) : (\n <Copy className=\"size-3.5\" aria-hidden=\"true\" />\n )}\n </button>\n );\n};\n"],"mappings":";;;;;;AAoBA,IAAa,KAA+C,EAAE,UAAO,mBAAgB;CACnF,IAAM,IAAK,GAAO,EACZ,CAAC,GAAQ,KAAa,EAAS,GAAM,EACrC,IAAW,EAA6C,KAAK;AAEnE,eACc;AACV,EAAI,EAAS,WAAS,aAAa,EAAS,QAAQ;IAEtD,EAAE,CACH;CAED,IAAM,IAAa,EAAY,YAA2B;AACxD,MAAI;AACF,SAAM,EAAe,EAAM;UACrB;AAGN;;AAKF,EAHA,EAAU,GAAK,EACX,GAAU,IAAO,EAAY,EAAG,+BAA+B,SAAS,CAAC,EACzE,EAAS,WAAS,aAAa,EAAS,QAAQ,EACpD,EAAS,UAAU,iBAAiB,EAAU,GAAM,EAAE,KAAK;IAC1D,CAAC,GAAI,EAAM,CAAC;AAEf,QACE,kBAAC,UAAD;EACE,MAAK;EACL,eAAe,KAAK,GAAY;EAChC,cAAY;EACZ,WAAU;YAGR,EADD,IACE,IAEA,GAFD;GAAO,WAAU;GAAW,eAAY;GAAS,CAED;EAE3C,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"TunnelCreateWizard.js","names":[],"sources":["../../../src/components/tunnels/TunnelCreateWizard.tsx"],"sourcesContent":["import { useState, useMemo, useCallback } from 'react';\nimport { useNavigate } from 'react-router';\nimport { motion, AnimatePresence } from 'framer-motion';\nimport { Stepper } from '@burdenoff/fe-libs/ui';\nimport { useTr } from '../../shared/hooks/useTr';\nimport { useEventBus } from '@burdenoff/fe-libs/shared/events';\nimport { useVibeControls } from '@/providers/VibeControlsProvider';\n\nimport { PageHeader } from '@/components/shared/PageHeader';\nimport { LoadingState } from '@/components/shared/LoadingState';\nimport { ErrorState } from '@/components/shared/ErrorState';\nimport { QuotaExhaustedDialog } from '@/components/shared/QuotaExhaustedDialog';\nimport {\n TunnelEnvironment,\n TunnelProtocol,\n TunnelProviderKey,\n type CreateTunnelInput,\n} from '@/generated/wspace-types';\nimport {\n useCreateTunnelMutation,\n useListTunnelProvidersQuery,\n useListAgentsQuery,\n} from '@/generated/wspace-operations';\nimport {\n getQuotaDialogContent,\n markQuotaHandledLocally,\n isQuotaExhaustedError,\n} from '@/utils/quotaUtils';\nimport { EntityTagPicker } from '@/components/shared/EntityTagPicker';\nimport { useDraftEntityTags } from '@/hooks/useDraftEntityTags';\nimport {\n LinkToVibePanel,\n LINK_TO_VIBE_DEFAULT,\n linkToVibeInput,\n type LinkToVibeValue,\n} from '@/components/shared';\n\nconst SUBDOMAIN_RE = /^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$/;\n\ntype HostnameKind = 'managed' | 'custom' | 'auto';\n\ninterface WizardState {\n providerKey: TunnelProviderKey | '';\n agentId: string;\n name: string;\n description: string;\n protocol: TunnelProtocol;\n localHost: string;\n localPort: number;\n hostnameKind: HostnameKind;\n subdomain: string;\n environment: TunnelEnvironment;\n customDomain: string;\n basicAuthUser: string;\n basicAuthPassword: string;\n}\n\nconst INITIAL_STATE: WizardState = {\n // Default to Vibe Tunnels as the preferred provider; users can still pick\n // Cloudflare Tunnels from the provider list.\n providerKey: TunnelProviderKey.Vibetunnels,\n agentId: '',\n name: '',\n description: '',\n protocol: TunnelProtocol.Http,\n localHost: '127.0.0.1',\n localPort: 3000,\n hostnameKind: 'managed',\n subdomain: '',\n environment: TunnelEnvironment.Prod,\n customDomain: '',\n basicAuthUser: '',\n basicAuthPassword: '',\n};\n\nconst STEPS = [\n { id: 'provider', label: 'Provider' },\n { id: 'target', label: 'Protocol & target' },\n { id: 'hostname', label: 'Hostname' },\n { id: 'policies', label: 'Policies' },\n { id: 'review', label: 'Review' },\n] as const;\n\nexport function TunnelCreateWizard() {\n const tr = useTr();\n const navigate = useNavigate();\n const bus = useEventBus();\n const { workspaceId } = useVibeControls();\n const [step, setStep] = useState(0);\n const [state, setState] = useState<WizardState>(INITIAL_STATE);\n const [submitError, setSubmitError] = useState<string | null>(null);\n const [isFlushingTags, setIsFlushingTags] = useState(false);\n const [showQuotaExhausted, setShowQuotaExhausted] = useState(false);\n // G7: Optional link to a Vibe + visibility, threaded into CreateTunnelInput.\n const [vibeLink, setVibeLink] = useState<LinkToVibeValue>(LINK_TO_VIBE_DEFAULT);\n // Tags selected before the tunnel exists — persisted right after create.\n const { setDraftTagIds, flushTags } = useDraftEntityTags('VIBECONTROLS_TUNNEL');\n\n const {\n data: providersData,\n loading: providersLoading,\n error: providersError,\n } = useListTunnelProvidersQuery();\n const { data: agentsData } = useListAgentsQuery({ variables: { pagination: { limit: 100 } } });\n\n const [createTunnel, { loading: creating }] = useCreateTunnelMutation();\n\n const update = useCallback(<K extends keyof WizardState>(key: K, value: WizardState[K]) => {\n setState((prev) => ({ ...prev, [key]: value }));\n }, []);\n\n const selectProvider = useCallback((providerKey: TunnelProviderKey) => {\n setState((prev) => ({\n ...prev,\n providerKey,\n hostnameKind: providerKey === TunnelProviderKey.Cloudflare ? 'auto' : 'managed',\n }));\n }, []);\n\n // VibeTunnels first, Cloudflare second, everything else alphabetically.\n const orderedProviders = useMemo(\n () =>\n [...(providersData?.tunnelProviders ?? [])].sort((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 [providersData]\n );\n\n const selectedProvider = useMemo(\n () => orderedProviders.find((p: { key: string }) => p.key === state.providerKey),\n [orderedProviders, state.providerKey]\n );\n\n const caps = selectedProvider?.capabilities;\n const supportsAutoHostname = state.providerKey === TunnelProviderKey.Cloudflare;\n const protocolOptions = useMemo(() => {\n if (!caps) return [TunnelProtocol.Http];\n const list: TunnelProtocol[] = [];\n if (caps.supportsHttp) list.push(TunnelProtocol.Http);\n if (caps.supportsHttps) list.push(TunnelProtocol.Https);\n if (caps.supportsTcp) list.push(TunnelProtocol.Tcp);\n return list;\n }, [caps]);\n\n const canAdvance = useMemo(() => {\n if (step === 0) return Boolean(state.providerKey && state.agentId && state.name.trim());\n if (step === 1) return state.localPort > 0 && state.localPort < 65536;\n if (step === 2) {\n if (state.hostnameKind === 'managed')\n return Boolean(state.subdomain && SUBDOMAIN_RE.test(state.subdomain));\n if (state.hostnameKind === 'custom') return state.customDomain.trim().includes('.');\n return supportsAutoHostname;\n }\n return true;\n }, [step, state, supportsAutoHostname]);\n\n const next = () => setStep((s) => Math.min(s + 1, STEPS.length - 1));\n const back = () => setStep((s) => Math.max(s - 1, 0));\n\n const submit = async () => {\n setSubmitError(null);\n try {\n const input: CreateTunnelInput = {\n agentId: state.agentId,\n name: state.name,\n description: state.description || undefined,\n providerKey: state.providerKey as TunnelProviderKey,\n protocol: state.protocol,\n localHost: state.localHost,\n localPort: state.localPort,\n environment: state.environment,\n basicAuthUser: state.basicAuthUser || undefined,\n basicAuthPassword: state.basicAuthPassword || undefined,\n managedSubdomain: state.hostnameKind === 'managed' ? state.subdomain : undefined,\n ...linkToVibeInput(vibeLink),\n };\n const result = await createTunnel({ variables: { input } });\n\n if (result.error) {\n if (isQuotaExhaustedError(result.error)) {\n markQuotaHandledLocally();\n setShowQuotaExhausted(true);\n bus.emitCustom('vibecontrols.quota.tunnel_limit_hit', {\n workspaceId: workspaceId ?? undefined,\n });\n return;\n }\n\n setSubmitError(result.error.message);\n return;\n }\n\n const id = result.data?.createTunnel.id;\n if (id) {\n bus.emitCustom('vibecontrols.tunnel.created', {\n workspaceId: workspaceId ?? undefined,\n tunnelId: id,\n });\n setIsFlushingTags(true);\n try {\n await flushTags(id);\n } finally {\n setIsFlushingTags(false);\n }\n // Land on the detail page and immediately prompt to start — a freshly\n // created tunnel is a DRAFT, so offer to bring it online instead of\n // making the user hunt for the Start button.\n navigate(`/vibecontrols/tunnels/${id}`, { state: { autoPromptStart: true } });\n }\n } catch (err) {\n if (isQuotaExhaustedError(err)) {\n setSubmitError(null);\n markQuotaHandledLocally();\n setShowQuotaExhausted(true);\n bus.emitCustom('vibecontrols.quota.tunnel_limit_hit', {\n workspaceId: workspaceId ?? undefined,\n });\n return;\n }\n\n setSubmitError(err instanceof Error ? err.message : String(err));\n }\n };\n\n if (providersLoading) return <LoadingState message=\"Loading providers\" />;\n if (providersError) {\n return (\n <ErrorState\n title=\"Failed to load providers\"\n message={providersError.message}\n onRetry={() => window.location.reload()}\n />\n );\n }\n\n return (\n <div className=\"p-6 max-w-3xl mx-auto\">\n <PageHeader\n breadcrumb={[{ label: 'Tunnels', path: '/vibecontrols/tunnels' }, { label: 'New tunnel' }]}\n title={tr('vibecontrols.tunnels.createTitle', 'Create tunnel')}\n description={tr(\n 'vibecontrols.tunnels.createDescription',\n 'Expose a local service through a managed tunnel.'\n )}\n />\n\n <Stepper\n className=\"mb-6\"\n active={step}\n onStepClick={(i) => i <= step && setStep(i)}\n steps={STEPS.map((s) => ({ key: s.id, label: s.label }))}\n />\n\n <AnimatePresence mode=\"wait\">\n <motion.div\n key={step}\n initial={{ opacity: 0, x: 6 }}\n animate={{ opacity: 1, x: 0 }}\n exit={{ opacity: 0, x: -6 }}\n transition={{ duration: 0.15 }}\n className=\"rounded-lg border border-border-subtle bg-bg-surface p-6\"\n >\n {step === 0 && (\n <div className=\"space-y-4\">\n <h3 className=\"text-sm font-semibold text-text-primary\">Provider</h3>\n <div className=\"grid gap-3 sm:grid-cols-2\">\n {orderedProviders.map(\n (p: {\n id: string;\n key: TunnelProviderKey;\n displayName: string;\n description?: string | null;\n }) => (\n <button\n key={p.id}\n type=\"button\"\n onClick={() => selectProvider(p.key)}\n className={`rounded-lg border p-4 text-left transition-colors ${\n state.providerKey === p.key\n ? 'border-action-primary-bg bg-bg-sunken'\n : 'border-border-subtle hover:border-border-default'\n }`}\n >\n <div className=\"font-semibold text-text-primary\">{p.displayName}</div>\n <div className=\"text-xs text-text-muted mt-1\">{p.key}</div>\n {p.description && (\n <div className=\"text-xs text-text-secondary mt-2\">{p.description}</div>\n )}\n </button>\n )\n )}\n </div>\n <LabeledField label=\"Agent\">\n <select\n value={state.agentId}\n onChange={(e) => update('agentId', e.target.value)}\n className=\"w-full rounded-md border border-border-default bg-bg-surface px-3 py-2 text-sm text-text-primary\"\n >\n <option value=\"\">Select agent</option>\n {(agentsData?.vibecontrolsAgents ?? []).map((a: { id: string; name: string }) => (\n <option key={a.id} value={a.id}>\n {a.name}\n </option>\n ))}\n </select>\n </LabeledField>\n <LabeledField label=\"Name\">\n <input\n aria-label=\"My dev tunnel\"\n type=\"text\"\n value={state.name}\n onChange={(e) => update('name', e.target.value)}\n placeholder=\"My dev tunnel\"\n className=\"w-full rounded-md border border-border-default bg-bg-surface px-3 py-2 text-sm text-text-primary placeholder:text-text-muted\"\n />\n </LabeledField>\n <LabeledField label=\"Description (optional)\">\n <input\n aria-label=\"control\"\n type=\"text\"\n value={state.description}\n onChange={(e) => update('description', e.target.value)}\n className=\"w-full rounded-md border border-border-default bg-bg-surface px-3 py-2 text-sm text-text-primary placeholder:text-text-muted\"\n />\n </LabeledField>\n </div>\n )}\n\n {step === 1 && (\n <div className=\"space-y-4\">\n <h3 className=\"text-sm font-semibold text-text-primary\">Protocol & target</h3>\n <LabeledField label=\"Protocol\">\n <div className=\"flex gap-2\">\n {protocolOptions.map((proto) => (\n <button\n key={proto}\n type=\"button\"\n onClick={() => update('protocol', proto)}\n className={`rounded-md border px-4 py-2 text-sm ${\n state.protocol === proto\n ? 'border-action-primary-bg bg-bg-sunken text-text-primary'\n : 'border-border-subtle text-text-secondary hover:border-border-default'\n }`}\n >\n {proto}\n </button>\n ))}\n </div>\n </LabeledField>\n <LabeledField label=\"Local host\">\n <input\n aria-label=\"control\"\n type=\"text\"\n value={state.localHost}\n onChange={(e) => update('localHost', e.target.value)}\n className=\"w-full rounded-md border border-border-default bg-bg-surface px-3 py-2 text-sm text-text-primary\"\n />\n </LabeledField>\n <LabeledField label=\"Local port\">\n <input\n aria-label=\"control\"\n type=\"number\"\n value={state.localPort}\n onChange={(e) => update('localPort', parseInt(e.target.value, 10) || 0)}\n min={1}\n max={65535}\n className=\"w-full rounded-md border border-border-default bg-bg-surface px-3 py-2 text-sm text-text-primary\"\n />\n </LabeledField>\n </div>\n )}\n\n {step === 2 && (\n <div className=\"space-y-4\">\n <h3 className=\"text-sm font-semibold text-text-primary\">Hostname</h3>\n <div className=\"flex gap-2\">\n {caps?.supportsManagedSubdomains && (\n <HostnameKindButton\n active={state.hostnameKind === 'managed'}\n onClick={() => update('hostnameKind', 'managed')}\n label=\"Managed subdomain\"\n hint=\"*.vibetunnels.com\"\n />\n )}\n {caps?.supportsCustomDomains && (\n <HostnameKindButton\n active={state.hostnameKind === 'custom'}\n onClick={() => update('hostnameKind', 'custom')}\n label=\"Custom domain\"\n hint=\"TXT verification\"\n />\n )}\n {supportsAutoHostname && (\n <HostnameKindButton\n active={state.hostnameKind === 'auto'}\n onClick={() => update('hostnameKind', 'auto')}\n label=\"Auto\"\n hint=\"assigned by Cloudflare\"\n />\n )}\n </div>\n\n {state.hostnameKind === 'managed' && (\n <>\n <LabeledField label=\"Environment\">\n <div className=\"flex gap-2\">\n <button\n type=\"button\"\n onClick={() => update('environment', TunnelEnvironment.Prod)}\n className={`rounded-md border px-4 py-2 text-sm ${\n state.environment === TunnelEnvironment.Prod\n ? 'border-action-primary-bg bg-bg-sunken text-text-primary'\n : 'border-border-subtle text-text-secondary hover:border-border-default'\n }`}\n >\n Prod (vibetunnels.com)\n </button>\n <button\n type=\"button\"\n onClick={() => update('environment', TunnelEnvironment.Alpha)}\n className={`rounded-md border px-4 py-2 text-sm ${\n state.environment === TunnelEnvironment.Alpha\n ? 'border-action-primary-bg bg-bg-sunken text-text-primary'\n : 'border-border-subtle text-text-secondary hover:border-border-default'\n }`}\n >\n Alpha\n </button>\n </div>\n </LabeledField>\n <LabeledField label=\"Subdomain label\">\n <input\n aria-label=\"demo\"\n type=\"text\"\n value={state.subdomain}\n onChange={(e) => update('subdomain', e.target.value.toLowerCase())}\n placeholder=\"demo\"\n className=\"w-full rounded-md border border-border-default bg-bg-surface px-3 py-2 text-sm text-text-primary\"\n />\n </LabeledField>\n {state.subdomain && (\n <p className=\"text-xs text-text-secondary\">\n Will be reserved as{' '}\n <span className=\"font-mono text-text-primary\">\n {state.subdomain}\n {state.environment === TunnelEnvironment.Alpha\n ? '.alpha.vibetunnels.com'\n : '.vibetunnels.com'}\n </span>\n </p>\n )}\n </>\n )}\n\n {state.hostnameKind === 'custom' && (\n <LabeledField label=\"Custom domain\">\n <input\n aria-label=\"preview.example.com\"\n type=\"text\"\n value={state.customDomain}\n onChange={(e) => update('customDomain', e.target.value.toLowerCase())}\n placeholder=\"preview.example.com\"\n className=\"w-full rounded-md border border-border-default bg-bg-surface px-3 py-2 text-sm text-text-primary\"\n />\n <p className=\"text-xs text-text-muted mt-2\">\n Custom domains are registered on create but must be verified via a TXT record\n before they can be attached. You'll see the verification challenge in the\n Domains tab after creation.\n </p>\n </LabeledField>\n )}\n </div>\n )}\n\n {step === 3 && (\n <div className=\"space-y-4\">\n <h3 className=\"text-sm font-semibold text-text-primary\">Policies (optional)</h3>\n <LabeledField label=\"Basic auth user\">\n <input\n aria-label=\"control\"\n type=\"text\"\n value={state.basicAuthUser}\n onChange={(e) => update('basicAuthUser', e.target.value)}\n className=\"w-full rounded-md border border-border-default bg-bg-surface px-3 py-2 text-sm text-text-primary\"\n />\n </LabeledField>\n <LabeledField label=\"Basic auth password\">\n <input\n aria-label=\"control\"\n type=\"password\"\n value={state.basicAuthPassword}\n onChange={(e) => update('basicAuthPassword', e.target.value)}\n className=\"w-full rounded-md border border-border-default bg-bg-surface px-3 py-2 text-sm text-text-primary\"\n />\n </LabeledField>\n <LinkToVibePanel value={vibeLink} onChange={setVibeLink} disabled={creating} />\n </div>\n )}\n\n {step === 4 && (\n <div className=\"space-y-3\">\n <h3 className=\"text-sm font-semibold text-text-primary\">\n {tr('vibecontrols.tunnels.review', 'Review')}\n </h3>\n <dl className=\"grid grid-cols-[auto_1fr] gap-x-4 gap-y-2 text-sm\">\n <dt className=\"text-text-muted\">Provider</dt>\n <dd className=\"text-text-primary\">{state.providerKey}</dd>\n <dt className=\"text-text-muted\">Name</dt>\n <dd className=\"text-text-primary\">{state.name}</dd>\n <dt className=\"text-text-muted\">Agent</dt>\n <dd className=\"text-text-primary font-mono\">{state.agentId}</dd>\n <dt className=\"text-text-muted\">Protocol</dt>\n <dd className=\"text-text-primary\">{state.protocol}</dd>\n <dt className=\"text-text-muted\">Target</dt>\n <dd className=\"text-text-primary font-mono\">\n {state.localHost}:{state.localPort}\n </dd>\n <dt className=\"text-text-muted\">Hostname</dt>\n <dd className=\"text-text-primary\">\n {state.hostnameKind === 'managed'\n ? `${state.subdomain}.${state.environment === 'ALPHA' ? 'alpha.' : ''}vibetunnels.com`\n : state.hostnameKind === 'custom'\n ? state.customDomain\n : 'auto-assigned'}\n </dd>\n <dt className=\"text-text-muted\">Basic auth</dt>\n <dd className=\"text-text-primary\">{state.basicAuthUser ? 'yes' : 'no'}</dd>\n </dl>\n <div className=\"border-t border-border-subtle pt-3\">\n <h4 className=\"mb-2 text-sm font-medium text-text-secondary\">\n {tr('vibecontrols.tunnels.tags', 'Tags')}\n </h4>\n <EntityTagPicker entityType=\"VIBECONTROLS_TUNNEL\" onDraftChange={setDraftTagIds} />\n </div>\n {submitError && (\n <div className=\"rounded-card border border-status-error-border bg-status-error-bg-subtle p-3 text-sm text-status-error-text\">\n {submitError}\n </div>\n )}\n </div>\n )}\n </motion.div>\n </AnimatePresence>\n\n <div className=\"flex items-center justify-between mt-4\">\n <button\n type=\"button\"\n disabled={step === 0}\n onClick={back}\n className=\"rounded-md border border-border-default px-4 py-2 text-sm text-text-primary hover:bg-bg-elevated disabled:opacity-50\"\n >\n {tr('vibecontrols.tunnels.back', 'Back')}\n </button>\n {step < STEPS.length - 1 ? (\n <button\n type=\"button\"\n disabled={!canAdvance}\n onClick={next}\n className=\"rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-fg hover:bg-action-primary-bg-hover disabled:opacity-50\"\n >\n {tr('vibecontrols.tunnels.next', 'Next')}\n </button>\n ) : (\n <button\n type=\"button\"\n disabled={creating || isFlushingTags}\n onClick={() => void submit()}\n className=\"rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-fg hover:bg-action-primary-bg-hover disabled:opacity-50\"\n >\n {creating\n ? tr('vibecontrols.tunnels.creating', 'Creating...')\n : tr('vibecontrols.tunnels.createTunnel', 'Create tunnel')}\n </button>\n )}\n </div>\n\n <QuotaExhaustedDialog\n isOpen={showQuotaExhausted}\n onClose={() => setShowQuotaExhausted(false)}\n onConfirm={() => {\n setShowQuotaExhausted(false);\n navigate('/billing/plans');\n }}\n {...getQuotaDialogContent('tunnel-subdomain')}\n />\n </div>\n );\n}\n\nfunction LabeledField({ label, children }: { label: string; children: React.ReactNode }) {\n return (\n <label className=\"block\">\n <span className=\"text-xs font-medium text-text-secondary\">{label}</span>\n <div className=\"mt-1\">{children}</div>\n </label>\n );\n}\n\nfunction HostnameKindButton({\n active,\n onClick,\n label,\n hint,\n}: {\n active: boolean;\n onClick: () => void;\n label: string;\n hint: string;\n}) {\n return (\n <button\n type=\"button\"\n onClick={onClick}\n className={`flex-1 rounded-md border p-3 text-left transition-colors ${\n active\n ? 'border-action-primary-bg bg-bg-sunken'\n : 'border-border-subtle hover:border-border-default'\n }`}\n >\n <div className=\"text-sm font-medium text-text-primary\">{label}</div>\n <div className=\"text-xs text-text-muted mt-0.5\">{hint}</div>\n </button>\n );\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"TunnelMetricTiles.js","names":[],"sources":["../../../src/components/tunnels/TunnelMetricTiles.tsx"],"sourcesContent":["import type { FC, ReactNode } from 'react';\nimport { useMemo } from 'react';\nimport { ArrowDownUp, Activity, PlugZap } from 'lucide-react';\n\nimport { useGetTunnelUsageQuery } from '@/generated/wspace-operations';\nimport { LoadingState } from '@/components/shared/LoadingState';\nimport { EmptyState } from '@/components/shared/EmptyState';\nimport { ErrorState } from '@/components/shared/ErrorState';\nimport { useTr } from '../../shared/hooks/useTr';\nimport { TunnelSparkline } from './TunnelSparkline';\nimport {\n TUNNEL_METRIC_WINDOW_HOURS,\n averageRatePerHour,\n formatBytes,\n formatPerHourRate,\n summariseTunnelUsage,\n} from './tunnelMetrics';\n\nconst HOUR_MS = 60 * 60 * 1000;\n\ninterface TunnelMetricTilesProps {\n tunnelId: string;\n}\n\n/**\n * Traffic tiles for the tunnel Overview tab, sourced entirely from the hourly\n * `tunnelUsage` roll-up (`bytesIn`, `bytesOut`, `requests`, `connections`).\n *\n * Deliberately limited to those four fields: `TunnelUsageBucket` carries no\n * latency or error counters, so per-tunnel latency / error-rate tiles are not\n * rendered rather than filled with an invented number.\n */\nexport const TunnelMetricTiles: FC<TunnelMetricTilesProps> = ({ tunnelId }) => {\n const tr = useTr();\n\n // Snap the window to hour boundaries so the query variables stay stable\n // across re-renders (and share Apollo's cache entry between visits).\n const [from, to] = useMemo(() => {\n const end = Math.ceil(Date.now() / HOUR_MS) * HOUR_MS;\n const start = end - TUNNEL_METRIC_WINDOW_HOURS * HOUR_MS;\n return [new Date(start).toISOString(), new Date(end).toISOString()];\n }, []);\n\n const { data, loading, error, refetch } = useGetTunnelUsageQuery({\n variables: { tunnelId, from, to },\n fetchPolicy: 'cache-and-network',\n });\n\n const summary = useMemo(() => summariseTunnelUsage(data?.tunnelUsage ?? []), [data?.tunnelUsage]);\n\n if (loading && !data) {\n return (\n <LoadingState\n size=\"sm\"\n message={tr('vibecontrols.tunnels.overview.metrics.loading', 'Loading traffic')}\n />\n );\n }\n\n if (error) {\n return (\n <ErrorState\n title={tr('vibecontrols.tunnels.overview.metrics.errorTitle', 'Traffic unavailable')}\n message={error.message}\n onRetry={() => void refetch()}\n />\n );\n }\n\n if (summary.ordered.length === 0) {\n return (\n <EmptyState\n title={tr('vibecontrols.tunnels.overview.metrics.emptyTitle', 'No traffic in the last 24h')}\n description={tr(\n 'vibecontrols.tunnels.overview.metrics.emptyDescription',\n 'Traffic tiles appear once the tunnel carries a request. The backend rolls usage up hourly.'\n )}\n />\n );\n }\n\n const rate = formatPerHourRate(averageRatePerHour(summary.requests, TUNNEL_METRIC_WINDOW_HOURS));\n const rateUnit = {\n sec: tr('vibecontrols.tunnels.overview.metrics.perSecond', '/s'),\n min: tr('vibecontrols.tunnels.overview.metrics.perMinute', '/min'),\n hr: tr('vibecontrols.tunnels.overview.metrics.perHour', '/hr'),\n }[rate.unit];\n\n return (\n <div className=\"grid grid-cols-1 gap-3 sm:grid-cols-2\">\n <MetricTile\n icon={<ArrowDownUp className=\"size-3.5\" aria-hidden=\"true\" />}\n label={tr('vibecontrols.tunnels.overview.metrics.dataTransferred', 'Data transferred')}\n hint={tr('vibecontrols.tunnels.overview.metrics.last24h', 'Last 24h')}\n value={formatBytes(summary.bytesTotal)}\n subtitle={tr(\n 'vibecontrols.tunnels.overview.metrics.inOutSplit',\n '{{in}} in · {{out}} out',\n { in: formatBytes(summary.bytesIn), out: formatBytes(summary.bytesOut) }\n )}\n series={summary.bytesSeries}\n seriesColorClass=\"text-accent-teal\"\n seriesLabel={tr(\n 'vibecontrols.tunnels.overview.metrics.dataTransferredSeries',\n 'Bytes transferred per hour over the last 24 hours'\n )}\n />\n\n <MetricTile\n icon={<Activity className=\"size-3.5\" aria-hidden=\"true\" />}\n label={tr('vibecontrols.tunnels.overview.metrics.requestRate', 'Request rate')}\n hint={tr('vibecontrols.tunnels.overview.metrics.average', 'Average')}\n value={`${rate.value}${rateUnit}`}\n subtitle={tr(\n 'vibecontrols.tunnels.overview.metrics.requestTotal',\n '{{count}} requests in the last 24h',\n { count: summary.requests.toLocaleString() }\n )}\n series={summary.requestSeries}\n seriesColorClass=\"text-accent-purple\"\n seriesLabel={tr(\n 'vibecontrols.tunnels.overview.metrics.requestRateSeries',\n 'Requests per hour over the last 24 hours'\n )}\n />\n\n <div className=\"sm:col-span-2\">\n <MetricTile\n icon={<PlugZap className=\"size-3.5\" aria-hidden=\"true\" />}\n label={tr('vibecontrols.tunnels.overview.metrics.connections', 'Connections')}\n hint={tr('vibecontrols.tunnels.overview.metrics.last24h', 'Last 24h')}\n value={summary.connections.toLocaleString()}\n subtitle={tr(\n 'vibecontrols.tunnels.overview.metrics.peakConnections',\n 'Peak {{count}} in a single hour',\n { count: summary.peakConnections.toLocaleString() }\n )}\n series={summary.connectionSeries}\n seriesColorClass=\"text-text-link\"\n seriesLabel={tr(\n 'vibecontrols.tunnels.overview.metrics.connectionsSeries',\n 'Connections per hour over the last 24 hours'\n )}\n />\n </div>\n </div>\n );\n};\n\ninterface MetricTileProps {\n icon: ReactNode;\n label: string;\n hint: string;\n value: string;\n subtitle: string;\n series: readonly number[];\n seriesColorClass: string;\n seriesLabel: string;\n}\n\nconst MetricTile: FC<MetricTileProps> = ({\n icon,\n label,\n hint,\n value,\n subtitle,\n series,\n seriesColorClass,\n seriesLabel,\n}) => (\n <div className=\"rounded-lg border border-border-subtle bg-bg-sunken p-3\">\n <div className=\"flex items-center gap-1.5 text-xs font-medium text-text-secondary\">\n <span className=\"text-text-muted\">{icon}</span>\n <span className=\"truncate\">{label}</span>\n <span className=\"ml-auto flex-shrink-0 text-text-muted\">{hint}</span>\n </div>\n <div className=\"mt-2 flex items-end justify-between gap-3\">\n <span className=\"text-lg font-semibold tabular-nums text-text-primary\">{value}</span>\n <TunnelSparkline\n values={series}\n ariaLabel={seriesLabel}\n className={`h-6 w-24 flex-shrink-0 ${seriesColorClass}`}\n />\n </div>\n <p className=\"mt-1 text-xs text-text-muted\">{subtitle}</p>\n </div>\n);\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"TunnelPublicAccessPanel.js","names":[],"sources":["../../../src/components/tunnels/TunnelPublicAccessPanel.tsx"],"sourcesContent":["import type { FC } from 'react';\nimport { useState } from 'react';\nimport { Globe, Copy, Check, Clock, ShieldOff } from 'lucide-react';\n\nimport { notify } from '@/lib/toast';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport {\n useSetTunnelPublicAccessMutation,\n useRevokeTunnelPublicAccessMutation,\n} from '@/generated/wspace-operations';\n\ninterface TunnelPublicAccessPanelProps {\n tunnelId: string;\n tunnelStatus: string;\n publicAccessExpiresAt?: string | null;\n publicUrl?: string | null;\n canUpdate: boolean;\n onChanged: () => void;\n}\n\n// TTL choices in seconds, inside the svc's 300 (5m) … 2592000 (30d) bounds.\nconst TTL_OPTIONS = [\n { key: '1h', seconds: 3600 },\n { key: '4h', seconds: 14_400 },\n { key: '24h', seconds: 86_400 },\n { key: '7d', seconds: 604_800 },\n];\n\n/**\n * TunnelPublicAccessPanel — grant a time-boxed public link to a tunnel and have it tear itself down.\n * Picking a window stamps `publicAccessExpiresAt = now + ttl`; a backend sweep stops the tunnel (the\n * public URL goes dead) the moment it lapses, so a \"share my localhost for 4 hours\" or \"open this DB\n * port to a contractor until tonight\" link can't outlive its purpose. Revoke kills it immediately.\n * This is the UI half of the beta-tester-tunnel / local-port-share / database-port-forward stories.\n */\nexport const TunnelPublicAccessPanel: FC<TunnelPublicAccessPanelProps> = ({\n tunnelId,\n tunnelStatus,\n publicAccessExpiresAt,\n publicUrl,\n canUpdate,\n onChanged,\n}) => {\n const { t } = useI18n();\n const tr = (key: string, fallback: string): string => {\n const v = t(key);\n return v === key ? fallback : v;\n };\n\n const [ttlSeconds, setTtlSeconds] = useState(TTL_OPTIONS[1].seconds);\n const [copied, setCopied] = useState(false);\n const [setAccess, { loading: granting }] = useSetTunnelPublicAccessMutation();\n const [revokeAccess, { loading: revoking }] = useRevokeTunnelPublicAccessMutation();\n\n const expiresAt = publicAccessExpiresAt ? new Date(publicAccessExpiresAt) : null;\n const isActive = Boolean(expiresAt && expiresAt.getTime() > Date.now());\n const ttlLabel = (key: string): string =>\n ({ '1h': '1 hour', '4h': '4 hours', '24h': '24 hours', '7d': '7 days' })[key] ?? key;\n\n const handleGrant = async (): Promise<void> => {\n try {\n await setAccess({ variables: { tunnelId, ttlSeconds } });\n onChanged();\n notify.success(\n tr('tunPublic.granted', 'Public access granted'),\n tr('tunPublic.grantedDesc', 'The link auto-expires when the window ends.')\n );\n } catch (err) {\n notify.error(tr('tunPublic.grantFailed', 'Could not grant access'), (err as Error).message);\n }\n };\n\n const handleRevoke = async (): Promise<void> => {\n try {\n await revokeAccess({ variables: { tunnelId } });\n onChanged();\n notify.success(tr('tunPublic.revoked', 'Public access revoked — the link is dead'));\n } catch (err) {\n notify.error(tr('tunPublic.revokeFailed', 'Could not revoke'), (err as Error).message);\n }\n };\n\n const copyUrl = async (): Promise<void> => {\n if (!publicUrl) return;\n try {\n await navigator.clipboard.writeText(publicUrl);\n setCopied(true);\n notify.success(tr('tunPublic.copied', 'Public URL copied'));\n window.setTimeout(() => setCopied(false), 1500);\n } catch {\n notify.error(tr('tunPublic.copyFailed', 'Could not copy — copy it manually'), publicUrl);\n }\n };\n\n return (\n <section className=\"md:col-span-2 rounded-lg border border-border-subtle bg-bg-surface p-4\">\n <h3 className=\"mb-3 flex items-center gap-2 text-sm font-semibold text-text-primary\">\n <Globe className=\"size-4\" />\n {tr('tunPublic.title', 'Time-limited public access')}\n </h3>\n\n {isActive && expiresAt ? (\n <div className=\"space-y-3\">\n <div className=\"flex items-center gap-2 rounded-card border border-status-success-border bg-status-success-bg-subtle px-3 py-2 text-sm text-status-success-text\">\n <Clock className=\"size-4 shrink-0\" />\n <span>\n {tr('tunPublic.liveUntil', 'Public until')}{' '}\n <strong>{expiresAt.toLocaleString()}</strong>\n {tunnelStatus !== 'ACTIVE' && (\n <span className=\"ml-1 text-text-tertiary\">\n {tr('tunPublic.notRunning', '(start the tunnel for the URL to serve)')}\n </span>\n )}\n </span>\n </div>\n {publicUrl && (\n <div className=\"flex items-center gap-2 rounded-md border border-border-default px-3 py-2\">\n <span className=\"flex-1 truncate font-mono text-xs text-text-secondary\">\n {publicUrl}\n </span>\n <button\n type=\"button\"\n onClick={() => void copyUrl()}\n className=\"p-1 text-text-secondary hover:text-text-primary\"\n aria-label={tr('common.copy', 'Copy')}\n >\n {copied ? (\n <Check className=\"size-4 text-status-success-text\" />\n ) : (\n <Copy className=\"size-4\" />\n )}\n </button>\n </div>\n )}\n {canUpdate && (\n <button\n type=\"button\"\n onClick={() => void handleRevoke()}\n disabled={revoking}\n className=\"flex items-center gap-1.5 rounded-md border border-border-default px-3 py-2 text-sm text-action-danger-text hover:bg-bg-sunken disabled:opacity-50\"\n >\n <ShieldOff className=\"size-4\" />\n {tr('tunPublic.revoke', 'Revoke now')}\n </button>\n )}\n </div>\n ) : (\n <div className=\"space-y-3\">\n <p className=\"text-sm text-text-secondary\">\n {tr(\n 'tunPublic.off',\n 'Public access is off. Grant a time-boxed window and the link tears itself down when it ends.'\n )}\n </p>\n <div className=\"flex flex-wrap items-end gap-3\">\n <label className=\"flex-1 min-w-[10rem]\">\n <span className=\"text-sm text-text-secondary\">\n {tr('tunPublic.window', 'Access window')}\n </span>\n <select\n value={ttlSeconds}\n onChange={(e) => setTtlSeconds(Number(e.target.value))}\n className=\"mt-1 w-full rounded-md border border-border-default bg-bg-surface px-3 py-2 text-sm text-text-primary\"\n >\n {TTL_OPTIONS.map((o) => (\n <option key={o.key} value={o.seconds}>\n {tr(`tunPublic.ttl.${o.key}`, ttlLabel(o.key))}\n </option>\n ))}\n </select>\n </label>\n {canUpdate && (\n <button\n type=\"button\"\n onClick={() => void handleGrant()}\n disabled={granting}\n className=\"flex items-center gap-1.5 rounded-md bg-action-primary-bg px-3 py-2 text-sm text-action-primary-text hover:opacity-90 disabled:opacity-50\"\n >\n <Globe className=\"size-4\" />\n {tr('tunPublic.grant', 'Grant public access')}\n </button>\n )}\n </div>\n </div>\n )}\n </section>\n );\n};\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"TunnelSparkline.js","names":[],"sources":["../../../src/components/tunnels/TunnelSparkline.tsx"],"sourcesContent":["import type { FC } from 'react';\n\ninterface TunnelSparklineProps {\n /** One value per hourly usage bucket, oldest → newest. */\n values: readonly number[];\n /** Accessible description of what the bars represent. */\n ariaLabel: string;\n /** Semantic colour utility applied to the bars, e.g. `text-accent-teal`. */\n className?: string;\n}\n\nconst VIEW_WIDTH = 100;\nconst VIEW_HEIGHT = 24;\n/** Bars keep a hairline of height at zero so an idle hour still reads as a bucket. */\nconst MIN_BAR_HEIGHT = 1;\n\n/**\n * A bar sparkline over real hourly usage buckets — one bar per bucket returned\n * by `tunnelUsage`. It plots only the values it is handed; there is no\n * smoothing, padding or synthesised history, so an empty window renders nothing\n * and the caller shows its empty state instead.\n */\nexport const TunnelSparkline: FC<TunnelSparklineProps> = ({ values, ariaLabel, className }) => {\n if (values.length === 0) return null;\n\n const max = values.reduce((acc, v) => Math.max(acc, v), 0);\n const slot = VIEW_WIDTH / values.length;\n const barWidth = Math.max(slot * 0.62, 0.5);\n\n return (\n <svg\n viewBox={`0 0 ${VIEW_WIDTH} ${VIEW_HEIGHT}`}\n preserveAspectRatio=\"none\"\n className={className}\n role=\"img\"\n aria-label={ariaLabel}\n >\n {values.map((value, index) => {\n const height =\n max > 0\n ? Math.max((value / max) * VIEW_HEIGHT, value > 0 ? MIN_BAR_HEIGHT : MIN_BAR_HEIGHT / 2)\n : MIN_BAR_HEIGHT / 2;\n return (\n <rect\n key={index}\n x={index * slot + (slot - barWidth) / 2}\n y={VIEW_HEIGHT - height}\n width={barWidth}\n height={height}\n fill=\"currentColor\"\n opacity={value > 0 ? 1 : 0.35}\n />\n );\n })}\n </svg>\n );\n};\n"],"mappings":";;AAWA,IAAM,IAAa,KACb,IAAc,IAEd,IAAiB,GAQV,KAA6C,EAAE,WAAQ,cAAW,mBAAgB;AAC7F,KAAI,EAAO,WAAW,EAAG,QAAO;CAEhC,IAAM,IAAM,EAAO,QAAQ,GAAK,MAAM,KAAK,IAAI,GAAK,EAAE,EAAE,EAAE,EACpD,IAAO,IAAa,EAAO,QAC3B,IAAW,KAAK,IAAI,IAAO,KAAM,GAAI;AAE3C,QACE,kBAAC,OAAD;EACE,SAAS,OAAO,EAAW,GAAG;EAC9B,qBAAoB;EACT;EACX,MAAK;EACL,cAAY;YAEX,EAAO,KAAK,GAAO,MAAU;GAC5B,IAAM,IACJ,IAAM,IACF,KAAK,IAAK,IAAQ,IAAO,GAAa,IAAQ,IAAI,IAAiB,IAAiB,EAAE,GACtF,IAAiB;AACvB,UACE,kBAAC,QAAD;IAEE,GAAG,IAAQ,KAAQ,IAAO,KAAY;IACtC,GAAG,IAAc;IACjB,OAAO;IACC;IACR,MAAK;IACL,SAAS,IAAQ,IAAI,IAAI;IACzB,EAPK,EAOL;IAEJ;EACE,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"TunnelStatusBadge.js","names":[],"sources":["../../../src/components/tunnels/TunnelStatusBadge.tsx"],"sourcesContent":["import type { TunnelStatus } from '@/generated/wspace-types';\n\nconst STATUS_STYLES: Record<string, string> = {\n ACTIVE: 'bg-status-success-bg-subtle text-status-success-text',\n DRAFT: 'bg-bg-sunken text-text-secondary',\n PROVISIONING: 'bg-status-warning-bg-subtle text-status-warning-text',\n DEGRADED: 'bg-status-warning-bg-subtle text-status-warning-text',\n STOPPED: 'bg-bg-sunken text-text-muted',\n ERROR: 'bg-status-error-bg-subtle text-status-error-text',\n DELETING: 'bg-bg-sunken text-text-muted',\n};\n\nexport function TunnelStatusBadge({ status }: { status: TunnelStatus | string }) {\n const style = STATUS_STYLES[status] ?? 'bg-bg-sunken text-text-secondary';\n return (\n <span\n className={`inline-flex items-center rounded-full px-2 py-0.5 text-xs font-medium ${style}`}\n >\n {status}\n </span>\n );\n}\n"],"mappings":";;AAEA,IAAM,IAAwC;CAC5C,QAAQ;CACR,OAAO;CACP,cAAc;CACd,UAAU;CACV,SAAS;CACT,OAAO;CACP,UAAU;CACX;AAED,SAAgB,EAAkB,EAAE,aAA6C;AAE/E,QACE,kBAAC,QAAD;EACE,WAAW,yEAHD,EAAc,MAAW;YAKlC;EACI,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"tunnelEndpoints.js","names":[],"sources":["../../../src/components/tunnels/tunnelEndpoints.ts"],"sourcesContent":["import type { GetTunnelQuery } from '@/generated/wspace-operations';\nimport { TunnelProtocol } from '@/generated/wspace-types';\n\ntype TunnelDetails = NonNullable<GetTunnelQuery['tunnel']>;\n\n/** Where an endpoint row came from — the caller turns this into a translated label. */\nexport type TunnelEndpointKind = 'primary' | 'domain' | 'local';\n\nexport interface TunnelEndpoint {\n kind: TunnelEndpointKind;\n /** Fully qualified address, e.g. `https://pg.example.com` or `tcp://10.0.4.20:5432`. */\n url: string;\n /** True when the URL is browser-navigable (and therefore safe to render as a link). */\n isWebLink: boolean;\n}\n\n/**\n * URL scheme a client uses to reach the tunnel's *public* side.\n *\n * HTTP tunnels are always terminated with TLS at the edge, so they advertise\n * `https`. TCP/UDP keep their own scheme — a UDP tunnel must not be advertised\n * as an HTTPS URL.\n */\nexport function publicTunnelScheme(protocol: TunnelDetails['protocol']): string {\n switch (protocol) {\n case TunnelProtocol.Tcp:\n return 'tcp';\n case TunnelProtocol.Udp:\n return 'udp';\n default:\n return 'https';\n }\n}\n\n/**\n * Every address this tunnel answers on: the primary hostname first, then any\n * other attached domains, then the local target the agent forwards to.\n *\n * Shared by the Endpoints tab and the Overview \"Connection\" card so the two\n * can never disagree about what a tunnel's address is.\n */\nexport function buildTunnelEndpoints(tunnel: TunnelDetails): TunnelEndpoint[] {\n const scheme = publicTunnelScheme(tunnel.protocol);\n const isWebLink = scheme === 'https';\n const primaryHostname = tunnel.primaryDomain?.hostname ?? null;\n const endpoints: TunnelEndpoint[] = [];\n\n if (primaryHostname) {\n endpoints.push({ kind: 'primary', url: `${scheme}://${primaryHostname}`, isWebLink });\n }\n\n for (const domain of tunnel.domains ?? []) {\n if (domain.hostname === primaryHostname) continue;\n endpoints.push({ kind: 'domain', url: `${scheme}://${domain.hostname}`, isWebLink });\n }\n\n endpoints.push({\n kind: 'local',\n url: `${tunnel.protocol.toLowerCase()}://${tunnel.localHost}:${tunnel.localPort}`,\n isWebLink: false,\n });\n\n return endpoints;\n}\n\n/**\n * The address to hand a client, or `null` when the tunnel has no public\n * hostname yet (DRAFT tunnels, and ACTIVE ones whose provider is still\n * allocating a domain). Callers must render an explanatory empty state rather\n * than falling back to the local target, which is not reachable off-host.\n */\nexport function primaryTunnelEndpoint(tunnel: TunnelDetails): TunnelEndpoint | null {\n return buildTunnelEndpoints(tunnel).find((endpoint) => endpoint.kind === 'primary') ?? null;\n}\n"],"mappings":";;AAuBA,SAAgB,EAAmB,GAA6C;AAC9E,SAAQ,GAAR;EACE,KAAK,EAAe,IAClB,QAAO;EACT,KAAK,EAAe,IAClB,QAAO;EACT,QACE,QAAO;;;AAWb,SAAgB,EAAqB,GAAyC;CAC5E,IAAM,IAAS,EAAmB,EAAO,SAAS,EAC5C,IAAY,MAAW,SACvB,IAAkB,EAAO,eAAe,YAAY,MACpD,IAA8B,EAAE;AAEtC,CAAI,KACF,EAAU,KAAK;EAAE,MAAM;EAAW,KAAK,GAAG,EAAO,KAAK;EAAmB;EAAW,CAAC;AAGvF,MAAK,IAAM,KAAU,EAAO,WAAW,EAAE,CACnC,GAAO,aAAa,KACxB,EAAU,KAAK;EAAE,MAAM;EAAU,KAAK,GAAG,EAAO,KAAK,EAAO;EAAY;EAAW,CAAC;AAStF,QANA,EAAU,KAAK;EACb,MAAM;EACN,KAAK,GAAG,EAAO,SAAS,aAAa,CAAC,KAAK,EAAO,UAAU,GAAG,EAAO;EACtE,WAAW;EACZ,CAAC,EAEK;;AAST,SAAgB,EAAsB,GAA8C;AAClF,QAAO,EAAqB,EAAO,CAAC,MAAM,MAAa,EAAS,SAAS,UAAU,IAAI"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"tunnelMetrics.js","names":[],"sources":["../../../src/components/tunnels/tunnelMetrics.ts"],"sourcesContent":["import type { GetTunnelUsageQuery } from '@/generated/wspace-operations';\n\nexport type TunnelUsageBucket = GetTunnelUsageQuery['tunnelUsage'][number];\n\n/** Hours in the rolling window the tunnel metric tiles summarise. */\nexport const TUNNEL_METRIC_WINDOW_HOURS = 24;\n\nexport interface TunnelUsageSummary {\n /** Buckets ordered oldest → newest, one per hour the backend rolled up. */\n ordered: TunnelUsageBucket[];\n bytesIn: number;\n bytesOut: number;\n bytesTotal: number;\n requests: number;\n connections: number;\n /** Per-hour series, aligned with `ordered`, for the sparklines. */\n bytesSeries: number[];\n requestSeries: number[];\n connectionSeries: number[];\n /** Highest single-hour connection count in the window. */\n peakConnections: number;\n}\n\n/**\n * Fold the hourly `tunnelUsage` buckets into the totals and per-hour series the\n * Overview tiles render. Everything here is derived from fields the backend\n * actually returns (`bytesIn`, `bytesOut`, `requests`, `connections`) — no\n * metric is synthesised.\n */\nexport function summariseTunnelUsage(buckets: readonly TunnelUsageBucket[]): TunnelUsageSummary {\n const ordered = [...buckets].sort(\n (a, b) => new Date(a.hourBucket).getTime() - new Date(b.hourBucket).getTime()\n );\n\n const summary: TunnelUsageSummary = {\n ordered,\n bytesIn: 0,\n bytesOut: 0,\n bytesTotal: 0,\n requests: 0,\n connections: 0,\n bytesSeries: [],\n requestSeries: [],\n connectionSeries: [],\n peakConnections: 0,\n };\n\n for (const bucket of ordered) {\n const bytes = bucket.bytesIn + bucket.bytesOut;\n summary.bytesIn += bucket.bytesIn;\n summary.bytesOut += bucket.bytesOut;\n summary.bytesTotal += bytes;\n summary.requests += bucket.requests;\n summary.connections += bucket.connections;\n summary.bytesSeries.push(bytes);\n summary.requestSeries.push(bucket.requests);\n summary.connectionSeries.push(bucket.connections);\n summary.peakConnections = Math.max(summary.peakConnections, bucket.connections);\n }\n\n return summary;\n}\n\n/** Human-readable byte count (binary units, matching the Usage tab's table). */\nexport function formatBytes(n: number): string {\n if (n < 1024) return `${Math.round(n)} B`;\n if (n < 1024 * 1024) return `${(n / 1024).toFixed(1)} KiB`;\n if (n < 1024 * 1024 * 1024) return `${(n / 1024 / 1024).toFixed(1)} MiB`;\n return `${(n / 1024 / 1024 / 1024).toFixed(2)} GiB`;\n}\n\n/**\n * Average rate over a window, expressed in whichever unit keeps the number\n * readable. Returns the numeric value plus the unit suffix so the caller can\n * translate the suffix.\n */\nexport function averageRatePerHour(total: number, hours: number): number {\n if (hours <= 0) return 0;\n return total / hours;\n}\n\n/** Format a per-hour rate as `/s`, `/min` or `/hr` depending on magnitude. */\nexport function formatPerHourRate(ratePerHour: number): {\n value: string;\n unit: 'sec' | 'min' | 'hr';\n} {\n const perMinute = ratePerHour / 60;\n const perSecond = perMinute / 60;\n if (perSecond >= 1) return { value: perSecond.toFixed(perSecond >= 10 ? 0 : 1), unit: 'sec' };\n if (perMinute >= 1) return { value: perMinute.toFixed(perMinute >= 10 ? 0 : 1), unit: 'min' };\n return { value: ratePerHour.toFixed(ratePerHour >= 10 ? 0 : 1), unit: 'hr' };\n}\n"],"mappings":";AA6BA,SAAgB,EAAqB,GAA2D;CAC9F,IAAM,IAAU,CAAC,GAAG,EAAQ,CAAC,MAC1B,GAAG,MAAM,IAAI,KAAK,EAAE,WAAW,CAAC,SAAS,GAAG,IAAI,KAAK,EAAE,WAAW,CAAC,SAAS,CAC9E,EAEK,IAA8B;EAClC;EACA,SAAS;EACT,UAAU;EACV,YAAY;EACZ,UAAU;EACV,aAAa;EACb,aAAa,EAAE;EACf,eAAe,EAAE;EACjB,kBAAkB,EAAE;EACpB,iBAAiB;EAClB;AAED,MAAK,IAAM,KAAU,GAAS;EAC5B,IAAM,IAAQ,EAAO,UAAU,EAAO;AAStC,EARA,EAAQ,WAAW,EAAO,SAC1B,EAAQ,YAAY,EAAO,UAC3B,EAAQ,cAAc,GACtB,EAAQ,YAAY,EAAO,UAC3B,EAAQ,eAAe,EAAO,aAC9B,EAAQ,YAAY,KAAK,EAAM,EAC/B,EAAQ,cAAc,KAAK,EAAO,SAAS,EAC3C,EAAQ,iBAAiB,KAAK,EAAO,YAAY,EACjD,EAAQ,kBAAkB,KAAK,IAAI,EAAQ,iBAAiB,EAAO,YAAY;;AAGjF,QAAO;;AAIT,SAAgB,EAAY,GAAmB;AAI7C,QAHI,IAAI,OAAa,GAAG,KAAK,MAAM,EAAE,CAAC,MAClC,IAAI,OAAO,OAAa,IAAI,IAAI,MAAM,QAAQ,EAAE,CAAC,QACjD,IAAI,OAAO,OAAO,OAAa,IAAI,IAAI,OAAO,MAAM,QAAQ,EAAE,CAAC,QAC5D,IAAI,IAAI,OAAO,OAAO,MAAM,QAAQ,EAAE,CAAC;;AAQhD,SAAgB,EAAmB,GAAe,GAAuB;AAEvE,QADI,KAAS,IAAU,IAChB,IAAQ;;AAIjB,SAAgB,EAAkB,GAGhC;CACA,IAAM,IAAY,IAAc,IAC1B,IAAY,IAAY;AAG9B,QAFI,KAAa,IAAU;EAAE,OAAO,EAAU,QAAQ,KAAa,KAAK,IAAI,EAAE;EAAE,MAAM;EAAO,GACzF,KAAa,IAAU;EAAE,OAAO,EAAU,QAAQ,KAAa,KAAK,IAAI,EAAE;EAAE,MAAM;EAAO,GACtF;EAAE,OAAO,EAAY,QAAQ,KAAe,KAAK,IAAI,EAAE;EAAE,MAAM;EAAM"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"VibeAgentEmptyState.js","names":[],"sources":["../../../src/components/vibe/VibeAgentEmptyState.tsx"],"sourcesContent":["/**\n * VibeAgentEmptyState — shown on the Vibe details page when the vibe has no\n * agent attached. Tabs that depend on an agent (sessions, gitops, GraphQL\n * playground, git) are hidden, and the user is invited to attach an agent.\n *\n * UX: opens an in-place modal listing the workspace's existing agents so the\n * user can attach one without leaving the vibe detail page. Falls back to\n * navigating to the agents page only if no agents exist in the workspace\n * (so the user can register their first one).\n */\nimport { useCallback, useMemo, useState } from 'react';\nimport type { FC } from 'react';\nimport { ArrowRight, Plus, Server } from 'lucide-react';\nimport { useApolloClient } from '@apollo/client/react';\nimport { EmptyState } from '@/components/shared';\nimport { useVibeNavigate } from '@/providers/VibeControlsProvider';\nimport {\n useListAgentsQuery,\n useAttachAgentToVibeMutation,\n GetVibeDocument,\n ListVibesDocument,\n type ListAgentsQuery,\n} from '@/generated/wspace-operations';\n\nexport interface VibeAgentEmptyStateProps {\n vibeId: string;\n tr: (key: string, fallback: string) => string;\n /** Optional: called after a successful attach so the parent can refetch. */\n onAttached?: () => void;\n}\n\nexport const VibeAgentEmptyState: FC<VibeAgentEmptyStateProps> = ({ vibeId, tr, onAttached }) => {\n const navigate = useVibeNavigate();\n const apolloClient = useApolloClient();\n const [open, setOpen] = useState(false);\n const [errorMessage, setErrorMessage] = useState<string | null>(null);\n const [busyAgentId, setBusyAgentId] = useState<string | null>(null);\n\n const { data, loading } = useListAgentsQuery({\n skip: !open,\n fetchPolicy: 'cache-and-network',\n });\n const [attach] = useAttachAgentToVibeMutation({\n refetchQueries: [GetVibeDocument, ListVibesDocument],\n awaitRefetchQueries: true,\n });\n\n const agents = useMemo<ListAgentsQuery['vibecontrolsAgents']>(\n () => data?.vibecontrolsAgents ?? [],\n [data]\n );\n\n const handleAttach = useCallback(\n async (agentId: string) => {\n setErrorMessage(null);\n setBusyAgentId(agentId);\n try {\n await attach({ variables: { input: { vibeId, agentId } } });\n apolloClient.cache.evict({ id: `Vibe:${vibeId}` });\n apolloClient.cache.gc();\n setOpen(false);\n onAttached?.();\n } catch (err) {\n setErrorMessage(err instanceof Error ? err.message : String(err));\n } finally {\n setBusyAgentId(null);\n }\n },\n [attach, vibeId, onAttached, apolloClient]\n );\n\n const handleRegisterNew = useCallback(() => {\n // Deep-link to the agents page with vibeId so the agents UI can offer\n // a \"register and attach to this vibe\" affordance.\n const query = vibeId ? `?attachToVibe=${encodeURIComponent(vibeId)}` : '';\n navigate(`/agents${query}`);\n }, [navigate, vibeId]);\n\n return (\n <>\n <div className=\"rounded-lg border border-border-default bg-bg-surface\">\n <EmptyState\n icon={<Server className=\"size-8 text-text-secondary\" />}\n title={tr('vibeDetails.noAgentTitle', 'No agent attached')}\n description={tr(\n 'vibeDetails.noAgentDescription',\n 'This vibe is not attached to an agent yet. Sessions, GitOps, GraphQL playground, and git tooling all run through an agent — connect one to unlock those tabs.'\n )}\n action={\n <button\n type=\"button\"\n onClick={() => setOpen(true)}\n className=\"inline-flex items-center gap-1.5 px-3 py-2 text-sm font-medium rounded-md bg-action-primary-bg text-action-primary-text hover:bg-action-primary-bg-hover transition-colors\"\n >\n {tr('vibeDetails.connectAnAgent', 'Connect an agent to this vibe')}\n <ArrowRight className=\"size-4\" />\n </button>\n }\n />\n </div>\n\n {open && (\n <div\n tabIndex={0}\n onKeyDown={(e) => {\n if (e.key === 'Escape') {\n e.preventDefault();\n setOpen(false);\n }\n }}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"vibe-attach-agent-title\"\n className=\"fixed inset-0 z-50 flex items-center justify-center bg-black/50 p-4\"\n onClick={(e) => {\n if (e.target === e.currentTarget) setOpen(false);\n }}\n >\n <div className=\"w-full max-w-md rounded-lg bg-bg-elevated border border-border-default shadow-xl\">\n <div className=\"flex items-center justify-between px-5 py-4 border-b border-border-subtle\">\n <h2\n id=\"vibe-attach-agent-title\"\n className=\"text-base font-semibold text-text-primary\"\n >\n {tr('vibeDetails.attachAgentTitle', 'Attach an agent')}\n </h2>\n <button\n type=\"button\"\n onClick={() => setOpen(false)}\n className=\"text-text-secondary hover:text-text-primary transition-colors\"\n aria-label={tr('common.close', 'Close')}\n >\n ✕\n </button>\n </div>\n\n <div className=\"px-5 py-4 max-h-[60vh] overflow-y-auto\">\n {loading && agents.length === 0 ? (\n <p className=\"text-sm text-text-secondary\">{tr('common.loading', 'Loading…')}</p>\n ) : agents.length === 0 ? (\n <div className=\"text-sm text-text-secondary space-y-3\">\n <p>\n {tr(\n 'vibeDetails.noWorkspaceAgents',\n 'No agents in this workspace yet. Register one first, then attach it to this vibe.'\n )}\n </p>\n <button\n type=\"button\"\n onClick={handleRegisterNew}\n className=\"inline-flex items-center gap-1.5 px-3 py-2 text-sm font-medium rounded-md bg-action-primary-bg text-action-primary-text hover:bg-action-primary-bg-hover transition-colors\"\n >\n <Plus className=\"size-4\" />\n {tr('vibeDetails.registerAgent', 'Register an agent')}\n </button>\n </div>\n ) : (\n <ul className=\"space-y-2\">\n {agents.map((a) => (\n <li key={a.id}>\n <button\n type=\"button\"\n onClick={() => handleAttach(a.id)}\n disabled={busyAgentId !== null}\n className=\"w-full flex items-center justify-between gap-3 px-3 py-2.5 rounded-md border border-border-subtle hover:border-border-default hover:bg-action-ghost-bg-hover transition-colors text-left disabled:opacity-60\"\n >\n <span className=\"flex items-center gap-3 min-w-0\">\n <Server className=\"size-4 text-text-secondary flex-shrink-0\" />\n <span className=\"min-w-0\">\n <span className=\"block text-sm font-medium text-text-primary truncate\">\n {a.name}\n </span>\n <span className=\"block text-xs text-text-secondary truncate\">\n {a.hostname || '—'}{' '}\n {a.isActive\n ? `· ${tr('agents.active', 'Active')}`\n : `· ${tr('agents.inactive', 'Inactive')}`}\n </span>\n </span>\n </span>\n <span className=\"text-xs text-text-tertiary\">\n {busyAgentId === a.id\n ? tr('common.attaching', 'Attaching…')\n : tr('vibeDetails.attach', 'Attach')}\n </span>\n </button>\n </li>\n ))}\n </ul>\n )}\n\n {errorMessage && (\n <p className=\"mt-3 text-sm text-status-error-text\">{errorMessage}</p>\n )}\n </div>\n\n {agents.length > 0 && (\n <div className=\"flex items-center justify-between px-5 py-3 border-t border-border-subtle\">\n <button\n type=\"button\"\n onClick={handleRegisterNew}\n className=\"text-xs text-text-secondary hover:text-text-primary inline-flex items-center gap-1\"\n >\n <Plus className=\"size-3.5\" />\n {tr('vibeDetails.registerAgent', 'Register a new agent')}\n </button>\n <button\n type=\"button\"\n onClick={() => setOpen(false)}\n className=\"text-sm px-3 py-1.5 rounded-md border border-border-default text-text-primary hover:bg-action-ghost-bg-hover\"\n >\n {tr('common.cancel', 'Cancel')}\n </button>\n </div>\n )}\n </div>\n </div>\n )}\n </>\n );\n};\n"],"mappings":";;;;;;;;;AA+BA,IAAa,KAAqD,EAAE,WAAQ,OAAI,oBAAiB;CAC/F,IAAM,IAAW,GAAiB,EAC5B,IAAe,GAAiB,EAChC,CAAC,GAAM,KAAW,EAAS,GAAM,EACjC,CAAC,GAAc,KAAmB,EAAwB,KAAK,EAC/D,CAAC,GAAa,KAAkB,EAAwB,KAAK,EAE7D,EAAE,SAAM,eAAY,EAAmB;EAC3C,MAAM,CAAC;EACP,aAAa;EACd,CAAC,EACI,CAAC,KAAU,EAA6B;EAC5C,gBAAgB,CAAC,GAAiB,EAAkB;EACpD,qBAAqB;EACtB,CAAC,EAEI,IAAS,QACP,GAAM,sBAAsB,EAAE,EACpC,CAAC,EAAK,CACP,EAEK,IAAe,EACnB,OAAO,MAAoB;AAEzB,EADA,EAAgB,KAAK,EACrB,EAAe,EAAQ;AACvB,MAAI;AAKF,GAJA,MAAM,EAAO,EAAE,WAAW,EAAE,OAAO;IAAE;IAAQ;IAAS,EAAE,EAAE,CAAC,EAC3D,EAAa,MAAM,MAAM,EAAE,IAAI,QAAQ,KAAU,CAAC,EAClD,EAAa,MAAM,IAAI,EACvB,EAAQ,GAAM,EACd,KAAc;WACP,GAAK;AACZ,KAAgB,aAAe,QAAQ,EAAI,UAAU,OAAO,EAAI,CAAC;YACzD;AACR,KAAe,KAAK;;IAGxB;EAAC;EAAQ;EAAQ;EAAY;EAAa,CAC3C,EAEK,IAAoB,QAAkB;AAI1C,IAAS,UADK,IAAS,iBAAiB,mBAAmB,EAAO,KAAK,KAC5C;IAC1B,CAAC,GAAU,EAAO,CAAC;AAEtB,QACE,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,OAAD;EAAK,WAAU;YACb,kBAAC,GAAD;GACE,MAAM,kBAAC,GAAD,EAAQ,WAAU,8BAA+B,CAAA;GACvD,OAAO,EAAG,4BAA4B,oBAAoB;GAC1D,aAAa,EACX,kCACA,gKACD;GACD,QACE,kBAAC,UAAD;IACE,MAAK;IACL,eAAe,EAAQ,GAAK;IAC5B,WAAU;cAHZ,CAKG,EAAG,8BAA8B,gCAAgC,EAClE,kBAAC,GAAD,EAAY,WAAU,UAAW,CAAA,CAC1B;;GAEX,CAAA;EACE,CAAA,EAEL,KACC,kBAAC,OAAD;EACE,UAAU;EACV,YAAY,MAAM;AAChB,GAAI,EAAE,QAAQ,aACZ,EAAE,gBAAgB,EAClB,EAAQ,GAAM;;EAGlB,MAAK;EACL,cAAW;EACX,mBAAgB;EAChB,WAAU;EACV,UAAU,MAAM;AACd,GAAI,EAAE,WAAW,EAAE,iBAAe,EAAQ,GAAM;;YAGlD,kBAAC,OAAD;GAAK,WAAU;aAAf;IACE,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,MAAD;MACE,IAAG;MACH,WAAU;gBAET,EAAG,gCAAgC,kBAAkB;MACnD,CAAA,EACL,kBAAC,UAAD;MACE,MAAK;MACL,eAAe,EAAQ,GAAM;MAC7B,WAAU;MACV,cAAY,EAAG,gBAAgB,QAAQ;gBACxC;MAEQ,CAAA,CACL;;IAEN,kBAAC,OAAD;KAAK,WAAU;eAAf,CACG,KAAW,EAAO,WAAW,IAC5B,kBAAC,KAAD;MAAG,WAAU;gBAA+B,EAAG,kBAAkB,WAAW;MAAK,CAAA,GAC/E,EAAO,WAAW,IACpB,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,KAAD,EAAA,UACG,EACC,iCACA,oFACD,EACC,CAAA,EACJ,kBAAC,UAAD;OACE,MAAK;OACL,SAAS;OACT,WAAU;iBAHZ,CAKE,kBAAC,GAAD,EAAM,WAAU,UAAW,CAAA,EAC1B,EAAG,6BAA6B,oBAAoB,CAC9C;SACL;UAEN,kBAAC,MAAD;MAAI,WAAU;gBACX,EAAO,KAAK,MACX,kBAAC,MAAD,EAAA,UACE,kBAAC,UAAD;OACE,MAAK;OACL,eAAe,EAAa,EAAE,GAAG;OACjC,UAAU,MAAgB;OAC1B,WAAU;iBAJZ,CAME,kBAAC,QAAD;QAAM,WAAU;kBAAhB,CACE,kBAAC,GAAD,EAAQ,WAAU,4CAA6C,CAAA,EAC/D,kBAAC,QAAD;SAAM,WAAU;mBAAhB,CACE,kBAAC,QAAD;UAAM,WAAU;oBACb,EAAE;UACE,CAAA,EACP,kBAAC,QAAD;UAAM,WAAU;oBAAhB;WACG,EAAE,YAAY;WAAK;WACnB,EAAE,WACC,KAAK,EAAG,iBAAiB,SAAS,KAClC,KAAK,EAAG,mBAAmB,WAAW;WACrC;YACF;WACF;WACP,kBAAC,QAAD;QAAM,WAAU;kBACb,MAAgB,EAAE,KACf,EAAG,oBAAoB,aAAa,GACpC,EAAG,sBAAsB,SAAS;QACjC,CAAA,CACA;UACN,EA3BI,EAAE,GA2BN,CACL;MACC,CAAA,EAGN,KACC,kBAAC,KAAD;MAAG,WAAU;gBAAuC;MAAiB,CAAA,CAEnE;;IAEL,EAAO,SAAS,KACf,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,UAAD;MACE,MAAK;MACL,SAAS;MACT,WAAU;gBAHZ,CAKE,kBAAC,GAAD,EAAM,WAAU,YAAa,CAAA,EAC5B,EAAG,6BAA6B,uBAAuB,CACjD;SACT,kBAAC,UAAD;MACE,MAAK;MACL,eAAe,EAAQ,GAAM;MAC7B,WAAU;gBAET,EAAG,iBAAiB,SAAS;MACvB,CAAA,CACL;;IAEJ;;EACF,CAAA,CAEP,EAAA,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"VibeAgentSwitcher.js","names":[],"sources":["../../../src/components/vibe/VibeAgentSwitcher.tsx"],"sourcesContent":["/**\n * VibeAgentSwitcher — inline switcher + attach-more affordance shown on the\n * Vibe detail Overview tab once at least one agent is attached.\n *\n * Why this exists: a vibe can carry many agents (every collaborator brings\n * their own host/dev VM alongside shared env agents). Without a top-level\n * switcher, the \"effective agent\" chosen by the auto-pick heuristic is\n * invisible and unswitchable from the detail page, and there's no way to\n * attach a *second* agent without leaving for the agents tab. This card:\n *\n * 1. Names the active agent for the current user on this vibe.\n * 2. Lists every attached agent in a searchable dropdown — choosing one\n * writes to the per-vibe default store slot, persisted across reloads.\n * 3. Surfaces \"Attach another agent\" so users discover the multi-attach\n * flow without bouncing tabs.\n * 4. Surfaces \"Detach\" per agent (owner-scoped, no peer detaches).\n */\nimport { useMemo, useState, useCallback } from 'react';\nimport { Check, ChevronDown, Plus, Search, Server, X } from 'lucide-react';\nimport { useApolloClient } from '@apollo/client/react';\nimport { Card } from '@/components/shared';\nimport {\n useAttachAgentToVibeMutation,\n useDetachAgentFromVibeMutation,\n useListAgentsQuery,\n GetVibeDocument,\n ListVibesDocument,\n type ListAgentsQuery,\n} from '@/generated/wspace-operations';\n\ntype ListAgent = NonNullable<ListAgentsQuery['vibecontrolsAgents']>[number];\nimport { useVibeControlsStore } from '@/store/vibeControlsStore';\nimport { useTr } from '@/shared/hooks/useTr';\n\nexport interface AttachedAgent {\n id: string;\n name: string;\n hostname?: string | null;\n isActive: boolean;\n ownerUserId?: string | null;\n /** BOFF-6394 — `PRIVATE` = owner only; `WORKSPACE` = any member. */\n visibility?: 'PRIVATE' | 'WORKSPACE' | null;\n tunnelUrl?: string | null;\n}\n\ninterface Props {\n vibeId: string;\n attachedAgents: ReadonlyArray<AttachedAgent>;\n effectiveAgentId: string | null;\n}\n\nexport function VibeAgentSwitcher({ vibeId, attachedAgents, effectiveAgentId }: Props) {\n const tr = useTr();\n const apolloClient = useApolloClient();\n const setDefault = useVibeControlsStore((s) => s.setDefaultAgentForVibe);\n\n const [open, setOpen] = useState(false);\n const [query, setQuery] = useState('');\n const [attachOpen, setAttachOpen] = useState(false);\n const [attachQuery, setAttachQuery] = useState('');\n const [attachError, setAttachError] = useState<string | null>(null);\n const [busy, setBusy] = useState(false);\n\n const active = attachedAgents.find((a) => a.id === effectiveAgentId) ?? attachedAgents[0] ?? null;\n\n const filtered = useMemo(() => {\n const q = query.trim().toLowerCase();\n if (!q) return attachedAgents;\n return attachedAgents.filter(\n (a) =>\n a.name.toLowerCase().includes(q) ||\n (a.hostname ?? '').toLowerCase().includes(q) ||\n a.id.toLowerCase().includes(q)\n );\n }, [attachedAgents, query]);\n\n const { data: agentsData, refetch: refetchAgents } = useListAgentsQuery({\n skip: !attachOpen,\n fetchPolicy: 'cache-and-network',\n });\n const attachedIds = useMemo(() => new Set(attachedAgents.map((a) => a.id)), [attachedAgents]);\n const candidates = useMemo(() => {\n const all = agentsData?.vibecontrolsAgents ?? [];\n const q = attachQuery.trim().toLowerCase();\n return all\n .filter((a: ListAgent) => !attachedIds.has(a.id))\n .filter((a: ListAgent) =>\n q ? a.name.toLowerCase().includes(q) || (a.hostname ?? '').toLowerCase().includes(q) : true\n );\n }, [agentsData, attachedIds, attachQuery]);\n\n const [attach] = useAttachAgentToVibeMutation({\n refetchQueries: [GetVibeDocument, ListVibesDocument],\n awaitRefetchQueries: true,\n });\n const [detach] = useDetachAgentFromVibeMutation({\n refetchQueries: [GetVibeDocument, ListVibesDocument],\n awaitRefetchQueries: true,\n });\n\n const handlePick = useCallback(\n (agentId: string) => {\n setDefault(vibeId, agentId);\n setOpen(false);\n },\n [setDefault, vibeId]\n );\n\n const handleAttach = useCallback(\n async (agentId: string) => {\n setBusy(true);\n setAttachError(null);\n try {\n await attach({ variables: { input: { vibeId, agentId } } });\n apolloClient.cache.evict({ id: `Vibe:${vibeId}` });\n apolloClient.cache.gc();\n await refetchAgents();\n setAttachOpen(false);\n } catch (err) {\n setAttachError(err instanceof Error ? err.message : String(err));\n } finally {\n setBusy(false);\n }\n },\n [attach, refetchAgents, vibeId, apolloClient]\n );\n\n const handleDetach = useCallback(\n async (agentId: string) => {\n if (!confirm(tr('vibeAgentSwitcher.detachConfirm', 'Detach this agent from the vibe?'))) {\n return;\n }\n setBusy(true);\n try {\n await detach({ variables: { input: { vibeId, agentId } } });\n // Evict the vibe from cache so the parent GetVibe query re-renders immediately\n apolloClient.cache.evict({ id: `Vibe:${vibeId}` });\n apolloClient.cache.gc();\n setOpen(false);\n } finally {\n setBusy(false);\n }\n },\n [detach, tr, vibeId, apolloClient]\n );\n\n return (\n <Card>\n <div className=\"p-4 border-b border-border-default flex items-center justify-between\">\n <h3 className=\"font-semibold text-text-primary flex items-center gap-2\">\n <Server className=\"size-5\" />\n {tr('vibeAgentSwitcher.title', 'Active agent for this vibe')}\n </h3>\n <button\n type=\"button\"\n onClick={() => setAttachOpen(true)}\n className=\"inline-flex items-center gap-1.5 text-xs px-2.5 py-1.5 rounded-md border border-border-default text-text-primary hover:bg-bg-sunken\"\n disabled={busy}\n >\n <Plus className=\"size-3.5\" />\n {tr('vibeAgentSwitcher.attachAnother', 'Attach another')}\n </button>\n </div>\n\n <div className=\"p-4 space-y-2 relative\">\n <button\n type=\"button\"\n onClick={() => setOpen((v) => !v)}\n className=\"w-full flex items-center justify-between gap-3 px-3 py-2.5 rounded-md border border-border-default bg-bg-sunken hover:border-action-primary-bg\"\n aria-haspopup=\"listbox\"\n aria-expanded={open}\n >\n <span className=\"flex items-center gap-3 min-w-0\">\n <Server className=\"size-4 text-text-secondary flex-shrink-0\" />\n <span className=\"min-w-0 text-left\">\n <span className=\"block text-sm font-medium text-text-primary truncate\">\n {active?.name ?? tr('vibeAgentSwitcher.none', 'No active agent')}\n </span>\n <span className=\"block text-xs text-text-secondary truncate\">\n {active?.hostname ?? '—'}\n {active && (active.isActive ? ' · active' : ' · offline')}\n </span>\n </span>\n </span>\n <ChevronDown\n className={`size-4 text-text-secondary transition-transform ${open ? 'rotate-180' : ''}`}\n />\n </button>\n\n {open && (\n <div className=\"absolute left-4 right-4 z-30 mt-1 rounded-md border border-border-default bg-bg-elevated shadow-lg\">\n <div className=\"flex items-center gap-2 px-3 py-2 border-b border-border-subtle\">\n <Search className=\"size-4 text-text-secondary\" />\n <input\n aria-label=\"control\"\n type=\"text\"\n value={query}\n onChange={(e) => setQuery(e.target.value)}\n placeholder={tr('vibeAgentSwitcher.searchPlaceholder', 'Search agents…')}\n className=\"w-full bg-transparent text-sm text-text-primary outline-none\"\n />\n </div>\n <ul role=\"listbox\" className=\"max-h-64 overflow-y-auto py-1\">\n {filtered.length === 0 ? (\n <li className=\"px-3 py-2 text-xs text-text-secondary\">\n {tr('vibeAgentSwitcher.noMatch', 'No agents match your search.')}\n </li>\n ) : (\n filtered.map((a) => {\n const isActive = a.id === effectiveAgentId;\n return (\n <li key={a.id} className=\"flex items-center\">\n <button\n type=\"button\"\n role=\"option\"\n aria-selected={isActive}\n onClick={() => handlePick(a.id)}\n className={`flex-1 flex items-center justify-between gap-3 px-3 py-2 text-left text-sm hover:bg-bg-sunken ${isActive ? 'bg-bg-sunken' : ''}`}\n >\n <span className=\"flex items-center gap-2 min-w-0\">\n <Server className=\"size-4 text-text-secondary flex-shrink-0\" />\n <span className=\"min-w-0\">\n <span className=\"block text-text-primary truncate\">{a.name}</span>\n <span className=\"block text-xs text-text-secondary truncate\">\n {a.hostname ?? '—'} {a.isActive ? '· active' : '· offline'}\n </span>\n </span>\n </span>\n {isActive && <Check className=\"size-4 text-action-primary-bg\" />}\n </button>\n <button\n type=\"button\"\n onClick={() => handleDetach(a.id)}\n disabled={busy}\n title={tr('vibeAgentSwitcher.detach', 'Detach from vibe')}\n className=\"px-2 text-text-secondary hover:text-status-error-text\"\n >\n <X className=\"size-4\" />\n </button>\n </li>\n );\n })\n )}\n </ul>\n </div>\n )}\n </div>\n\n {attachOpen && (\n <div\n tabIndex={0}\n onKeyDown={(e) => {\n if (e.key === 'Escape') {\n e.preventDefault();\n setAttachOpen(false);\n }\n }}\n role=\"dialog\"\n aria-modal=\"true\"\n className=\"fixed inset-0 z-50 flex items-center justify-center bg-black/50 p-4\"\n onClick={(e) => {\n if (e.target === e.currentTarget) setAttachOpen(false);\n }}\n >\n <div className=\"w-full max-w-md rounded-lg bg-bg-elevated border border-border-default shadow-xl\">\n <div className=\"flex items-center justify-between px-5 py-4 border-b border-border-subtle\">\n <h2 className=\"text-base font-semibold text-text-primary\">\n {tr('vibeAgentSwitcher.attachTitle', 'Attach an additional agent')}\n </h2>\n <button\n type=\"button\"\n onClick={() => setAttachOpen(false)}\n className=\"text-text-secondary hover:text-text-primary\"\n aria-label={tr('common.close', 'Close')}\n >\n <X className=\"size-4\" />\n </button>\n </div>\n <div className=\"px-5 py-3 border-b border-border-subtle\">\n <div className=\"flex items-center gap-2\">\n <Search className=\"size-4 text-text-secondary\" />\n <input\n aria-label=\"control\"\n type=\"text\"\n value={attachQuery}\n onChange={(e) => setAttachQuery(e.target.value)}\n placeholder={tr('vibeAgentSwitcher.searchPlaceholder', 'Search agents…')}\n className=\"w-full bg-transparent text-sm text-text-primary outline-none\"\n />\n </div>\n </div>\n <div className=\"p-2 max-h-[60vh] overflow-y-auto\">\n {candidates.length === 0 ? (\n <p className=\"text-sm text-text-secondary px-3 py-2\">\n {tr(\n 'vibeAgentSwitcher.noCandidates',\n 'No unattached agents available. Register a new agent first.'\n )}\n </p>\n ) : (\n <ul className=\"space-y-1\">\n {candidates.map((a: ListAgent) => (\n <li key={a.id}>\n <button\n type=\"button\"\n onClick={() => handleAttach(a.id)}\n disabled={busy}\n className=\"w-full flex items-center justify-between gap-3 px-3 py-2.5 rounded-md border border-border-subtle hover:border-border-default hover:bg-action-ghost-bg-hover text-left disabled:opacity-60\"\n >\n <span className=\"flex items-center gap-3 min-w-0\">\n <Server className=\"size-4 text-text-secondary flex-shrink-0\" />\n <span className=\"min-w-0\">\n <span className=\"block text-sm font-medium text-text-primary truncate\">\n {a.name}\n </span>\n <span className=\"block text-xs text-text-secondary truncate\">\n {a.hostname || '—'}\n {a.isActive ? ' · active' : ' · inactive'}\n </span>\n </span>\n </span>\n <span className=\"text-xs text-text-tertiary\">\n {tr('vibeAgentSwitcher.attach', 'Attach')}\n </span>\n </button>\n </li>\n ))}\n </ul>\n )}\n {attachError && (\n <p className=\"mt-2 px-3 text-sm text-status-error-text\">{attachError}</p>\n )}\n </div>\n </div>\n </div>\n )}\n </Card>\n );\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"VibeEnvVarsPanel.js","names":[],"sources":["../../../src/components/vibe/VibeEnvVarsPanel.tsx"],"sourcesContent":["import type { FC, FormEvent } from 'react';\nimport { useState } from 'react';\nimport { Variable, Lock, Trash2, Plus, Pencil, Eye, EyeOff } from 'lucide-react';\nimport { usePermissions } from '@burdenoff/fe-libs/shared/providers/shell';\n\nimport { Card, LoadingState, ErrorState, ConfirmDialog } from '@/components/shared';\nimport { VIBE_PERMISSIONS } from '@/constants/permissions';\nimport { notify } from '@/lib/toast';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport {\n useGetVibeEnvVarsQuery,\n useSetVibeEnvVarMutation,\n useDeleteVibeEnvVarMutation,\n type VibeEnvVarFieldsFragment,\n} from '@/generated/wspace-operations';\n\ninterface VibeEnvVarsPanelProps {\n vibeId: string;\n}\n\nconst KEY_PATTERN = /^[A-Za-z_]\\w*$/;\n\n/**\n * VibeEnvVarsPanel — full CRUD for a vibe's environment variables, with first-class secret support.\n * Secret values are stored AES-256-GCM-encrypted server-side and are never returned in plaintext\n * (`value` comes back null + `isSecret` true), so the UI renders them masked. Plain vars show their\n * value. Every var a session started under this vibe will automatically inherit.\n */\nexport const VibeEnvVarsPanel: FC<VibeEnvVarsPanelProps> = ({ vibeId }) => {\n const { t } = useI18n();\n const tr = (key: string, fallback: string): string => {\n const v = t(key);\n return v === key ? fallback : v;\n };\n const { hasPermission } = usePermissions();\n const canEdit = hasPermission(VIBE_PERMISSIONS.VIBE_UPDATE);\n\n const { data, loading, error, refetch } = useGetVibeEnvVarsQuery({\n variables: { vibeId },\n fetchPolicy: 'cache-and-network',\n });\n const [setEnvVar, { loading: saving }] = useSetVibeEnvVarMutation();\n const [deleteEnvVar] = useDeleteVibeEnvVarMutation();\n\n const [formKey, setFormKey] = useState('');\n const [formValue, setFormValue] = useState('');\n const [formSecret, setFormSecret] = useState(false);\n const [editingKey, setEditingKey] = useState<string | null>(null);\n const [revealValue, setRevealValue] = useState(false);\n const [pendingDelete, setPendingDelete] = useState<string | null>(null);\n\n const envVars: VibeEnvVarFieldsFragment[] = data?.vibe?.envVars ?? [];\n\n const resetForm = (): void => {\n setFormKey('');\n setFormValue('');\n setFormSecret(false);\n setEditingKey(null);\n setRevealValue(false);\n };\n\n const startEdit = (key: string, isSecret: boolean, value: string | null | undefined): void => {\n setEditingKey(key);\n setFormKey(key);\n setFormValue(value ?? '');\n setFormSecret(isSecret);\n setRevealValue(false);\n };\n\n const handleSubmit = async (e: FormEvent): Promise<void> => {\n e.preventDefault();\n const key = formKey.trim();\n if (!KEY_PATTERN.test(key)) {\n notify.error(\n tr('vibeEnv.invalidKey', 'Invalid name'),\n tr(\n 'vibeEnv.invalidKeyDesc',\n 'Use letters, digits and underscores; must not start with a digit.'\n )\n );\n return;\n }\n try {\n await setEnvVar({ variables: { vibeId, key, value: formValue, isSecret: formSecret } });\n await refetch();\n notify.success(\n editingKey\n ? tr('vibeEnv.updated', 'Variable updated')\n : tr('vibeEnv.added', 'Variable added'),\n `${key}${formSecret ? ' (secret)' : ''}`\n );\n resetForm();\n } catch (err) {\n notify.error(tr('vibeEnv.saveFailed', 'Could not save variable'), (err as Error).message);\n }\n };\n\n const handleDelete = async (key: string): Promise<void> => {\n try {\n await deleteEnvVar({ variables: { vibeId, key } });\n await refetch();\n notify.success(tr('vibeEnv.deleted', 'Variable removed'), key);\n if (editingKey === key) resetForm();\n } catch (err) {\n notify.error(tr('vibeEnv.deleteFailed', 'Could not remove variable'), (err as Error).message);\n } finally {\n setPendingDelete(null);\n }\n };\n\n return (\n <Card>\n <div className=\"p-4 border-b border-border-default flex items-center justify-between\">\n <h3 className=\"font-semibold text-text-primary flex items-center gap-2\">\n <Variable className=\"size-5\" />\n {tr('vibeDetails.environmentVariables', 'Environment Variables')}\n </h3>\n <span className=\"text-xs text-text-secondary\">\n {tr('vibeEnv.injectedHint', 'Injected into every session started under this vibe')}\n </span>\n </div>\n\n <div className=\"p-4 space-y-4\">\n {loading && envVars.length === 0 ? (\n <LoadingState />\n ) : error ? (\n <ErrorState message={error.message} onRetry={() => void refetch()} />\n ) : envVars.length === 0 ? (\n <p className=\"text-text-secondary\">\n {tr('vibeDetails.noEnvironmentVariables', 'No environment variables configured')}\n </p>\n ) : (\n <ul className=\"divide-y divide-border-default rounded-md border border-border-default\">\n {envVars.map((v) => (\n <li key={v.key} className=\"flex items-center gap-3 px-3 py-2\">\n <span className=\"font-mono text-sm text-text-primary shrink-0\">{v.key}</span>\n <span className=\"text-text-tertiary\">=</span>\n <span className=\"font-mono text-sm text-text-secondary truncate flex items-center gap-1.5 flex-1\">\n {v.isSecret ? (\n <>\n <Lock className=\"size-3.5 text-text-tertiary\" aria-hidden />\n <span aria-label={tr('vibeEnv.secretMasked', 'Secret value (hidden)')}>\n ••••••••\n </span>\n </>\n ) : (\n <span className=\"truncate\">{v.value}</span>\n )}\n </span>\n {canEdit && (\n <div className=\"flex items-center gap-1 shrink-0\">\n <button\n type=\"button\"\n onClick={() => startEdit(v.key, v.isSecret, v.value)}\n className=\"p-1.5 rounded text-text-secondary hover:text-text-primary hover:bg-bg-sunken\"\n aria-label={tr('common.edit', 'Edit')}\n >\n <Pencil className=\"size-4\" />\n </button>\n <button\n type=\"button\"\n onClick={() => setPendingDelete(v.key)}\n className=\"p-1.5 rounded text-text-secondary hover:text-action-danger-text hover:bg-bg-sunken\"\n aria-label={tr('common.delete', 'Delete')}\n >\n <Trash2 className=\"size-4\" />\n </button>\n </div>\n )}\n </li>\n ))}\n </ul>\n )}\n\n {canEdit && (\n <form onSubmit={(e) => void handleSubmit(e)} className=\"space-y-3 pt-2\">\n <div className=\"flex flex-col gap-2 sm:flex-row sm:items-center\">\n <input\n value={formKey}\n onChange={(e) => setFormKey(e.target.value)}\n disabled={editingKey !== null}\n placeholder={tr('vibeEnv.keyPlaceholder', 'NAME')}\n className=\"font-mono text-sm px-3 py-2 rounded-md border border-border-default bg-bg-surface text-text-primary disabled:opacity-60 sm:w-48\"\n aria-label={tr('vibeEnv.keyLabel', 'Variable name')}\n />\n <div className=\"relative flex-1\">\n <input\n value={formValue}\n onChange={(e) => setFormValue(e.target.value)}\n type={formSecret && !revealValue ? 'password' : 'text'}\n placeholder={\n editingKey && formSecret\n ? tr('vibeEnv.secretReenter', 'Enter a new secret value')\n : tr('vibeEnv.valuePlaceholder', 'value')\n }\n className=\"w-full font-mono text-sm px-3 py-2 rounded-md border border-border-default bg-bg-surface text-text-primary\"\n aria-label={tr('vibeEnv.valueLabel', 'Variable value')}\n />\n {formSecret && (\n <button\n type=\"button\"\n onClick={() => setRevealValue((s) => !s)}\n className=\"absolute right-2 top-1/2 -translate-y-1/2 p-1 text-text-tertiary hover:text-text-primary\"\n aria-label={\n revealValue ? tr('vibeEnv.hide', 'Hide') : tr('vibeEnv.reveal', 'Reveal')\n }\n >\n {revealValue ? <EyeOff className=\"size-4\" /> : <Eye className=\"size-4\" />}\n </button>\n )}\n </div>\n </div>\n <div className=\"flex items-center justify-between\">\n <label className=\"flex items-center gap-2 text-sm text-text-secondary cursor-pointer\">\n <input\n type=\"checkbox\"\n checked={formSecret}\n onChange={(e) => setFormSecret(e.target.checked)}\n className=\"rounded border-border-default\"\n />\n <Lock className=\"size-3.5\" />\n {tr('vibeEnv.secretToggle', 'Secret (encrypted at rest, never shown again)')}\n </label>\n <div className=\"flex items-center gap-2\">\n {editingKey && (\n <button\n type=\"button\"\n onClick={resetForm}\n className=\"px-3 py-2 text-sm rounded-md text-text-secondary hover:bg-bg-sunken\"\n >\n {tr('common.cancel', 'Cancel')}\n </button>\n )}\n <button\n type=\"submit\"\n disabled={saving || formKey.trim().length === 0}\n className=\"flex items-center gap-1.5 px-3 py-2 text-sm rounded-md bg-action-primary-bg text-action-primary-text hover:opacity-90 disabled:opacity-50\"\n >\n <Plus className=\"size-4\" />\n {editingKey ? tr('vibeEnv.save', 'Save') : tr('vibeEnv.add', 'Add variable')}\n </button>\n </div>\n </div>\n </form>\n )}\n </div>\n\n {pendingDelete && (\n <ConfirmDialog\n isOpen\n title={tr('vibeEnv.deleteTitle', 'Remove environment variable?')}\n message={`\"${pendingDelete}\" ${tr('vibeEnv.deleteMessage', 'will be removed from this vibe.')}`}\n confirmLabel={tr('common.delete', 'Delete')}\n variant=\"danger\"\n onConfirm={() => void handleDelete(pendingDelete)}\n onClose={() => setPendingDelete(null)}\n />\n )}\n </Card>\n );\n};\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"VibeLinkedEntitiesPanel.js","names":[],"sources":["../../../src/components/vibe/VibeLinkedEntitiesPanel.tsx"],"sourcesContent":["import { Link2, ArrowUpRight } from 'lucide-react';\nimport { EmptyState, LoadingState, ErrorState } from '@/components/shared';\nimport { useTr } from '@/shared/hooks/useTr';\nimport { useVibeControls, useVibeNavigate } from '@/providers/VibeControlsProvider';\nimport {\n useGetVibeLinkedEntitiesQuery,\n useGetVibeLinkedSandboxesQuery,\n useGetVibeLinkedScheduledJobsQuery,\n type GetVibeLinkedEntitiesQuery,\n type GetVibeLinkedSandboxesQuery,\n type GetVibeLinkedScheduledJobsQuery,\n} from '@/generated/wspace-operations';\n\ntype LinkedSandbox = GetVibeLinkedSandboxesQuery['listSandboxes']['items'][number];\ntype LinkedScheduledJob = GetVibeLinkedScheduledJobsQuery['scheduledJobs']['jobs'][number];\n\ntype LinkedEntities = NonNullable<\n NonNullable<GetVibeLinkedEntitiesQuery['vibe']>['linkedEntities']\n>;\n\nexport type LinkedEntityKind =\n | 'vibedecks'\n | 'actions'\n | 'scheduledJobs'\n | 'sandboxes'\n | 'aiPrompts'\n | 'aiContexts'\n | 'instructionFiles'\n | 'tunnels';\n\ninterface VibeLinkedEntitiesPanelProps {\n vibeId: string;\n kind: LinkedEntityKind;\n}\n\nconst KIND_LABELS: Record<LinkedEntityKind, { singular: string; plural: string }> = {\n vibedecks: { singular: 'Vibe Deck', plural: 'Vibe Decks' },\n actions: { singular: 'Action', plural: 'Actions' },\n scheduledJobs: { singular: 'Scheduled Job', plural: 'Scheduled Jobs' },\n sandboxes: { singular: 'Sandbox', plural: 'Sandboxes' },\n aiPrompts: { singular: 'AI Prompt', plural: 'AI Prompts' },\n aiContexts: { singular: 'AI Context', plural: 'AI Contexts' },\n instructionFiles: { singular: 'Instruction File', plural: 'Instruction Files' },\n tunnels: { singular: 'Tunnel', plural: 'Tunnels' },\n};\n\n// Kinds backed by Vibe.linkedEntities on wspace-vibecontrols-svc. scheduledJobs +\n// sandboxes live in other subgraphs and are rendered by the dedicated\n// sub-panels below (listSandboxes / scheduledJobs filtered by vibeId).\nconst LOCAL_KINDS = new Set<LinkedEntityKind>([\n 'vibedecks',\n 'actions',\n 'aiPrompts',\n 'aiContexts',\n 'instructionFiles',\n 'tunnels',\n]);\n\n// In-app destination for each linked-entity kind's main management page. Lets\n// users jump straight from a vibe's linked-entity tab to the full entity surface\n// without hunting through the side navigation. All paths are relative to the\n// vibecontrols basePath and go through useVibeNavigate (which prepends it) —\n// EXCEPT `sandboxes`, which is served by a sibling host-shell MFE mounted at the\n// app-absolute `/sandbox` route and must be navigated via the host shell (see\n// VibeLinkedSandboxes below).\nconst KIND_ROUTES: Record<LinkedEntityKind, string> = {\n vibedecks: '/vibedeck',\n actions: '/actions',\n scheduledJobs: '/calendar',\n sandboxes: '/sandbox',\n aiPrompts: '/ai-tools/ai/prompts',\n aiContexts: '/ai-tools/ai/contexts',\n instructionFiles: '/ai-tools/ai/instructions',\n tunnels: '/tunnels',\n};\n\ninterface LinkedRow {\n id: string;\n label: string;\n badge: string;\n visibility: string;\n}\n\nfunction visibilityLabel(visibility: string): string {\n return visibility === 'SHARED_WITH_VIBE' ? 'Shared' : 'Private';\n}\n\n/**\n * Shared presentational shell for a list of linked rows: handles loading,\n * error, empty, and the populated list. Keeps the three data sources\n * (linkedEntities, sandboxes, scheduledJobs) rendering identically.\n */\nfunction LinkedRowsView({\n labels,\n loading,\n hasData,\n error,\n rows,\n emptyDescription,\n onOpenPage,\n}: {\n labels: { singular: string; plural: string };\n loading: boolean;\n hasData: boolean;\n error?: { message: string };\n rows: LinkedRow[];\n emptyDescription: string;\n /** Navigate to this kind's full management page (Part 1 deep-link). */\n onOpenPage?: () => void;\n}) {\n const tr = useTr();\n\n const body = (() => {\n if (loading && !hasData) {\n return (\n <div className=\"p-6\">\n <LoadingState message={`Loading ${labels.plural.toLowerCase()}…`} />\n </div>\n );\n }\n\n if (error) {\n return (\n <div className=\"p-6\">\n <ErrorState\n title={`Failed to load ${labels.plural.toLowerCase()}`}\n message={error.message}\n />\n </div>\n );\n }\n\n if (rows.length === 0) {\n return (\n <div className=\"p-6\">\n <EmptyState\n icon={<Link2 size={48} className=\"text-text-secondary\" />}\n title={`No ${labels.plural.toLowerCase()} linked yet`}\n description={emptyDescription}\n />\n </div>\n );\n }\n\n return (\n <ul className=\"divide-y divide-border-default\" data-testid=\"vibe-linked-entities\">\n {rows.map((row) => (\n <li key={row.id} className=\"flex items-center justify-between gap-3 px-4 py-3\">\n <div className=\"flex min-w-0 items-center gap-2\">\n <span className=\"truncate text-sm font-medium text-text-primary\">{row.label}</span>\n <span className=\"flex-shrink-0 rounded bg-bg-sunken px-2 py-0.5 text-xs text-text-secondary\">\n {row.badge}\n </span>\n </div>\n <span\n className={`flex-shrink-0 rounded px-2 py-0.5 text-xs ${\n row.visibility === 'SHARED_WITH_VIBE'\n ? 'bg-action-primary-bg text-action-primary-text'\n : 'bg-bg-sunken text-text-tertiary'\n }`}\n >\n {visibilityLabel(row.visibility)}\n </span>\n </li>\n ))}\n </ul>\n );\n })();\n\n return (\n <div className=\"rounded-lg border border-border-default bg-bg-surface\">\n <div className=\"flex items-center justify-between gap-3 border-b border-border-default px-4 py-3\">\n <h3 className=\"text-sm font-semibold text-text-primary\">{labels.plural}</h3>\n {onOpenPage && (\n <button\n type=\"button\"\n onClick={onOpenPage}\n data-testid=\"vibe-linked-open-page\"\n className=\"inline-flex flex-shrink-0 items-center gap-1.5 rounded-md border border-border-default px-2.5 py-1.5 text-xs font-medium text-text-primary transition-colors hover:bg-bg-elevated\"\n title={tr('vibeDetails.linked.openPageTitle', `Open the ${labels.plural} page`)}\n >\n {tr('vibeDetails.linked.openPage', `Open ${labels.plural} page`)}\n <ArrowUpRight size={14} />\n </button>\n )}\n </div>\n {body}\n </div>\n );\n}\n\n/** Sandboxes linked to the vibe — fetched from the sandbox subgraph. */\nfunction VibeLinkedSandboxes({ vibeId }: { vibeId: string }) {\n const tr = useTr();\n const navigate = useVibeNavigate();\n const labels = KIND_LABELS.sandboxes;\n const { workspaceId, projectId, navigate: shellNavigate } = useVibeControls();\n\n // Sandboxes mount at the app-absolute `/sandbox` route, OUTSIDE the\n // vibecontrols basePath. Use the host shell navigate directly so we don't get\n // basePath-prefixed into a dead end; fall back to the in-MFE navigate when\n // running standalone (no shell, basePath empty → path passes through as-is).\n const openSandboxes = () => {\n if (shellNavigate) shellNavigate(KIND_ROUTES.sandboxes);\n else navigate(KIND_ROUTES.sandboxes);\n };\n\n const { data, loading, error } = useGetVibeLinkedSandboxesQuery({\n variables: {\n context: { workspaceId: workspaceId ?? undefined, projectId: projectId ?? undefined },\n vibeId,\n },\n skip: !workspaceId,\n fetchPolicy: 'cache-and-network',\n });\n\n const rows: LinkedRow[] = (data?.listSandboxes?.items ?? []).map((s: LinkedSandbox) => ({\n id: s.id,\n label: s.name,\n badge: String(s.status),\n visibility: s.visibility,\n }));\n\n return (\n <LinkedRowsView\n labels={labels}\n loading={loading}\n hasData={!!data}\n error={error}\n rows={rows}\n onOpenPage={openSandboxes}\n emptyDescription={tr(\n 'vibeDetails.linked.empty',\n `Link a ${labels.singular.toLowerCase()} to this vibe and set it to \"Shared with vibe\" to make it visible to everyone with access.`\n )}\n />\n );\n}\n\n/** Scheduled jobs linked to the vibe — fetched from the scheduler subgraph. */\nfunction VibeLinkedScheduledJobs({ vibeId }: { vibeId: string }) {\n const tr = useTr();\n const navigate = useVibeNavigate();\n const labels = KIND_LABELS.scheduledJobs;\n const { workspaceId } = useVibeControls();\n\n const { data, loading, error } = useGetVibeLinkedScheduledJobsQuery({\n variables: { workspaceId: workspaceId ?? '', vibeId },\n skip: !workspaceId,\n fetchPolicy: 'cache-and-network',\n });\n\n const rows: LinkedRow[] = (data?.scheduledJobs?.jobs ?? []).map((j: LinkedScheduledJob) => ({\n id: j.id,\n label: j.name ?? j.id,\n badge: String(j.status),\n visibility: j.visibility,\n }));\n\n return (\n <LinkedRowsView\n labels={labels}\n loading={loading}\n hasData={!!data}\n error={error}\n rows={rows}\n onOpenPage={() => navigate(KIND_ROUTES.scheduledJobs)}\n emptyDescription={tr(\n 'vibeDetails.linked.empty',\n `Link a ${labels.singular.toLowerCase()} to this vibe and set it to \"Shared with vibe\" to make it visible to everyone with access.`\n )}\n />\n );\n}\n\n/**\n * Renders the entities linked to a vibe (visibility-filtered server-side) for a\n * given kind. Local kinds come from `Vibe.linkedEntities`; sandboxes +\n * scheduledJobs are fetched from their own subgraphs via dedicated vibeId\n * filters. SHARED_WITH_VIBE entities are visible to every member with access to\n * the vibe; PRIVATE only to their owner.\n */\nexport function VibeLinkedEntitiesPanel({ vibeId, kind }: VibeLinkedEntitiesPanelProps) {\n const tr = useTr();\n const navigate = useVibeNavigate();\n const labels = KIND_LABELS[kind];\n const isLocal = LOCAL_KINDS.has(kind);\n\n const { data, loading, error } = useGetVibeLinkedEntitiesQuery({\n variables: { id: vibeId },\n skip: !isLocal,\n fetchPolicy: 'cache-and-network',\n });\n\n if (kind === 'sandboxes') {\n return <VibeLinkedSandboxes vibeId={vibeId} />;\n }\n if (kind === 'scheduledJobs') {\n return <VibeLinkedScheduledJobs vibeId={vibeId} />;\n }\n\n const linked: LinkedEntities | undefined = data?.vibe?.linkedEntities ?? undefined;\n const rows: LinkedRow[] = (() => {\n if (!linked) return [];\n switch (kind) {\n case 'vibedecks':\n return linked.vibeDecks.map((d) => ({\n id: d.id,\n label: d.name,\n badge: 'Deck',\n visibility: d.visibility,\n }));\n case 'actions':\n return linked.actions.map((a) => ({\n id: a.id,\n label: a.name,\n badge: 'Action',\n visibility: a.visibility,\n }));\n case 'aiPrompts':\n return linked.aiPrompts.map((p) => ({\n id: p.id,\n label: p.name,\n badge: String(p.category),\n visibility: p.visibility,\n }));\n case 'aiContexts':\n return linked.aiContexts.map((c) => ({\n id: c.id,\n label: c.name,\n badge: String(c.type),\n visibility: c.visibility,\n }));\n case 'instructionFiles':\n return linked.instructionFiles.map((f) => ({\n id: f.id,\n label: f.effectiveFilename,\n badge: String(f.scope),\n visibility: f.visibility,\n }));\n case 'tunnels':\n return linked.tunnels.map((t) => ({\n id: t.id,\n label: t.name,\n badge: 'Tunnel',\n visibility: t.visibility,\n }));\n default:\n return [];\n }\n })();\n\n return (\n <LinkedRowsView\n labels={labels}\n loading={loading}\n hasData={!!data}\n error={error}\n rows={rows}\n onOpenPage={() => navigate(KIND_ROUTES[kind])}\n emptyDescription={tr(\n 'vibeDetails.linked.empty',\n `Link a ${labels.singular.toLowerCase()} to this vibe and set it to \"Shared with vibe\" to make it visible to everyone with access.`\n )}\n />\n );\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"VibeLlmContextAdminPanel.js","names":[],"sources":["../../../src/components/vibe/VibeLlmContextAdminPanel.tsx"],"sourcesContent":["import type { ReactElement } from 'react';\nimport { useState } from 'react';\nimport { gql } from '@apollo/client';\nimport { useMutation, useQuery } from '@apollo/client/react';\nimport { Clock, Info, Shield, Trash2 } from 'lucide-react';\n\ninterface AdminTokenRow {\n id: string;\n vibeId: string;\n userId: string;\n label: string | null;\n tokenFingerprint: string;\n includeCredentials: boolean;\n includes: string[];\n status: 'ACTIVE' | 'REVOKED';\n expiresAt: string;\n lastFetchedAt: string | null;\n fetchCount: number;\n createdAt: string;\n revokedAt: string | null;\n revokedReason: string | null;\n}\n\nconst ALL_TOKENS = gql`\n query AllVibeLlmContextTokens($vibeId: ID, $userId: ID) {\n allVibeLlmContextTokens(vibeId: $vibeId, userId: $userId) {\n id\n vibeId\n userId\n label\n tokenFingerprint\n includeCredentials\n includes\n status\n expiresAt\n lastFetchedAt\n fetchCount\n createdAt\n revokedAt\n revokedReason\n }\n }\n`;\n\nconst ADMIN_REVOKE = gql`\n mutation AdminRevokeVibeLlmContextToken($tokenId: ID!, $reason: String) {\n adminRevokeVibeLlmContextToken(tokenId: $tokenId, reason: $reason) {\n id\n status\n revokedAt\n revokedReason\n }\n }\n`;\n\nfunction formatExpiry(expiresAt: string): string {\n const diff = new Date(expiresAt).getTime() - Date.now();\n if (diff < 0) return 'expired';\n const hours = Math.floor(diff / (1000 * 60 * 60));\n const mins = Math.floor((diff % (1000 * 60 * 60)) / (1000 * 60));\n if (hours > 24) return `${Math.floor(hours / 24)}d`;\n if (hours > 0) return `${hours}h ${mins}m`;\n return `${mins}m`;\n}\n\ninterface VibeLlmContextAdminPanelProps {\n vibeId: string;\n}\n\nexport function VibeLlmContextAdminPanel({ vibeId }: VibeLlmContextAdminPanelProps): ReactElement {\n const { data, loading, refetch } = useQuery<{ allVibeLlmContextTokens: AdminTokenRow[] }>(\n ALL_TOKENS,\n {\n variables: { vibeId },\n fetchPolicy: 'cache-and-network',\n errorPolicy: 'ignore',\n }\n );\n const [adminRevoke] = useMutation<\n { adminRevokeVibeLlmContextToken: AdminTokenRow },\n { tokenId: string; reason?: string | null }\n >(ADMIN_REVOKE, { refetchQueries: ['AllVibeLlmContextTokens'] });\n\n const [reasonDraft, setReasonDraft] = useState<Record<string, string>>({});\n const tokens = data?.allVibeLlmContextTokens ?? [];\n\n const onRevoke = async (tokenId: string) => {\n await adminRevoke({\n variables: {\n tokenId,\n reason: (reasonDraft[tokenId] ?? '').trim() || null,\n },\n });\n setReasonDraft((prev) => {\n const next = { ...prev };\n delete next[tokenId];\n return next;\n });\n await refetch();\n };\n\n return (\n <section className=\"bg-bg-surface border border-status-warning-border rounded-lg p-5 space-y-3\">\n <header className=\"flex items-start gap-3\">\n <Shield className=\"size-5 text-status-warning-text mt-0.5\" />\n <div>\n <h3 className=\"text-base font-semibold text-text-primary\">\n Admin · all URLs for this vibe\n </h3>\n <p className=\"text-sm text-text-secondary\">\n Visible only to workspace admins. Lists every user's signed URLs for this vibe. Use\n revoke to immediately invalidate any URL — takes effect on the next fetch.\n </p>\n </div>\n </header>\n\n {loading && tokens.length === 0 && (\n <div className=\"text-sm text-text-secondary py-3\">Loading…</div>\n )}\n {tokens.length === 0 && !loading && (\n <div className=\"text-sm text-text-secondary py-3 flex items-center gap-2\">\n <Info className=\"size-4\" />\n No URLs minted for this vibe by any user.\n </div>\n )}\n {tokens.length > 0 && (\n <div className=\"overflow-x-auto\">\n <table className=\"w-full text-sm\">\n <thead>\n <tr className=\"border-b border-border-default text-left text-xs text-text-secondary\">\n <th className=\"py-2 pr-3\">User</th>\n <th className=\"py-2 pr-3\">Label</th>\n <th className=\"py-2 pr-3\">Fingerprint</th>\n <th className=\"py-2 pr-3\">Creds</th>\n <th className=\"py-2 pr-3\">Status</th>\n <th className=\"py-2 pr-3\">Expires</th>\n <th className=\"py-2 pr-3\">Fetches</th>\n <th className=\"py-2 pr-3\">Revoke</th>\n </tr>\n </thead>\n <tbody>\n {tokens.map((t) => (\n <tr key={t.id} className=\"border-b border-border-subtle align-top\">\n <td\n className=\"py-2 pr-3 font-mono text-xs text-text-secondary truncate max-w-[120px]\"\n title={t.userId}\n >\n {t.userId}\n </td>\n <td className=\"py-2 pr-3 text-text-primary\">{t.label ?? '—'}</td>\n <td className=\"py-2 pr-3 font-mono text-xs text-text-secondary\">\n {t.tokenFingerprint}\n </td>\n <td className=\"py-2 pr-3\">\n {t.includeCredentials ? (\n <span className=\"text-xs text-status-warning-text\">on</span>\n ) : (\n <span className=\"text-xs text-text-secondary\">off</span>\n )}\n </td>\n <td className=\"py-2 pr-3\">\n <span\n className={`text-xs px-1.5 py-0.5 rounded ${\n t.status === 'ACTIVE'\n ? 'bg-status-success-bg/20 text-status-success-text'\n : 'bg-bg-sunken text-text-secondary'\n }`}\n >\n {t.status}\n </span>\n </td>\n <td className=\"py-2 pr-3 text-xs text-text-secondary\">\n <span className=\"inline-flex items-center gap-1\">\n <Clock className=\"size-3\" />\n {formatExpiry(t.expiresAt)}\n </span>\n </td>\n <td className=\"py-2 pr-3 text-xs text-text-secondary\">{t.fetchCount}</td>\n <td className=\"py-2 pr-3\">\n {t.status === 'ACTIVE' ? (\n <div className=\"flex items-center gap-1\">\n <input\n aria-label=\"reason\"\n type=\"text\"\n value={reasonDraft[t.id] ?? ''}\n onChange={(e) =>\n setReasonDraft((prev) => ({ ...prev, [t.id]: e.target.value }))\n }\n placeholder=\"reason\"\n className=\"w-28 px-1.5 py-1 text-xs bg-bg-sunken border border-border-default rounded text-text-primary\"\n />\n <button\n type=\"button\"\n onClick={() => onRevoke(t.id)}\n title=\"Admin revoke\"\n aria-label=\"Admin revoke URL\"\n className=\"p-1.5 text-status-error-text hover:opacity-80\"\n >\n <Trash2 className=\"size-4\" />\n </button>\n </div>\n ) : (\n <span className=\"text-xs text-text-secondary\" title={t.revokedReason ?? ''}>\n {t.revokedReason ?? '—'}\n </span>\n )}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n )}\n </section>\n );\n}\n"],"mappings":"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"}