@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":"SharedSessionPage.js","names":[],"sources":["../../src/pages/SharedSessionPage.tsx"],"sourcesContent":["import { useState, useEffect, useCallback, useRef, useMemo } from 'react';\nimport { useParams } from 'react-router';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport {\n Terminal,\n Loader2,\n AlertCircle,\n Lock,\n Eye,\n Gamepad2,\n Users,\n Clock,\n ArrowLeft,\n LogIn,\n} from 'lucide-react';\nimport {\n useValidateShareLinkQuery,\n useJoinSharedSessionMutation,\n useLeaveSharedSessionMutation,\n useRequestSessionControlMutation,\n useReleaseSessionControlMutation,\n useGetSessionCollaboratorsQuery,\n useCollaboratorJoinedSubscription,\n useCollaboratorLeftSubscription,\n useSessionControlChangedSubscription,\n type SessionCollaboratorFieldsFragment,\n} from '@/generated/wspace-operations';\nimport { SessionSharePermission } from '@/generated/wspace-types';\nimport { SharedTerminalPanel } from '@/components/sessions/SharedTerminalPanel';\nimport { CollaboratorsList } from '@/components/sessions/CollaboratorsList';\nimport { MotionPage } from '@burdenoff/fe-libs/shared/motion';\nimport { useVibeControls } from '@/providers/VibeControlsProvider';\n\ninterface PasswordFormProps {\n onSubmit: (password: string) => void;\n isLoading: boolean;\n error?: string | null;\n}\n\n/**\n * Password entry form for protected share links\n */\nfunction PasswordForm({ onSubmit, isLoading, error }: PasswordFormProps) {\n const [password, setPassword] = useState('');\n\n const handleSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n if (password.trim()) {\n onSubmit(password);\n }\n };\n\n return (\n <form onSubmit={handleSubmit} className=\"space-y-4 w-full max-w-sm\">\n <div>\n <label\n htmlFor=\"shared-session-password\"\n className=\"block text-sm font-medium text-text-primary mb-2\"\n >\n This session is password protected\n </label>\n <div className=\"relative\">\n <Lock className=\"absolute left-3 top-1/2 -translate-y-1/2 size-4 text-text-secondary\" />\n <input\n aria-label=\"Enter password\"\n id=\"shared-session-password\"\n type=\"password\"\n value={password}\n onChange={(e) => setPassword(e.target.value)}\n placeholder=\"Enter password\"\n className=\"w-full pl-10 pr-4 py-2 text-sm bg-bg-sunken border border-border-default rounded-md text-text-primary placeholder:text-text-placeholder focus:outline-none focus:ring-2 focus:ring-action-primary-bg\"\n />\n </div>\n </div>\n {error && (\n <div className=\"flex items-center gap-2 p-3 bg-status-error-bg-subtle border border-status-error-border rounded-lg\">\n <AlertCircle className=\"size-4 text-status-error-text\" />\n <span className=\"text-sm text-status-error-text\">{error}</span>\n </div>\n )}\n <button\n type=\"submit\"\n disabled={isLoading || !password.trim()}\n className=\"w-full px-4 py-2 text-sm font-medium text-action-primary-text bg-action-primary-bg rounded-md hover:bg-action-primary-bg-hover transition-colors disabled:opacity-50\"\n >\n {isLoading ? (\n <span className=\"flex items-center justify-center gap-2\">\n <Loader2 className=\"size-4 animate-spin\" />\n Joining...\n </span>\n ) : (\n 'Join Session'\n )}\n </button>\n </form>\n );\n}\n\n/**\n * SharedSessionPage - Page for accessing shared terminal sessions via link\n *\n * URL: /share/:token\n *\n * Flow:\n * 1. Validate the share link token\n * 2. If password required, show password form\n * 3. Join the shared session\n * 4. Display terminal with collaboration UI\n */\nexport function SharedSessionPage() {\n const { t } = useI18n();\n const tr = useCallback(\n (key: string, fallback: string): string => {\n const value = t(key);\n return value === key ? fallback : value;\n },\n [t]\n );\n const { token } = useParams<{ token: string }>();\n const { currentUser } = useVibeControls();\n // State\n const [joined, setJoined] = useState(false);\n const [sessionId, setSessionId] = useState<string | null>(null);\n const [password, setPassword] = useState('');\n const [passwordError, setPasswordError] = useState<string | null>(null);\n const [joinError, setJoinError] = useState<string | null>(null);\n const [hasLeft, setHasLeft] = useState(false);\n const joiningRef = useRef(false);\n const hasJoinedRef = useRef(false);\n\n // Get currentUserId from auth context\n const currentUserId = currentUser?.id ?? '';\n\n // Validate the share link\n const {\n data: validationData,\n loading: validating,\n error: validationError,\n refetch: refetchValidation,\n } = useValidateShareLinkQuery({\n variables: { token: token || '' },\n skip: !token,\n });\n\n const validation = validationData?.validateShareLink;\n\n // Mutations\n const [joinSession, { loading: joining }] = useJoinSharedSessionMutation();\n const [leaveSession] = useLeaveSharedSessionMutation();\n const [requestControl, { loading: requestingControl }] = useRequestSessionControlMutation();\n const [releaseControl, { loading: releasingControl }] = useReleaseSessionControlMutation();\n\n // Get collaborators once joined\n const { data: collaboratorsData, refetch: refetchCollaborators } =\n useGetSessionCollaboratorsQuery({\n variables: { sessionId: sessionId || '' },\n skip: !sessionId || !joined,\n // Subscription handles the primary signal (collaboratorJoined /\n // collaboratorLeft). Poll is a slow safety-net to recover if the\n // SSE stream drops silently — 60s is enough since presence flips\n // are pushed through the subscription.\n pollInterval: 60_000,\n });\n\n const collaborators = collaboratorsData?.sessionCollaborators || [];\n\n // Real-time subscriptions for collaboration events\n const { data: joinedData } = useCollaboratorJoinedSubscription({\n variables: { sessionId: sessionId || '' },\n skip: !sessionId || !joined,\n });\n\n const { data: leftData } = useCollaboratorLeftSubscription({\n variables: { sessionId: sessionId || '' },\n skip: !sessionId || !joined,\n });\n\n const { data: controlChangedData } = useSessionControlChangedSubscription({\n variables: { sessionId: sessionId || '' },\n skip: !sessionId || !joined,\n });\n\n // Refetch collaborators when subscription events arrive\n useEffect(() => {\n if (joinedData || leftData || controlChangedData) {\n refetchCollaborators();\n }\n }, [joinedData, leftData, controlChangedData, refetchCollaborators]);\n\n // Cleanup: Leave session only on unmount, and only if we actually joined\n useEffect(() => {\n return () => {\n if (hasJoinedRef.current && sessionId) {\n leaveSession({ variables: { sessionId } }).catch(console.error);\n }\n };\n }, [sessionId, leaveSession]);\n\n const handleJoinSession = useCallback(\n async (passwordInput?: string) => {\n if (!token || joiningRef.current) return;\n\n joiningRef.current = true;\n const pwd = passwordInput || password;\n setPasswordError(null);\n setJoinError(null);\n\n try {\n const result = await joinSession({\n variables: {\n input: {\n shareToken: token,\n password: pwd || undefined,\n },\n },\n });\n\n if (result.data?.joinSharedSession) {\n hasJoinedRef.current = true;\n setJoined(true);\n setSessionId(result.data.joinSharedSession.sessionId);\n void refetchValidation();\n }\n } catch (err) {\n const message = err instanceof Error ? err.message : 'Failed to join session';\n if (message.toLowerCase().includes('password')) {\n setPasswordError('Incorrect password');\n } else {\n setPasswordError(message);\n setJoinError(message);\n }\n } finally {\n joiningRef.current = false;\n }\n },\n [joinSession, password, refetchValidation, token]\n );\n\n // Auto-join if no password required and link is valid\n useEffect(() => {\n if (\n validation?.isValid &&\n !validation.requiresPassword &&\n !joined &&\n !hasLeft &&\n !joiningRef.current &&\n token\n ) {\n // Set sessionId early from validation so collaborators query can start\n if (validation.sessionId && !sessionId) {\n setSessionId(validation.sessionId);\n }\n void handleJoinSession();\n }\n }, [\n validation?.isValid,\n validation?.requiresPassword,\n validation?.sessionId,\n joined,\n hasLeft,\n token,\n sessionId,\n handleJoinSession,\n ]);\n\n const handleRequestControl = useCallback(async () => {\n if (!sessionId) return;\n try {\n await requestControl({ variables: { sessionId } });\n refetchCollaborators();\n } catch (err) {\n console.error('Failed to request control:', err);\n }\n }, [sessionId, requestControl, refetchCollaborators]);\n\n const handleReleaseControl = useCallback(async () => {\n if (!sessionId) return;\n try {\n await releaseControl({ variables: { sessionId } });\n refetchCollaborators();\n } catch (err) {\n console.error('Failed to release control:', err);\n }\n }, [sessionId, releaseControl, refetchCollaborators]);\n\n const handleLeaveSession = useCallback(async () => {\n if (!sessionId) return;\n try {\n await leaveSession({ variables: { sessionId } });\n hasJoinedRef.current = false; // Prevent cleanup from firing a second leave\n setHasLeft(true);\n setJoined(false);\n setSessionId(null);\n window.history.back();\n } catch (err) {\n console.error('Failed to leave session:', err);\n }\n }, [sessionId, leaveSession]);\n\n // Determine current user's collaborator entry\n const currentCollaborator = collaborators.find(\n (c: SessionCollaboratorFieldsFragment) => c.userId === currentUserId\n );\n const permission = validation?.permission || SessionSharePermission.View;\n\n // Stabilize terminal URL to prevent iframe reloads on parent re-render\n const terminalUrl = useMemo(() => validation?.ttydUrl || null, [validation?.ttydUrl]);\n\n // Loading state\n if (validating) {\n return (\n <div className=\"min-h-screen bg-bg-canvas flex items-center justify-center\">\n <div className=\"text-center\">\n <Loader2 className=\"size-8 text-action-primary-bg animate-spin mx-auto mb-4\" />\n <p className=\"text-text-secondary\">\n {tr('sharedSession.validating', 'Validating share link...')}\n </p>\n </div>\n </div>\n );\n }\n\n // Error state\n if (validationError || !validation) {\n return (\n <div className=\"min-h-screen bg-bg-canvas flex items-center justify-center p-4\">\n <div className=\"text-center max-w-md\">\n <div className=\"size-16 bg-status-error-bg-subtle rounded-full flex items-center justify-center mx-auto mb-4\">\n <AlertCircle className=\"size-8 text-status-error-text\" />\n </div>\n <h2 className=\"text-xl font-semibold text-text-primary mb-2\">\n {tr('sharedSession.unableToLoad', 'Unable to Load Session')}\n </h2>\n <p className=\"text-text-secondary mb-6\">\n {validationError?.message ||\n tr('sharedSession.failedValidate', 'Failed to validate the share link')}\n </p>\n <button\n type=\"button\"\n onClick={() => window.history.back()}\n className=\"inline-flex items-center gap-2 px-4 py-2 text-sm font-medium text-text-primary bg-bg-sunken border border-border-default rounded-button hover:bg-bg-elevated hover:border-border-strong transition-colors\"\n >\n <ArrowLeft className=\"size-4\" />\n {tr('sharedSession.goBack', 'Go Back')}\n </button>\n </div>\n </div>\n );\n }\n\n // Invalid link\n if (!validation.isValid) {\n return (\n <div className=\"min-h-screen bg-bg-canvas flex items-center justify-center p-4\">\n <div className=\"text-center max-w-md\">\n <div className=\"size-16 bg-status-warning-bg-subtle rounded-full flex items-center justify-center mx-auto mb-4\">\n <AlertCircle className=\"size-8 text-status-warning-text\" />\n </div>\n <h2 className=\"text-xl font-semibold text-text-primary mb-2\">\n {tr('sharedSession.invalidExpiredLink', 'Invalid or Expired Link')}\n </h2>\n <p className=\"text-text-secondary mb-6\">\n {validation.error ||\n tr('sharedSession.linkNoLongerValid', 'This share link is no longer valid.')}\n </p>\n <button\n type=\"button\"\n onClick={() => window.history.back()}\n className=\"inline-flex items-center gap-2 px-4 py-2 text-sm font-medium text-text-primary bg-bg-sunken border border-border-default rounded-button hover:bg-bg-elevated hover:border-border-strong transition-colors\"\n >\n <ArrowLeft className=\"size-4\" />\n {tr('sharedSession.goBack', 'Go Back')}\n </button>\n </div>\n </div>\n );\n }\n\n // Password required - show password form\n if (validation.requiresPassword && !joined) {\n return (\n <div className=\"min-h-screen bg-bg-canvas flex items-center justify-center p-4\">\n <div className=\"w-full max-w-md\">\n <div className=\"bg-bg-surface border border-border-subtle rounded-card p-6 shadow-elevation-1\">\n {/* Header */}\n <div className=\"text-center mb-6\">\n <div className=\"size-12 bg-[var(--color-accent-soft)] rounded-full flex items-center justify-center mx-auto mb-4\">\n <Terminal className=\"size-6 text-action-primary-bg\" />\n </div>\n <h2 className=\"text-lg font-semibold text-text-primary\">\n {validation.sessionName || 'Shared Session'}\n </h2>\n {validation.ownerName && (\n <p className=\"text-sm text-text-secondary mt-1\">\n {tr('sharedSession.sharedBy', 'Shared by')} {validation.ownerName}\n </p>\n )}\n </div>\n\n {/* Permission badge */}\n <div className=\"flex justify-center mb-6\">\n <div\n className={`inline-flex items-center gap-1.5 px-3 py-1.5 rounded-full text-sm ${\n validation.permission === SessionSharePermission.View\n ? 'bg-bg-sunken text-text-secondary'\n : 'bg-[var(--color-accent-soft)] text-text-primary'\n }`}\n >\n {validation.permission === SessionSharePermission.View ? (\n <>\n <Eye className=\"size-4\" />\n {tr('sharedSession.viewOnly', 'View Only')}\n </>\n ) : (\n <>\n <Gamepad2 className=\"size-4\" />\n {tr('sharedSession.canControl', 'Can Control')}\n </>\n )}\n </div>\n </div>\n\n {/* Expiry info */}\n {validation.expiresAt && (\n <div className=\"flex items-center justify-center gap-2 mb-6 text-xs text-text-secondary\">\n <Clock className=\"size-3.5\" />\n <span>\n {tr('sharedSession.expires', 'Expires')}{' '}\n {new Date(validation.expiresAt).toLocaleString()}\n </span>\n </div>\n )}\n\n {/* Password form */}\n <PasswordForm\n onSubmit={(pwd) => {\n setPassword(pwd);\n handleJoinSession(pwd);\n }}\n isLoading={joining}\n error={passwordError}\n />\n </div>\n </div>\n </div>\n );\n }\n\n // Post-leave state — user explicitly left, don't show join spinner\n if (hasLeft) {\n return (\n <div className=\"min-h-screen bg-bg-canvas flex items-center justify-center p-4\">\n <div className=\"text-center max-w-md\">\n <div className=\"size-16 bg-bg-sunken rounded-full flex items-center justify-center mx-auto mb-4\">\n <LogIn className=\"size-8 text-text-secondary\" />\n </div>\n <h2 className=\"text-xl font-semibold text-text-primary mb-2\">\n {tr('sharedSession.youLeft', 'You left the session')}\n </h2>\n <p className=\"text-text-secondary mb-6\">\n {tr('sharedSession.rejoinHint', 'You can rejoin using the same share link.')}\n </p>\n <div className=\"flex items-center justify-center gap-3\">\n <button\n type=\"button\"\n onClick={() => window.history.back()}\n className=\"inline-flex items-center gap-2 px-4 py-2 text-sm font-medium text-text-primary bg-bg-sunken border border-border-default rounded-button hover:bg-bg-elevated hover:border-border-strong transition-colors\"\n >\n <ArrowLeft className=\"size-4\" />\n {tr('sharedSession.goBack', 'Go Back')}\n </button>\n <button\n type=\"button\"\n onClick={() => {\n setHasLeft(false);\n setJoinError(null);\n handleJoinSession();\n }}\n disabled={joining}\n className=\"inline-flex items-center gap-2 px-4 py-2 text-sm font-medium text-action-primary-text bg-action-primary-bg rounded-md hover:bg-action-primary-bg-hover transition-colors disabled:opacity-50\"\n >\n <LogIn className=\"size-4\" />\n {tr('sharedSession.rejoin', 'Rejoin')}\n </button>\n </div>\n </div>\n </div>\n );\n }\n\n // Joining state - show error if join failed, otherwise spinner\n if (!joined && !validation.requiresPassword) {\n if (joinError) {\n return (\n <div className=\"min-h-screen bg-bg-canvas flex items-center justify-center p-4\">\n <div className=\"text-center max-w-md\">\n <div className=\"size-16 bg-status-error-bg-subtle rounded-full flex items-center justify-center mx-auto mb-4\">\n <AlertCircle className=\"size-8 text-status-error-text\" />\n </div>\n <h2 className=\"text-xl font-semibold text-text-primary mb-2\">\n {tr('sharedSession.failedJoin', 'Failed to Join Session')}\n </h2>\n <p className=\"text-text-secondary mb-6\">{joinError}</p>\n <div className=\"flex items-center justify-center gap-3\">\n <button\n type=\"button\"\n onClick={() => window.history.back()}\n className=\"inline-flex items-center gap-2 px-4 py-2 text-sm font-medium text-text-primary bg-bg-sunken border border-border-default rounded-button hover:bg-bg-elevated hover:border-border-strong transition-colors\"\n >\n <ArrowLeft className=\"size-4\" />\n {tr('sharedSession.goBack', 'Go Back')}\n </button>\n <button\n type=\"button\"\n onClick={() => {\n setJoinError(null);\n handleJoinSession();\n }}\n disabled={joining}\n className=\"inline-flex items-center gap-2 px-4 py-2 text-sm font-medium text-action-primary-text bg-action-primary-bg rounded-md hover:bg-action-primary-bg-hover transition-colors disabled:opacity-50\"\n >\n <LogIn className=\"size-4\" />\n {tr('sharedSession.retry', 'Retry')}\n </button>\n </div>\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"min-h-screen bg-bg-canvas flex items-center justify-center\">\n <div className=\"text-center\">\n <Loader2 className=\"size-8 text-action-primary-bg animate-spin mx-auto mb-4\" />\n <p className=\"text-text-secondary\">{tr('sharedSession.joining', 'Joining session...')}</p>\n </div>\n </div>\n );\n }\n\n // Main shared session view\n return (\n <MotionPage className=\"min-h-screen bg-bg-canvas flex flex-col\">\n {/* Header */}\n <header className=\"bg-bg-surface border-b border-border-default px-4 py-3\">\n <div className=\"flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3 max-w-screen-2xl mx-auto\">\n <div className=\"flex items-center gap-4\">\n <button\n type=\"button\"\n onClick={handleLeaveSession}\n className=\"p-2 text-text-secondary hover:text-text-primary hover:bg-bg-sunken rounded-lg transition-colors\"\n title=\"Leave session\"\n aria-label=\"Leave session\"\n >\n <ArrowLeft className=\"size-5\" />\n </button>\n <div className=\"flex items-center gap-3\">\n <div className=\"p-2 bg-[var(--color-accent-soft)] rounded-lg\">\n <Terminal className=\"size-5 text-action-primary-bg\" />\n </div>\n <div>\n <h1 className=\"font-semibold text-text-primary\">\n {validation.sessionName || 'Shared Session'}\n </h1>\n {validation.ownerName && (\n <p className=\"text-xs text-text-secondary\">\n {tr('sharedSession.sharedBy', 'Shared by')} {validation.ownerName}\n </p>\n )}\n </div>\n </div>\n </div>\n\n {/* Permission and collaborator count */}\n <div className=\"flex items-center gap-3\">\n <div\n className={`inline-flex items-center gap-1.5 px-2.5 py-1 rounded-full text-xs font-medium ${\n permission === SessionSharePermission.View\n ? 'bg-bg-sunken text-text-secondary'\n : 'bg-[var(--color-accent-soft)] text-text-primary'\n }`}\n >\n {permission === SessionSharePermission.View ? (\n <>\n <Eye className=\"size-3.5\" />\n {tr('sharedSession.viewOnly', 'View Only')}\n </>\n ) : (\n <>\n <Gamepad2 className=\"size-3.5\" />\n {tr('sharedSession.interactive', 'Interactive')}\n </>\n )}\n </div>\n <div className=\"flex items-center gap-1.5 px-2.5 py-1 bg-bg-sunken rounded-full text-xs text-text-secondary\">\n <Users className=\"size-3.5\" />\n <span>{collaborators.length}</span>\n </div>\n </div>\n </div>\n </header>\n\n {/* Main content */}\n <div className=\"flex-1 flex\">\n {/* Terminal area */}\n <div className=\"flex-1 flex flex-col\">\n <SharedTerminalPanel\n isShared={true}\n collaborators={collaborators}\n currentUserId={currentUserId}\n permission={permission}\n onRequestControl={handleRequestControl}\n onReleaseControl={handleReleaseControl}\n isRequestingControl={requestingControl}\n isReleasingControl={releasingControl}\n className=\"flex-1\"\n >\n {/* Terminal iframe - in production this would be the ttyd URL */}\n <div className=\"w-full h-full bg-bg-inverse text-text-inverse flex items-center justify-center\">\n {terminalUrl ? (\n <iframe\n src={terminalUrl}\n title=\"Shared Terminal\"\n className=\"w-full h-full border-0\"\n allow=\"clipboard-read; clipboard-write\"\n sandbox=\"allow-scripts allow-same-origin allow-forms\"\n />\n ) : (\n <div className=\"text-center\">\n <Terminal className=\"size-12 text-text-secondary mx-auto mb-4\" />\n <p className=\"text-text-tertiary\">\n {tr('sharedSession.terminalLoading', 'Terminal loading...')}\n </p>\n <p className=\"text-text-secondary text-sm mt-1\">Session ID: {sessionId}</p>\n </div>\n )}\n </div>\n </SharedTerminalPanel>\n </div>\n\n {/* Sidebar - Collaborators */}\n <aside className=\"w-72 bg-bg-surface border-l border-border-default p-4 hidden lg:block\">\n <CollaboratorsList\n collaborators={collaborators}\n currentUserId={currentUserId}\n onRequestControl={\n permission === SessionSharePermission.Interact ? handleRequestControl : undefined\n }\n isRequestingControl={requestingControl}\n />\n\n {/* Session info */}\n <div className=\"mt-6 pt-6 border-t border-border-default\">\n <h4 className=\"text-xs font-medium text-text-secondary uppercase tracking-wide mb-3\">\n {tr('sharedSession.sessionInfo', 'Session Info')}\n </h4>\n <div className=\"space-y-2 text-sm\">\n {validation.expiresAt && (\n <div className=\"flex items-center justify-between\">\n <span className=\"text-text-secondary\">\n {tr('sharedSession.expires', 'Expires')}\n </span>\n <span className=\"text-text-primary\">\n {new Date(validation.expiresAt).toLocaleTimeString()}\n </span>\n </div>\n )}\n <div className=\"flex items-center justify-between\">\n <span className=\"text-text-secondary\">\n {tr('sharedSession.yourRole', 'Your role')}\n </span>\n <span className=\"text-text-primary capitalize\">\n {currentCollaborator?.role?.toLowerCase() || tr('sharedSession.viewer', 'Viewer')}\n </span>\n </div>\n <div className=\"flex items-center justify-between\">\n <span className=\"text-text-secondary\">{tr('sharedSession.status', 'Status')}</span>\n <span className=\"text-status-success-text\">\n {tr('sharedSession.connected', 'Connected')}\n </span>\n </div>\n </div>\n </div>\n </aside>\n </div>\n </MotionPage>\n );\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"SharedVibeDeckPage.js","names":[],"sources":["../../src/pages/SharedVibeDeckPage.tsx"],"sourcesContent":["import { useState, useCallback } from 'react';\nimport { useParams, useSearchParams } from 'react-router';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { Loader2, AlertCircle, Lock, Play, Zap, Eye } from 'lucide-react';\nimport { MotionPage } from '@burdenoff/fe-libs/shared/motion';\nimport { VibeDeckGrid } from '@/components/vibedeck/VibeDeckGrid';\nimport {\n useValidateVibeDeckShareLinkQuery,\n useGetSharedVibeDeckQuery,\n useExecuteSharedVibeDeckButtonMutation,\n} from '@/generated/wspace-operations';\n\n/**\n * Password entry form for protected share links\n */\nfunction PasswordForm({\n onSubmit,\n isLoading,\n error,\n}: {\n onSubmit: (password: string) => void;\n isLoading: boolean;\n error?: string | null;\n}) {\n const [password, setPassword] = useState('');\n\n const handleSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n if (password.trim()) onSubmit(password);\n };\n\n return (\n <form onSubmit={handleSubmit} className=\"space-y-4 w-full max-w-sm\">\n <div>\n <label\n htmlFor=\"sharedvibedeckpage-57\"\n className=\"block text-sm font-medium text-text-primary mb-2\"\n >\n This VibeDeck is password protected\n </label>\n <div className=\"relative\">\n <Lock className=\"absolute left-3 top-1/2 -translate-y-1/2 size-4 text-text-secondary\" />\n <input\n id=\"sharedvibedeckpage-57\"\n aria-label=\"Enter password\"\n type=\"password\"\n value={password}\n onChange={(e) => setPassword(e.target.value)}\n placeholder=\"Enter password\"\n className=\"w-full pl-10 pr-4 py-2 text-sm bg-bg-sunken border border-border-default rounded-md text-text-primary placeholder:text-text-placeholder focus:outline-none focus:ring-2 focus:ring-action-primary-bg\"\n />\n </div>\n </div>\n {error && (\n <div className=\"flex items-center gap-2 p-3 bg-status-error-bg-subtle border border-status-error-border rounded-card\">\n <AlertCircle className=\"size-4 text-status-error-text\" />\n <span className=\"text-sm text-status-error-text\">{error}</span>\n </div>\n )}\n <button\n type=\"submit\"\n disabled={isLoading || !password.trim()}\n className=\"w-full px-4 py-2 text-sm font-medium text-action-primary-text bg-action-primary-bg rounded-md hover:bg-action-primary-bg-hover transition-colors disabled:opacity-50\"\n >\n {isLoading ? 'Verifying...' : 'Access VibeDeck'}\n </button>\n </form>\n );\n}\n\n/**\n * Error display component\n */\nfunction ShareError({ message }: { message: string }) {\n return (\n <div className=\"flex flex-col items-center justify-center min-h-[60vh] gap-4\">\n <div className=\"size-16 rounded-full bg-status-error-bg-subtle flex items-center justify-center\">\n <AlertCircle size={32} className=\"text-status-error-text\" />\n </div>\n <div className=\"text-center\">\n <h2 className=\"text-lg font-semibold text-text-primary\">Access Denied</h2>\n <p className=\"text-sm text-text-secondary mt-1\">{message}</p>\n </div>\n </div>\n );\n}\n\n/**\n * SharedVibeDeckPage — standalone page for viewing/executing a shared VibeDeck via token.\n * Supports:\n * - /vibecontrols/deck/:token — full page with header\n * - ?embed=true — minimal iframe mode (no header/chrome)\n */\nexport function SharedVibeDeckPage() {\n const { t } = useI18n();\n const tr = useCallback(\n (key: string, fallback: string): string => {\n const value = t(key);\n return value === key ? fallback : value;\n },\n [t]\n );\n const { token } = useParams<{ token: string }>();\n const [searchParams] = useSearchParams();\n const isEmbed = searchParams.get('embed') === 'true';\n const transparentBg = searchParams.get('bg') === 'transparent';\n\n const [password, setPassword] = useState<string | null>(null);\n const [passwordError, setPasswordError] = useState<string | null>(null);\n const [executingButtonId, setExecutingButtonId] = useState<string | null>(null);\n\n // Step 1: Validate the share link\n const { data: validationData, loading: validating } = useValidateVibeDeckShareLinkQuery({\n variables: { token: token || '' },\n skip: !token,\n });\n\n const validation = validationData?.validateVibeDeckShareLink;\n const needsPassword = validation?.isValid && validation.requiresPassword && !password;\n\n // Step 2: Fetch the deck data (once validated and password provided if needed)\n const shouldFetchDeck =\n validation?.isValid && (!validation.requiresPassword || password !== null);\n\n const {\n data: deckData,\n loading: deckLoading,\n error: deckError,\n } = useGetSharedVibeDeckQuery({\n variables: { token: token || '', password },\n skip: !shouldFetchDeck,\n });\n\n const sharedDeck = deckData?.sharedVibeDeck;\n const canExecute = sharedDeck?.permission === 'EXECUTE';\n\n // Execute mutation for shared buttons\n const [executeSharedButton] = useExecuteSharedVibeDeckButtonMutation();\n\n const handlePasswordSubmit = useCallback((pw: string) => {\n setPasswordError(null);\n setPassword(pw);\n }, []);\n\n const handleExecuteButton = useCallback(\n async (buttonId: string) => {\n if (!token || !canExecute) return;\n setExecutingButtonId(buttonId);\n try {\n await executeSharedButton({\n variables: { token, buttonId, password },\n });\n } catch {\n // Silent — execution status is visible from the button\n } finally {\n setExecutingButtonId(null);\n }\n },\n [token, password, canExecute, executeSharedButton]\n );\n\n // Handle password errors from the deck query\n const passwordRequired =\n deckError?.message?.includes('Password is required') ||\n deckError?.message?.includes('Incorrect password');\n\n if (passwordRequired && password) {\n // Reset and show password form with error\n if (!passwordError) {\n setPasswordError('Incorrect password. Please try again.');\n setPassword(null);\n }\n }\n\n // Loading state\n if (validating) {\n return (\n <div\n className={`flex items-center justify-center min-h-[60vh] ${transparentBg ? 'bg-transparent' : ''}`}\n >\n <Loader2 size={24} className=\"animate-spin text-text-tertiary\" />\n </div>\n );\n }\n\n // Invalid token\n if (!validation?.isValid) {\n if (isEmbed) {\n return (\n <div\n className={`flex items-center justify-center p-8 ${transparentBg ? 'bg-transparent' : ''}`}\n >\n <p className=\"text-sm text-text-secondary\">\n {validation?.error || tr('sharedVibeDeck.invalidLink', 'Invalid share link')}\n </p>\n </div>\n );\n }\n return (\n <MotionPage className=\"p-4 sm:p-6\">\n <ShareError\n message={\n validation?.error ||\n tr('sharedVibeDeck.linkInvalidOrExpired', 'This share link is invalid or has expired.')\n }\n />\n </MotionPage>\n );\n }\n\n // Password required\n if (needsPassword || (passwordRequired && !password)) {\n if (isEmbed) {\n return (\n <div\n className={`flex items-center justify-center p-8 ${transparentBg ? 'bg-transparent' : ''}`}\n >\n <p className=\"text-sm text-text-secondary\">\n {tr('sharedVibeDeck.requiresPassword', 'This VibeDeck requires a password')}\n </p>\n </div>\n );\n }\n return (\n <MotionPage className=\"p-4 sm:p-6\">\n <div className=\"flex flex-col items-center justify-center min-h-[60vh] gap-6\">\n <div className=\"size-16 rounded-full bg-[var(--color-accent-soft)] flex items-center justify-center\">\n <Lock size={28} className=\"text-action-primary-bg\" />\n </div>\n <div className=\"text-center\">\n <h2 className=\"text-lg font-semibold text-text-primary\">\n {validation.vibeDeckName || 'Shared VibeDeck'}\n </h2>\n <p className=\"text-sm text-text-secondary mt-1\">\n {tr('sharedVibeDeck.enterPasswordHint', 'Enter the password to continue')}\n </p>\n </div>\n <PasswordForm\n onSubmit={handlePasswordSubmit}\n isLoading={deckLoading}\n error={passwordError}\n />\n </div>\n </MotionPage>\n );\n }\n\n // Loading deck\n if (deckLoading || !sharedDeck) {\n return (\n <div\n className={`flex items-center justify-center min-h-[60vh] ${transparentBg ? 'bg-transparent' : ''}`}\n >\n <Loader2 size={24} className=\"animate-spin text-text-tertiary\" />\n </div>\n );\n }\n\n // Map shared buttons to the format expected by VibeDeckGrid\n const gridButtons = sharedDeck.buttons.map((b: Record<string, unknown>) => ({\n id: b.id,\n label: b.label,\n icon: b.icon || null,\n color: b.color || null,\n command: null,\n actionType: b.actionType || 'COMMAND',\n category: b.category || null,\n confirmationRequired: b.confirmationRequired,\n keyboardShortcut: null,\n targetAgentId: null,\n scriptInterpreter: null,\n webhookUrl: null,\n webhookMethod: null,\n row: b.row,\n column: b.column,\n rowSpan: b.rowSpan,\n colSpan: b.colSpan,\n }));\n\n // Embed mode: just the grid, no chrome\n if (isEmbed) {\n return (\n <div className={`p-3 ${transparentBg ? 'bg-transparent' : ''}`}>\n <VibeDeckGrid\n gridColumns={sharedDeck.gridColumns}\n gridRows={sharedDeck.gridRows}\n buttons={gridButtons}\n onExecuteButton={handleExecuteButton}\n onEditButton={() => {}}\n onDeleteButton={() => {}}\n onDropButton={() => {}}\n onAddButton={() => {}}\n executingButtonId={executingButtonId}\n canCreate={false}\n canUpdate={false}\n canDelete={false}\n canExecute={canExecute}\n />\n </div>\n );\n }\n\n // Full page mode\n return (\n <MotionPage className=\"p-4 sm:p-6 space-y-6\">\n {/* Header */}\n <div className=\"flex items-center justify-between\">\n <div>\n <div className=\"flex items-center gap-3\">\n <div className=\"size-10 rounded-xl bg-[var(--color-accent-soft)] flex items-center justify-center\">\n <Zap size={20} className=\"text-action-primary-bg\" />\n </div>\n <div>\n <h1 className=\"text-xl font-semibold text-text-primary\">{sharedDeck.name}</h1>\n {sharedDeck.description && (\n <p className=\"text-sm text-text-secondary mt-0.5\">{sharedDeck.description}</p>\n )}\n </div>\n </div>\n </div>\n <div className=\"flex items-center gap-2\">\n <span\n className={`inline-flex items-center gap-1.5 px-3 py-1.5 rounded-full text-xs font-medium ${\n canExecute\n ? 'bg-status-success-bg-subtle text-status-success-text border border-status-success-border'\n : 'bg-bg-sunken text-text-secondary border border-border-default'\n }`}\n >\n {canExecute ? <Play size={12} /> : <Eye size={12} />}\n {canExecute\n ? tr('sharedVibeDeck.canExecute', 'Can execute')\n : tr('sharedVibeDeck.viewOnly', 'View only')}\n </span>\n </div>\n </div>\n\n {/* Grid */}\n <VibeDeckGrid\n gridColumns={sharedDeck.gridColumns}\n gridRows={sharedDeck.gridRows}\n buttons={gridButtons}\n onExecuteButton={handleExecuteButton}\n onEditButton={() => {}}\n onDeleteButton={() => {}}\n onDropButton={() => {}}\n onAddButton={() => {}}\n executingButtonId={executingButtonId}\n canCreate={false}\n canUpdate={false}\n canDelete={false}\n canExecute={canExecute}\n />\n\n {/* Footer branding */}\n <div className=\"text-center pt-4\">\n <p className=\"text-xs text-text-tertiary\">\n {tr('sharedVibeDeck.poweredBy', 'Powered by')}{' '}\n <span className=\"font-medium text-text-secondary\">VibeControls</span>\n </p>\n </div>\n </MotionPage>\n );\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"TargetDetailsPage.js","names":[],"sources":["../../src/pages/TargetDetailsPage.tsx"],"sourcesContent":["import { useMemo } from 'react';\nimport { useParams, Link } from 'react-router';\nimport { MotionPage } from '@burdenoff/fe-libs/shared/motion';\nimport {\n ArrowLeft,\n Server,\n CircleCheck,\n CircleX,\n Cpu,\n ExternalLink,\n Activity,\n Tag,\n} from 'lucide-react';\nimport { Button, PagePurpose, GlassCard } from '@burdenoff/fe-libs/ui';\nimport { PageHeader, Card, StatusBadge, EmptyState, ErrorState } from '@/components/shared';\nimport { EntityTagPicker } from '@/components/shared/EntityTagPicker';\nimport { PageSkeleton } from '@/components/shared/PageSkeleton';\nimport { EntityShareButton } from '@/components/sharing';\nimport { getAgentStatus } from '@/components/agents/agentStatus';\nimport { useGetTargetQuery } from '@/generated/wspace-operations';\nimport type { GetTargetQuery } from '@/generated/wspace-operations';\nimport { useVibeNavigate } from '@/providers/VibeControlsProvider';\nimport { AccessDenied } from '@burdenoff/fe-libs/shared/components';\nimport { usePermissions } from '@burdenoff/fe-libs/shared/providers/shell';\nimport { VIBE_PERMISSIONS } from '@/constants/permissions';\nimport { useTr } from '@/shared/hooks/useTr';\n\ntype TargetType = NonNullable<GetTargetQuery['target']>;\ntype AgentSummary = TargetType['agents'][number];\ntype ConnectionSummary = TargetType['inboundConnections'][number];\n\n/**\n * TargetDetailsPage — `/vibecontrols/targets/:id`\n *\n * Mirrors AgentDetailsPage shell. Three sections:\n * 1. Identity card (name, type, status, host, last updated)\n * 2. Agents on this target (table with link to AgentDetailsPage)\n * 3. Inbound agent connections\n *\n * Reuses the existing `GetTarget` query — no schema changes needed; the\n * `TargetFields` fragment already includes the agent list and metadata.\n */\nexport function TargetDetailsPage() {\n const { id } = useParams<{ id: string }>();\n const navigate = useVibeNavigate();\n const tr = useTr();\n // Page-level read gate (the gateway enforces `target:read` on GetTarget).\n const { hasPermission, isLoading: permissionsLoading } = usePermissions();\n const canRead = hasPermission(VIBE_PERMISSIONS.TARGET_READ);\n\n const { data, loading, error, refetch } = useGetTargetQuery({\n variables: { id: id ?? '' },\n skip: !id || permissionsLoading || !canRead,\n fetchPolicy: 'cache-and-network',\n });\n\n const target = data?.target ?? null;\n const agents = useMemo(() => target?.agents ?? [], [target]);\n const connections = useMemo(() => target?.inboundConnections ?? [], [target]);\n\n if (!id) {\n return (\n <ErrorState title={tr('targetDetails.missingId', 'Target id missing from URL')} message=\"\" />\n );\n }\n\n if (permissionsLoading) {\n return (\n <MotionPage>\n <PageSkeleton variant=\"detail\" />\n </MotionPage>\n );\n }\n\n if (!canRead) {\n return (\n <AccessDenied\n title={tr('targetDetails.denied.title', 'Access Denied')}\n description={tr(\n 'targetDetails.denied.description',\n 'You do not have permission to view this target.'\n )}\n />\n );\n }\n\n if (loading && !data) {\n return (\n <MotionPage>\n <PageSkeleton variant=\"detail\" />\n </MotionPage>\n );\n }\n\n if (error && !target) {\n return (\n <ErrorState\n title={tr('targetDetails.errorTitle', 'Failed to load target')}\n message={error.message}\n onRetry={() => void refetch()}\n />\n );\n }\n\n if (!target) {\n return (\n <EmptyState\n icon={<Server className=\"size-12 text-text-muted\" aria-hidden=\"true\" />}\n title={tr('targetDetails.notFoundTitle', 'Target not found')}\n description={tr(\n 'targetDetails.notFoundBody',\n 'The target you requested may have been deleted or is in a different workspace.'\n )}\n />\n );\n }\n\n const lastUpdatedAt = target.updatedAt\n ? new Date(target.updatedAt as string).toLocaleString()\n : '—';\n\n return (\n <MotionPage className=\"space-y-6 px-6 lg:px-8 py-6 bg-bg-canvas min-h-full\">\n <PageHeader\n title={target.name}\n description={`${target.type} · ${target.host ?? 'no host'}`}\n breadcrumb={[\n { label: tr('breadcrumbs.targetsAgents', 'Targets & Agents'), path: '../agents' },\n { label: tr('breadcrumbs.targets', 'Targets'), path: '../agents?tab=targets' },\n { label: target.name },\n ]}\n actions={\n <div className=\"flex flex-wrap items-center gap-2\">\n <EntityShareButton\n entity=\"target\"\n resource={{ id: target.id, name: target.name }}\n label={tr('targetDetails.share', 'Share')}\n variant=\"button\"\n />\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n onClick={() => navigate('/agents?tab=targets')}\n className=\"max-md:min-h-11\"\n >\n <ArrowLeft className=\"size-3.5\" aria-hidden=\"true\" />\n {tr('common.back', 'Back')}\n </Button>\n </div>\n }\n />\n\n <PagePurpose icon={<Server className=\"size-4\" />}>\n {tr(\n 'targetDetails.purpose',\n 'This page describes one target — a specific machine your agents can reach and run work on. Review its connection details and status, see which agents are attached, share it with teammates, and confirm it is online before you launch sessions against it. It is the source of truth for \"where does this work actually run\".'\n )}\n </PagePurpose>\n\n {/* Identity — the primary, emphasised section for this page. */}\n <GlassCard treatment=\"glass\" glow>\n <div className=\"p-4 border-b border-border-subtle flex items-center gap-2\">\n <Server className=\"size-5\" aria-hidden=\"true\" />\n <h3 className=\"font-semibold text-text-primary\">\n {tr('targetDetails.identity', 'Identity')}\n </h3>\n </div>\n <div className=\"p-4 grid grid-cols-1 sm:grid-cols-2 gap-4 text-sm\">\n <div>\n <p className=\"text-text-muted\">{tr('targetDetails.name', 'Name')}</p>\n <p className=\"text-text-primary font-medium break-words\">{target.name}</p>\n </div>\n <div>\n <p className=\"text-text-muted\">{tr('targetDetails.type', 'Type')}</p>\n <p className=\"text-text-primary font-medium\">{target.type}</p>\n </div>\n <div>\n <p className=\"text-text-muted\">{tr('targetDetails.status', 'Status')}</p>\n <StatusBadge status={target.status} />\n </div>\n <div>\n <p className=\"text-text-muted\">{tr('targetDetails.host', 'Host')}</p>\n <p className=\"text-text-primary font-mono text-xs break-words\">{target.host ?? '—'}</p>\n </div>\n {target.username && (\n <div>\n <p className=\"text-text-muted\">{tr('targetDetails.username', 'Username')}</p>\n <p className=\"text-text-primary font-mono text-xs break-words\">{target.username}</p>\n </div>\n )}\n {target.port != null && (\n <div>\n <p className=\"text-text-muted\">{tr('targetDetails.port', 'Port')}</p>\n <p className=\"text-text-primary font-mono text-xs\">{target.port}</p>\n </div>\n )}\n <div>\n <p className=\"text-text-muted\">{tr('targetDetails.updatedAt', 'Last updated')}</p>\n <p className=\"text-text-primary text-xs\">{lastUpdatedAt}</p>\n </div>\n {target.tags && target.tags.length > 0 && (\n <div className=\"sm:col-span-2\">\n {/* Legacy free-text labels stored on the target row — titled\n \"Labels\" to disambiguate from the workspace-level tag\n entities managed in the Tags card below. */}\n <p className=\"text-text-muted mb-1\">{tr('targetDetails.labels', 'Labels')}</p>\n <div className=\"flex flex-wrap gap-1\">\n {target.tags.map((tag: string) => (\n <span\n key={tag}\n className=\"px-2 py-0.5 text-xs rounded-full bg-bg-sunken border border-border-subtle\"\n >\n {tag}\n </span>\n ))}\n </div>\n </div>\n )}\n </div>\n </GlassCard>\n\n {/* Tags */}\n <Card>\n <div className=\"p-4 border-b border-border-subtle flex items-center gap-2\">\n <Tag className=\"size-5\" aria-hidden=\"true\" />\n <h3 className=\"font-semibold text-text-primary\">{tr('targetDetails.tags', 'Tags')}</h3>\n </div>\n <div className=\"p-4\">\n <EntityTagPicker entityType=\"VIBECONTROLS_TARGET\" entityId={target.id} />\n </div>\n </Card>\n\n {/* Agents on this target */}\n <Card>\n <div className=\"p-4 border-b border-border-subtle flex flex-wrap items-center justify-between gap-2\">\n <div className=\"flex items-center gap-2\">\n <Cpu className=\"size-5\" aria-hidden=\"true\" />\n <h3 className=\"font-semibold text-text-primary\">\n {tr('targetDetails.agents', 'Agents on this target')} ({agents.length})\n </h3>\n </div>\n <Link\n to=\"../agents?tab=agents\"\n className=\"text-sm text-text-link hover:text-text-linkHover hover:underline flex items-center gap-1 rounded-button focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-focus\"\n >\n {tr('targetDetails.allAgents', 'All agents')}\n <ExternalLink className=\"size-3\" aria-hidden=\"true\" />\n </Link>\n </div>\n {agents.length === 0 ? (\n <div className=\"p-6\">\n <EmptyState\n icon={<Cpu className=\"size-10 text-text-muted\" aria-hidden=\"true\" />}\n title={tr('targetDetails.noAgents', 'No agents on this target yet')}\n description={tr(\n 'targetDetails.noAgentsBody',\n 'Use the Agents tab to onboard an agent and select this target during setup.'\n )}\n />\n </div>\n ) : (\n <div className=\"p-4 space-y-2\">\n {agents.map((agent: AgentSummary) => {\n const status = getAgentStatus(agent);\n return (\n <Link\n key={agent.id}\n to={`../agents/${agent.id}`}\n className=\"flex items-center justify-between gap-3 p-3 rounded-card border border-border-subtle hover:bg-bg-sunken/40 transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-focus\"\n >\n <div className=\"flex items-center gap-3 min-w-0\">\n <div\n className=\"size-8 rounded-button bg-bg-sunken flex items-center justify-center flex-shrink-0\"\n aria-hidden=\"true\"\n >\n {status === 'ACTIVE' ? (\n <CircleCheck className=\"size-4 text-status-success-text\" />\n ) : (\n <CircleX className=\"size-4 text-text-muted\" />\n )}\n </div>\n <div className=\"min-w-0\">\n <p className=\"text-sm font-medium text-text-primary truncate\">{agent.name}</p>\n <p className=\"text-xs text-text-muted truncate\">\n v{agent.version}\n {agent.tunnelUrl ? ` · ${agent.tunnelUrl}` : ''}\n </p>\n </div>\n </div>\n <div className=\"flex items-center gap-2 flex-shrink-0\">\n <StatusBadge status={status} />\n <ExternalLink className=\"size-3.5 text-text-muted\" aria-hidden=\"true\" />\n </div>\n </Link>\n );\n })}\n </div>\n )}\n </Card>\n\n {/* Inbound connections */}\n <Card>\n <div className=\"p-4 border-b border-border-subtle flex items-center gap-2\">\n <Activity className=\"size-5\" aria-hidden=\"true\" />\n <h3 className=\"font-semibold text-text-primary\">\n {tr('targetDetails.connections', 'Inbound connections')} ({connections.length})\n </h3>\n </div>\n {connections.length === 0 ? (\n <div className=\"p-6\">\n <EmptyState\n icon={<Activity className=\"size-10 text-text-muted\" aria-hidden=\"true\" />}\n title={tr('targetDetails.noConnections', 'No inbound connections')}\n description={tr(\n 'targetDetails.noConnectionsBody',\n 'No agents are currently connected to this target.'\n )}\n />\n </div>\n ) : (\n <div className=\"p-4 space-y-2\">\n {connections.map((conn: ConnectionSummary) => (\n <div\n key={conn.id}\n className=\"flex flex-wrap items-center justify-between gap-3 p-3 rounded-card border border-border-subtle\"\n >\n <div className=\"min-w-0\">\n <p className=\"text-sm font-medium text-text-primary truncate\">\n {conn.label || `${conn.protocol} connection`}\n </p>\n <p className=\"text-xs text-text-muted truncate\">\n {tr('targetDetails.from', 'From')}{' '}\n <Link\n to={`../agents/${conn.sourceAgent.id}`}\n className=\"text-text-link hover:text-text-linkHover hover:underline rounded-button focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-focus\"\n >\n {conn.sourceAgent.name}\n </Link>{' '}\n · {conn.protocol} · {conn.status}\n </p>\n </div>\n <StatusBadge status={conn.status} />\n </div>\n ))}\n </div>\n )}\n </Card>\n </MotionPage>\n );\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"TargetsPage.js","names":[],"sources":["../../src/pages/TargetsPage.tsx"],"sourcesContent":["/**\n * Targets Page — Manage all targets (servers, workstations, environments).\n *\n * Targets are the first-class entity. Each target can have agents installed,\n * and supports two access types: Direct and SSH.\n */\n\nimport { useState, useMemo, useCallback, useEffect, useId } from 'react';\nimport { usePermissions } from '@burdenoff/fe-libs/shared/providers/shell';\nimport { PermissionButton } from '@burdenoff/fe-libs/shared/components';\nimport { VIBE_PERMISSIONS } from '../constants/permissions';\nimport { isNative, nativeNotify } from '../utils/nativeBridge';\nimport {\n Plus,\n RefreshCw,\n Trash2,\n Server,\n Grid,\n List,\n CheckCircle,\n XCircle,\n Loader2,\n Check,\n Pencil,\n CheckSquare,\n XSquare,\n} from 'lucide-react';\nimport {\n Button,\n Checkbox,\n Input,\n ResponsiveDialog,\n ResponsiveDialogContent,\n ResponsiveDialogDescription,\n ResponsiveDialogFooter,\n ResponsiveDialogHeader,\n ResponsiveDialogTitle,\n PagePurpose,\n} from '@burdenoff/fe-libs/ui';\nimport {\n PageHeader,\n SearchInput,\n FilterDropdown,\n EmptyState,\n LoadingState,\n ErrorState,\n ConfirmDialog,\n AgentSetupBanner,\n SearchableSelect,\n GetHelpButton,\n ActionMenu,\n} from '@/components/shared';\nimport type { ActionMenuItem } from '@/components/shared';\nimport { TargetCard } from '@/components/targets';\nimport type { TargetCardTarget } from '@/components/targets';\nimport { EntityTagPicker } from '@/components/shared/EntityTagPicker';\nimport { PageSkeleton } from '@/components/shared/PageSkeleton';\nimport { useDraftEntityTags } from '@/hooks/useDraftEntityTags';\nimport { MotionPage, MotionList, MotionItem } from '@burdenoff/fe-libs/shared/motion';\nimport { AnimatePresence } from 'framer-motion';\nimport { useVibeControls, useVibeNavigate } from '@/providers/VibeControlsProvider';\nimport { useCachedInitialData } from '@/hooks/useCachedInitialData';\nimport { useSearchParams } from 'react-router';\nimport { useTr } from '@/shared/hooks/useTr';\nimport { useField } from '@/shared/hooks/useField';\nimport { notify } from '@/lib/toast';\nimport {\n useListTargetsQuery,\n useCreateTargetMutation,\n useUpdateTargetMutation,\n useTestTargetMutation,\n useStartTerminalMutation,\n useDeleteTargetMutation,\n useInstallAgentOnTargetMutation,\n useUninstallAgentFromTargetMutation,\n useGetInstallAgentJobStatusLazyQuery,\n} from '@/generated/wspace-operations';\nimport {\n getQuotaDialogContent,\n markQuotaHandledLocally,\n isQuotaExhaustedError,\n type QuotaKind,\n} from '@/utils/quotaUtils';\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\ntype TargetStatus = 'connected' | 'disconnected' | 'unknown';\n\ntype TargetKind = 'DIRECT' | 'SSH';\n\ninterface SshTarget {\n id: string;\n type: TargetKind;\n name: string;\n label: string | null;\n host: string | null;\n port: number | null;\n username: string | null;\n status: TargetStatus;\n connectionId: string | null;\n tags: string[];\n metadata: Record<string, unknown> | null;\n createdAt: string;\n agents: Array<{ id: string; name: string; version: string; isActive: boolean }>;\n}\n\ninterface AgentOption {\n id: string;\n name: string;\n isActive: boolean;\n tunnelUrl: string | null;\n agentApiKey: string | null;\n}\n\ninterface InstallJob {\n id: string;\n status: 'pending' | 'running' | 'completed' | 'failed';\n steps: Array<{ name: string; status: string; message?: string }>;\n currentStep: number;\n result?: { agentUrl?: string; backendAgentId?: string };\n error?: string;\n}\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nfunction mapStatus(s: string): TargetStatus {\n if (s === 'connected') return 'connected';\n if (s === 'disconnected') return 'disconnected';\n return 'unknown';\n}\n\nconst stepLabels: Record<string, string> = {\n connect: 'Connecting to server',\n detect_os: 'Detecting OS',\n install_bun: 'Installing Bun runtime',\n install_agent: 'Installing VibeControls Agent',\n configure: 'Configuring agent',\n start: 'Starting agent',\n verify: 'Verifying health',\n retrieve: 'Retrieving agent details',\n register: 'Registering with backend',\n};\n\ntype ViewMode = 'grid' | 'list';\n\nconst statusConfig: Record<TargetStatus, { label: string }> = {\n connected: { label: 'Connected' },\n disconnected: { label: 'Disconnected' },\n unknown: { label: 'Unknown' },\n};\n\nconst typeBadgeClass: Record<TargetKind, string> = {\n DIRECT: 'bg-bg-sunken text-text-secondary border border-border-default',\n SSH: 'bg-bg-sunken text-text-secondary border border-border-default',\n};\n\nconst targetStatusBadgeClass: Record<TargetStatus, string> = {\n connected: 'bg-status-success-bg-subtle text-status-success-text',\n disconnected: 'bg-status-error-bg-subtle text-status-error-text',\n unknown: 'bg-bg-sunken text-text-secondary',\n};\n\nfunction isAgentInstalled(target: SshTarget): boolean {\n return target.agents.length > 0;\n}\n\n// ---------------------------------------------------------------------------\n// Form field helpers (accessible label/input/hint wiring via useField)\n// ---------------------------------------------------------------------------\n\ninterface TextFieldProps {\n label: string;\n value: string | number;\n onChange: (value: string) => void;\n type?: 'text' | 'password' | 'number';\n placeholder?: string;\n hint?: string;\n requiredField?: boolean;\n autoComplete?: string;\n}\n\nfunction TextField({\n label,\n value,\n onChange,\n type = 'text',\n placeholder,\n hint,\n requiredField = false,\n autoComplete,\n}: TextFieldProps) {\n const field = useField({ hint: hint ?? null });\n return (\n <div>\n <label htmlFor={field.id} className=\"mb-1.5 block text-sm font-medium text-text-primary\">\n {label}\n </label>\n <Input\n {...field.inputProps}\n type={type}\n value={value}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => onChange(e.target.value)}\n placeholder={placeholder}\n aria-required={requiredField || undefined}\n autoComplete={autoComplete}\n className=\"text-base md:text-sm\"\n />\n {hint ? (\n <p id={field.hintId} className=\"mt-1.5 text-xs text-text-muted\">\n {hint}\n </p>\n ) : null}\n </div>\n );\n}\n\ninterface AuthMethodPickerProps {\n legend: string;\n name: string;\n value: 'password' | 'key';\n onChange: (value: 'password' | 'key') => void;\n passwordLabel: string;\n keyLabel: string;\n hint?: string;\n}\n\nfunction AuthMethodPicker({\n legend,\n name,\n value,\n onChange,\n passwordLabel,\n keyLabel,\n hint,\n}: AuthMethodPickerProps) {\n return (\n <fieldset>\n <legend className=\"text-sm font-medium text-text-primary\">{legend}</legend>\n <div className=\"mt-1.5 flex flex-wrap gap-x-4 gap-y-2\">\n <label className=\"flex min-h-9 cursor-pointer items-center gap-2 text-sm text-text-primary\">\n <input\n type=\"radio\"\n name={name}\n checked={value === 'password'}\n onChange={() => onChange('password')}\n />\n {passwordLabel}\n </label>\n <label className=\"flex min-h-9 cursor-pointer items-center gap-2 text-sm text-text-primary\">\n <input\n type=\"radio\"\n name={name}\n checked={value === 'key'}\n onChange={() => onChange('key')}\n />\n {keyLabel}\n </label>\n </div>\n {hint ? <p className=\"mt-1 text-xs text-text-muted\">{hint}</p> : null}\n </fieldset>\n );\n}\n\n// ---------------------------------------------------------------------------\n// Targets Page\n// ---------------------------------------------------------------------------\n\nexport function TargetsPage() {\n const tr = useTr();\n const { workspaceId } = useVibeControls();\n const navigate = useVibeNavigate();\n const { hasPermission, isLoading: permissionsLoading } = usePermissions();\n const [searchParams] = useSearchParams();\n const selectedTargetId = searchParams.get('selectedTargetId');\n const baseId = useId();\n\n // UI state\n const [searchQuery, setSearchQuery] = useState('');\n const [agentFilter, setAgentFilter] = useState<string | null>(null);\n const [typeFilter, setTypeFilter] = useState('all');\n const [statusFilter, setStatusFilter] = useState('all');\n const [viewMode, setViewMode] = useState<ViewMode>('grid');\n const [showAddForm, setShowAddForm] = useState(false);\n const [deleteTargetId, setDeleteTargetId] = useState<string | null>(null);\n const [bulkDeleteOpen, setBulkDeleteOpen] = useState(false);\n const [selectedIds, setSelectedIds] = useState<Set<string>>(new Set());\n // Per-kind so the dialog labels switch between \"Target Quota Reached\"\n // (create flows) and \"Session/Environment Quota Reached\" (Open Terminal),\n // both of which set this state on the same page.\n const [quotaExhaustedKind, setQuotaExhaustedKind] = useState<QuotaKind | null>(null);\n\n // Install progress state\n const [installJobTarget, setInstallJobTarget] = useState<SshTarget | null>(null);\n const [installJob, setInstallJob] = useState<InstallJob | null>(null);\n const [installJobId, setInstallJobId] = useState<string | null>(null);\n\n // Edit target modal state\n const [editTarget, setEditTarget] = useState<SshTarget | null>(null);\n const [editLoading, setEditLoading] = useState(false);\n const [editError, setEditError] = useState<string | null>(null);\n const [editName, setEditName] = useState('');\n const [editLabel, setEditLabel] = useState('');\n const [editHost, setEditHost] = useState('');\n const [editPort, setEditPort] = useState(22);\n const [editUsername, setEditUsername] = useState('');\n const [editAuthMethod, setEditAuthMethod] = useState<'password' | 'key'>('key');\n const [editPassword, setEditPassword] = useState('');\n const [editKeyPath, setEditKeyPath] = useState('');\n const [editTags, setEditTags] = useState('');\n\n // Form state\n const [formType, setFormType] = useState<'DIRECT' | 'SSH'>('DIRECT');\n const [formName, setFormName] = useState('');\n const [formDescription, setFormDescription] = useState('');\n const [formAgent, setFormAgent] = useState('');\n const [formHost, setFormHost] = useState('');\n const [formPort, setFormPort] = useState(22);\n const [formUsername, setFormUsername] = useState('');\n const [formAuthMethod, setFormAuthMethod] = useState<'password' | 'key'>('key');\n const [formPassword, setFormPassword] = useState('');\n const [formKeyPath, setFormKeyPath] = useState('');\n const [formLabel, setFormLabel] = useState('');\n const [formTags, setFormTags] = useState('');\n\n // Queries - use cache-and-network for silent background refresh\n const {\n data: targetsData,\n loading,\n refetch: refetchTargets,\n } = useListTargetsQuery({\n variables: { workspaceId: workspaceId || '', limit: 50, offset: 0 },\n skip: !workspaceId,\n fetchPolicy: 'cache-first',\n });\n\n // Use cached initial data for related entities already prefetched on initial load.\n const { agents: cachedAgents, refetch: refetchInitialData } = useCachedInitialData();\n\n // Mutations\n const [createTarget] = useCreateTargetMutation({\n refetchQueries: ['VibeControlsInitialData', 'ListTargets'],\n awaitRefetchQueries: true,\n });\n const { setDraftTagIds, flushTags } = useDraftEntityTags('VIBECONTROLS_TARGET');\n const [updateTarget] = useUpdateTargetMutation();\n const [testTarget] = useTestTargetMutation();\n const [startTerminal] = useStartTerminalMutation();\n const [deleteTarget] = useDeleteTargetMutation();\n const [installAgentOnTarget] = useInstallAgentOnTargetMutation();\n const [uninstallAgent] = useUninstallAgentFromTargetMutation();\n const [fetchInstallJobStatus] = useGetInstallAgentJobStatusLazyQuery({\n fetchPolicy: 'network-only',\n });\n\n // Derived data\n const targets: SshTarget[] = useMemo(() => {\n const raw = targetsData?.targets?.items ?? [];\n return raw.map((t: (typeof raw)[number]) => ({\n id: t.id,\n type: (t.type || 'DIRECT') as TargetKind,\n name: t.name,\n label: t.label || null,\n host: t.host || null,\n port: t.port || null,\n username: t.username || null,\n status: mapStatus(t.status),\n connectionId: t.connectionId || null,\n tags: t.tags,\n metadata: (t.metadata as Record<string, unknown> | null) ?? null,\n createdAt: t.createdAt,\n agents: (t.agents || []).map((a: (typeof t.agents)[number]) => ({\n id: a.id,\n name: a.name,\n version: a.version,\n isActive: a.isActive,\n })),\n }));\n }, [targetsData]);\n\n const agents: AgentOption[] = useMemo(() => {\n return cachedAgents.map((a) => ({\n id: a.id,\n name: a.name,\n isActive: a.isActive,\n tunnelUrl: a.tunnelUrl ?? null,\n agentApiKey: null,\n }));\n }, [cachedAgents]);\n\n const filtered = useMemo(() => {\n let items = targets;\n if (searchQuery) {\n const q = searchQuery.toLowerCase();\n items = items.filter(\n (t: SshTarget) =>\n t.name.toLowerCase().includes(q) ||\n t.host?.toLowerCase().includes(q) ||\n t.label?.toLowerCase().includes(q)\n );\n }\n if (agentFilter) {\n items = items.filter((t: SshTarget) => t.agents.some((a) => a.id === agentFilter));\n }\n if (typeFilter !== 'all') {\n items = items.filter((t: SshTarget) => t.type === typeFilter);\n }\n if (statusFilter !== 'all') {\n items = items.filter((t: SshTarget) => t.status === statusFilter);\n }\n return items;\n }, [targets, searchQuery, agentFilter, typeFilter, statusFilter]);\n\n useEffect(() => {\n if (!selectedTargetId) return;\n\n const target = filtered.find((item) => item.id === selectedTargetId);\n if (!target) return;\n\n const timeout = window.setTimeout(() => {\n document\n .getElementById(`target-row-${selectedTargetId}`)\n ?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n }, 150);\n\n return () => window.clearTimeout(timeout);\n }, [filtered, selectedTargetId]);\n\n const connectedCount = targets.filter((t: SshTarget) => t.status === 'connected').length;\n const allFilteredSelected =\n filtered.length > 0 && filtered.every((t: SshTarget) => selectedIds.has(t.id));\n const hasSelection = selectedIds.size > 0;\n\n // Install job polling\n useEffect(() => {\n if (!installJobId || !installJobTarget) return;\n\n let cancelled = false;\n\n const pollJob = () => {\n void fetchInstallJobStatus({\n variables: { targetId: installJobTarget.id, jobId: installJobId },\n })\n .then((result) => {\n if (cancelled) return;\n const data = result.data?.installAgentJobStatus;\n if (!data) return;\n if (!data.steps) data.steps = [];\n setInstallJob({\n id: data.jobId,\n status: data.status,\n currentStep: data.currentStep ?? 0,\n steps: data.steps ?? [],\n result: data.result ?? undefined,\n error: data.error ?? undefined,\n });\n if (data.status === 'completed' || data.status === 'failed') {\n if (data.status === 'completed') {\n void refetchTargets();\n refetchInitialData();\n }\n }\n })\n .catch(() => {\n // Polling error — will retry on next interval\n });\n };\n\n pollJob();\n const interval = setInterval(pollJob, 2000);\n\n return () => {\n cancelled = true;\n clearInterval(interval);\n };\n }, [installJobId, installJobTarget, fetchInstallJobStatus, refetchInitialData, refetchTargets]);\n\n // Handlers\n const handleCreate = useCallback(async () => {\n if (!formName || !workspaceId) return;\n if (formType !== 'DIRECT' && (!formAgent || !formHost || !formUsername)) return;\n try {\n const res = await createTarget({\n variables: {\n workspaceId,\n input: {\n type: formType as string,\n name: formName,\n sourceAgentId: formType !== 'DIRECT' ? formAgent : undefined,\n host: formType !== 'DIRECT' ? formHost : undefined,\n port: formType !== 'DIRECT' ? formPort : undefined,\n username: formType !== 'DIRECT' ? formUsername : undefined,\n password:\n formType === 'SSH' && formAuthMethod === 'password' ? formPassword : undefined,\n privateKeyPath:\n formType === 'SSH' && formAuthMethod === 'key' ? formKeyPath : undefined,\n label: formLabel || undefined,\n tags: formTags ? formTags.split(',').map((t: string) => t.trim()) : undefined,\n metadata: formDescription ? { description: formDescription } : undefined,\n },\n },\n });\n\n // Apollo's `errorPolicy: 'all'` makes the mutation promise resolve\n // even when the server returns GraphQL errors, so we have to check\n // `res.error` here — the `catch` block below would never fire for\n // server-side validation errors like ALREADY_EXISTS (BOFF-2626).\n if (res.error) {\n if (isQuotaExhaustedError(res.error)) {\n setShowAddForm(false);\n markQuotaHandledLocally();\n setQuotaExhaustedKind('target');\n return;\n }\n notify.error(\n tr('targets.createFailed', 'Failed to create target'),\n res.error.message || undefined\n );\n return;\n }\n\n const newTargetId = res.data?.createTarget?.id;\n setShowAddForm(false);\n setFormName('');\n setFormHost('');\n setFormUsername('');\n setFormPassword('');\n setFormKeyPath('');\n setFormLabel('');\n setFormTags('');\n if (newTargetId) await flushTags(newTargetId);\n void refetchTargets();\n // Refresh shared initial-data cache so AgentsPage (and other pages\n // reading targets via useCachedInitialData) see the new row without\n // a full page reload.\n refetchInitialData();\n } catch (err) {\n if (isQuotaExhaustedError(err)) {\n setShowAddForm(false);\n markQuotaHandledLocally();\n setQuotaExhaustedKind('target');\n return;\n }\n // Unexpected throw (network error, etc.) — surface via toast rather\n // than letting it bubble silently into the React error boundary.\n notify.error(\n tr('targets.createFailed', 'Failed to create target'),\n err instanceof Error ? err.message : undefined\n );\n }\n }, [\n formName,\n formAgent,\n formHost,\n formPort,\n formUsername,\n formAuthMethod,\n formPassword,\n formKeyPath,\n formLabel,\n formTags,\n formDescription,\n formType,\n workspaceId,\n createTarget,\n flushTags,\n refetchInitialData,\n refetchTargets,\n tr,\n ]);\n\n const handleTest = useCallback(\n async (id: string) => {\n const result = await testTarget({ variables: { id } });\n const data = result.data?.testTarget;\n if (data) {\n if (data.success) {\n notify.success(\n tr('targets.connectionSuccessful', 'Connection successful'),\n data.message || undefined\n );\n } else {\n notify.error(\n tr('targets.connectionFailed', 'Connection failed'),\n data.message || undefined\n );\n }\n void refetchTargets();\n refetchInitialData();\n }\n },\n [testTarget, refetchInitialData, refetchTargets, tr]\n );\n\n // Per-target loading state for the Open Terminal action — startTerminal\n // shells into the remote box and spawns ttyd, which routinely takes 3-8s.\n // Without a hint the user thinks the click did nothing and clicks again.\n const [startingTerminalIds, setStartingTerminalIds] = useState<Set<string>>(new Set());\n\n const handleStartTerminal = useCallback(\n async (id: string) => {\n setStartingTerminalIds((prev) => {\n const next = new Set(prev);\n next.add(id);\n return next;\n });\n try {\n const result = await startTerminal({ variables: { targetId: id } });\n if (result.error && isQuotaExhaustedError(result.error)) {\n markQuotaHandledLocally();\n setQuotaExhaustedKind('environment');\n return;\n }\n\n const data = result.data?.startTerminal;\n if (data?.sessionId) {\n navigate(`/sessions/${data.sessionId}`);\n }\n } catch (err) {\n if (isQuotaExhaustedError(err)) {\n markQuotaHandledLocally();\n setQuotaExhaustedKind('environment');\n return;\n }\n\n throw err;\n } finally {\n setStartingTerminalIds((prev) => {\n if (!prev.has(id)) return prev;\n const next = new Set(prev);\n next.delete(id);\n return next;\n });\n }\n },\n [startTerminal, navigate]\n );\n\n const handleDeleteSingle = useCallback(async () => {\n if (!deleteTargetId) return;\n try {\n await deleteTarget({ variables: { id: deleteTargetId } });\n if (isNative()) void nativeNotify('success');\n } catch (err) {\n if (isNative()) void nativeNotify('error');\n throw err;\n }\n setDeleteTargetId(null);\n setSelectedIds((prev) => {\n const next = new Set(prev);\n next.delete(deleteTargetId);\n return next;\n });\n void refetchTargets();\n refetchInitialData();\n }, [deleteTargetId, deleteTarget, refetchInitialData, refetchTargets]);\n\n const handleBulkDelete = useCallback(async () => {\n const ids = Array.from(selectedIds);\n await Promise.all(ids.map((id: string) => deleteTarget({ variables: { id } })));\n setSelectedIds(new Set());\n setBulkDeleteOpen(false);\n void refetchTargets();\n refetchInitialData();\n }, [selectedIds, deleteTarget, refetchInitialData, refetchTargets]);\n\n const handleInstallAgent = useCallback(\n async (target: SshTarget) => {\n setInstallJobTarget(target);\n setInstallJob(null);\n setInstallJobId(null);\n\n const sourceAgent = agents.find((a: AgentOption) => a.isActive);\n if (!sourceAgent) return;\n\n const result = await installAgentOnTarget({\n variables: { targetId: target.id, sourceAgentId: sourceAgent.id },\n });\n const data = result.data?.installAgentOnTarget;\n if (data?.jobId) {\n setInstallJobId(data.jobId);\n }\n },\n [installAgentOnTarget, agents]\n );\n\n const handleUninstallAgent = useCallback(\n async (target: SshTarget) => {\n await uninstallAgent({ variables: { targetId: target.id } });\n void refetchTargets();\n refetchInitialData();\n },\n [uninstallAgent, refetchInitialData, refetchTargets]\n );\n\n const handleOpenEdit = useCallback((target: SshTarget) => {\n setEditTarget(target);\n setEditName(target.name);\n setEditLabel(target.label ?? '');\n setEditHost(target.host ?? '');\n setEditPort(target.port ?? 22);\n setEditUsername(target.username ?? '');\n setEditAuthMethod('key');\n setEditPassword('');\n setEditKeyPath('');\n setEditTags(target.tags.join(', '));\n setEditError(null);\n }, []);\n\n const handleSaveEdit = useCallback(async () => {\n if (!editTarget) return;\n if (!editName.trim()) {\n setEditError('Name is required');\n return;\n }\n setEditLoading(true);\n setEditError(null);\n try {\n const res = await updateTarget({\n variables: {\n id: editTarget.id,\n input: {\n name: editName.trim(),\n label: editLabel.trim() || null,\n host: editHost.trim() || undefined,\n port: editPort || undefined,\n username: editUsername.trim() || undefined,\n password:\n editTarget.type === 'SSH' && editAuthMethod === 'password' && editPassword\n ? editPassword\n : undefined,\n privateKeyPath:\n editTarget.type === 'SSH' && editAuthMethod === 'key' && editKeyPath\n ? editKeyPath\n : undefined,\n tags: editTags\n ? editTags\n .split(',')\n .map((t: string) => t.trim())\n .filter(Boolean)\n : [],\n },\n },\n });\n // Same `errorPolicy: 'all'` pitfall as handleCreate — surface server\n // errors (e.g. ALREADY_EXISTS on rename collision) inline in the\n // modal rather than letting them vanish silently. BOFF-2626.\n //\n // Quota intentionally not checked here: updateTarget is a metadata\n // edit on an already-counted row, so the svc never raises\n // QUOTA_EXHAUSTED on this path. If that ever changes, mirror the\n // pattern from handleCreate (open the quota modal, return).\n if (res.error) {\n setEditError(res.error.message || 'Failed to update target');\n return;\n }\n setEditTarget(null);\n void refetchTargets();\n refetchInitialData();\n } catch (err) {\n setEditError(err instanceof Error ? err.message : 'Failed to update target');\n } finally {\n setEditLoading(false);\n }\n }, [\n editTarget,\n editName,\n editLabel,\n editHost,\n editPort,\n editUsername,\n editAuthMethod,\n editPassword,\n editKeyPath,\n editTags,\n updateTarget,\n refetchInitialData,\n refetchTargets,\n ]);\n\n const closeInstallDialog = useCallback(() => {\n setInstallJobTarget(null);\n setInstallJob(null);\n setInstallJobId(null);\n }, []);\n\n const toggleSelectAll = useCallback(() => {\n if (allFilteredSelected) {\n setSelectedIds((prev) => {\n const next = new Set(prev);\n filtered.forEach((t: SshTarget) => next.delete(t.id));\n return next;\n });\n } else {\n setSelectedIds((prev) => {\n const next = new Set(prev);\n filtered.forEach((t: SshTarget) => next.add(t.id));\n return next;\n });\n }\n }, [allFilteredSelected, filtered]);\n\n const toggleSelect = useCallback((id: string) => {\n setSelectedIds((prev) => {\n const next = new Set(prev);\n if (next.has(id)) {\n next.delete(id);\n } else {\n next.add(id);\n }\n return next;\n });\n }, []);\n\n // Stats\n const stats = {\n total: targets.length,\n connected: connectedCount,\n };\n\n const localizedTypeOptions = useMemo(\n () => [\n { value: 'all', label: tr('targets.filterTypeAll', 'All Types') },\n { value: 'DIRECT', label: tr('targets.typeDirect', 'Direct') },\n { value: 'SSH', label: 'SSH' },\n ],\n [tr]\n );\n\n const localizedStatusOptions = useMemo(\n () => [\n { value: 'all', label: tr('targets.filterStatusAll', 'All Statuses') },\n { value: 'connected', label: tr('targets.connected', 'Connected') },\n { value: 'disconnected', label: tr('targets.disconnected', 'Disconnected') },\n { value: 'unknown', label: tr('targets.unknown', 'Unknown') },\n ],\n [tr]\n );\n\n const isFiltered = searchQuery || agentFilter || typeFilter !== 'all' || statusFilter !== 'all';\n\n // Add-form source-agent select (accessible wiring shared with the hint).\n const sourceAgentHint = `${tr('targets.agentConnectionHintPrefix', 'The agent that will establish the')} ${formType} ${tr('targets.agentConnectionHintSuffix', 'connection to this target.')}`;\n const sourceAgentField = useField({ hint: sourceAgentHint });\n const addTypeLabelId = `${baseId}-add-type-label`;\n\n if (permissionsLoading)\n return <LoadingState message={tr('targets.loadingPermissions', 'Loading permissions…')} />;\n if (!hasPermission(VIBE_PERMISSIONS.TARGET_LIST))\n return (\n <ErrorState\n title={tr('common.accessDeniedTitle', 'Access Denied')}\n message={tr('targets.accessDeniedBody', \"You don't have permission to access this page.\")}\n />\n );\n\n return (\n <MotionPage className=\"space-y-6 px-6 lg:px-8 py-6 bg-bg-canvas min-h-full\">\n {/* Test Connection results and create-target errors surface via the\n module-wide `notify` toasts. Update-target errors surface inline in\n the edit dialog's `editError` banner instead. BOFF-2626. */}\n\n <PageHeader\n title={tr('nav.targets', 'Targets')}\n description={tr('targets.onlineSummary', '{{connected}} of {{total}} targets online', {\n connected: stats.connected,\n total: stats.total,\n })}\n actions={\n <div className=\"flex flex-col sm:flex-row items-stretch sm:items-center gap-2\">\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon\"\n onClick={() => void refetchTargets()}\n disabled={loading}\n aria-label={tr('targets.refreshTitle', 'Refresh targets')}\n title={tr('targets.refreshTitle', 'Refresh targets')}\n className=\"max-md:min-h-11 max-md:min-w-11\"\n >\n <RefreshCw className={`size-4 ${loading ? 'animate-spin' : ''}`} aria-hidden=\"true\" />\n </Button>\n <Button type=\"button\" onClick={() => setShowAddForm(true)} className=\"max-md:min-h-11\">\n <Plus className=\"size-4\" aria-hidden=\"true\" />\n {tr('targets.addTarget', 'Add Target')}\n </Button>\n </div>\n }\n />\n\n <PagePurpose icon={<Server className=\"size-4\" />}>\n {tr(\n 'targets.purpose',\n 'A target is a machine your agents can reach and run work on — your laptop, a remote SSH host, or a cloud box. Add a target here so that when you start a session it has somewhere concrete to execute. Targets keep your hosts, their connection details and online status in one list, separate from the agents that drive them.'\n )}\n </PagePurpose>\n\n {/* Agent setup banner */}\n {agents.length === 0 && !loading && (\n <AgentSetupBanner variant=\"full\" dismissKey=\"vibecontrols-targets-setup-banner\" />\n )}\n\n {/* Filters Bar */}\n <div className=\"space-y-3\">\n {/* Row 1: Search + View Toggle */}\n <div className=\"flex items-center gap-2\">\n <SearchInput\n value={searchQuery}\n onChange={setSearchQuery}\n placeholder={tr('targets.searchPlaceholder', 'Search targets...')}\n className=\"flex-1 min-w-0 sm:w-64 sm:flex-none\"\n />\n {/* View Toggle */}\n <div\n role=\"group\"\n aria-label={tr('targets.viewMode', 'View mode')}\n className=\"flex items-center gap-1 bg-bg-sunken rounded-button p-1 flex-shrink-0 border border-border-subtle\"\n >\n <button\n type=\"button\"\n onClick={() => setViewMode('grid')}\n aria-pressed={viewMode === 'grid'}\n aria-label={tr('targets.gridViewTitle', 'Grid view')}\n title={tr('targets.gridViewTitle', 'Grid view')}\n className={`flex size-8 max-md:size-9 items-center justify-center rounded transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-focus ${viewMode === 'grid' ? 'bg-[var(--color-accent-soft)] text-text-primary' : 'text-text-secondary hover:bg-bg-surface/60'}`}\n >\n <Grid className=\"size-4 text-text-secondary\" aria-hidden=\"true\" />\n </button>\n <button\n type=\"button\"\n onClick={() => setViewMode('list')}\n aria-pressed={viewMode === 'list'}\n aria-label={tr('targets.listViewTitle', 'List view')}\n title={tr('targets.listViewTitle', 'List view')}\n className={`flex size-8 max-md:size-9 items-center justify-center rounded transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-focus ${viewMode === 'list' ? 'bg-[var(--color-accent-soft)] text-text-primary' : 'text-text-secondary hover:bg-bg-surface/60'}`}\n >\n <List className=\"size-4 text-text-secondary\" aria-hidden=\"true\" />\n </button>\n </div>\n </div>\n\n {/* Row 2: Filters */}\n <div className=\"flex items-center gap-2 sm:gap-3 flex-wrap\">\n <FilterDropdown\n label={tr('sessions.filterType', 'Type')}\n value={typeFilter}\n options={localizedTypeOptions}\n onChange={setTypeFilter}\n />\n <FilterDropdown\n label={tr('sessions.filterStatus', 'Status')}\n value={statusFilter}\n options={localizedStatusOptions}\n onChange={setStatusFilter}\n />\n <SearchableSelect\n value={agentFilter ?? ''}\n onChange={(v: string) => setAgentFilter(v || null)}\n options={agents.map((a: AgentOption) => ({ value: a.id, label: a.name }))}\n placeholder={tr('targets.allAgents', 'All agents')}\n className=\"w-full sm:min-w-[180px] sm:w-auto\"\n dropdownAlign=\"left\"\n clearable\n />\n </div>\n </div>\n\n {/* Select All & Bulk Actions */}\n {filtered.length > 0 && (\n <div className=\"flex items-center gap-2 flex-wrap\">\n <div className=\"ml-auto flex items-center gap-2\">\n <button\n type=\"button\"\n onClick={toggleSelectAll}\n className=\"flex min-h-9 items-center gap-1.5 px-3 py-1.5 text-xs text-text-secondary hover:text-text-primary transition-colors rounded-button focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-focus\"\n >\n <CheckSquare className=\"size-3.5\" aria-hidden=\"true\" />\n {allFilteredSelected\n ? tr('targets.deselectAll', 'Deselect All')\n : tr('targets.selectAll', 'Select All')}\n </button>\n </div>\n </div>\n )}\n\n {/* Bulk Action Bar */}\n {hasSelection && (\n <div className=\"flex flex-col sm:flex-row items-start sm:items-center gap-3 px-4 py-2 border border-action-primary-bg bg-action-primary-bg/5 rounded-card\">\n <span className=\"text-sm font-medium text-text-primary\">\n {selectedIds.size} {tr('nav.targets', 'target')}\n {selectedIds.size !== 1 ? 's' : ''} {tr('sessions.selected', 'selected')}\n </span>\n <div className=\"flex items-center gap-1.5 sm:ml-auto\">\n {/* deleteTarget is @rbac(action:\"delete\", resource:\"target\") — hide\n bulk delete for actors without target:delete (BOFF-2688). */}\n <PermissionButton permission={VIBE_PERMISSIONS.TARGET_DELETE} deniedBehavior=\"hide\">\n <button\n type=\"button\"\n onClick={() => setBulkDeleteOpen(true)}\n className=\"flex min-h-9 items-center gap-1.5 px-3 py-1.5 text-xs font-medium text-status-error-text bg-status-error-bg-subtle border border-status-error-border rounded-button hover:bg-status-error-bg-subtle/80 transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-focus\"\n >\n <Trash2 className=\"size-3\" aria-hidden=\"true\" /> {tr('common.delete', 'Delete')}\n </button>\n </PermissionButton>\n <button\n type=\"button\"\n onClick={() => setSelectedIds(new Set())}\n className=\"flex min-h-9 items-center gap-1.5 px-3 py-1.5 text-xs text-text-secondary hover:text-text-primary transition-colors rounded-button focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-focus\"\n >\n <XSquare className=\"size-3\" aria-hidden=\"true\" />{' '}\n {tr('sessions.deselect', 'Deselect')}\n </button>\n </div>\n </div>\n )}\n\n {/* Results Count */}\n {isFiltered ? (\n <p className=\"text-sm text-text-secondary\" role=\"status\">\n {tr('targets.showingResults', 'Showing {{filtered}} of {{total}} targets')\n .replace('{{filtered}}', String(filtered.length))\n .replace('{{total}}', String(targets.length))}\n {loading && (\n <span className=\"ml-2 text-text-muted\">\n ({tr('sessions.refreshing', 'refreshing...')})\n </span>\n )}\n </p>\n ) : null}\n\n {/* Targets Display */}\n {loading && targets.length === 0 ? (\n <PageSkeleton variant=\"rows\" count={6} />\n ) : filtered.length > 0 ? (\n <AnimatePresence mode=\"wait\">\n {viewMode === 'grid' ? (\n <MotionList\n key=\"grid-view\"\n stagger={0.04}\n className=\"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4\"\n >\n {filtered.map((target: SshTarget) => (\n <MotionItem key={target.id} className=\"h-full\">\n <TargetCard\n target={target as TargetCardTarget}\n onTest={(id) => void handleTest(id)}\n onTerminal={(id) => void handleStartTerminal(id)}\n onOpenDetail={(id) => navigate(`/targets/${id}`)}\n onEdit={(t) => handleOpenEdit(t as SshTarget)}\n onInstallAgent={(t) => void handleInstallAgent(t as SshTarget)}\n onUninstallAgent={(t) => void handleUninstallAgent(t as SshTarget)}\n onDelete={(id) => setDeleteTargetId(id)}\n selected={selectedIds.has(target.id)}\n onToggleSelect={() => toggleSelect(target.id)}\n highlighted={selectedTargetId === target.id}\n isStartingTerminal={startingTerminalIds.has(target.id)}\n />\n </MotionItem>\n ))}\n </MotionList>\n ) : (\n <MotionList key=\"list-view\" stagger={0.04} className=\"space-y-2\">\n {filtered.map((target: SshTarget) => {\n const installed = isAgentInstalled(target);\n const isSelectedTarget = selectedTargetId === target.id;\n const overflowItems: ActionMenuItem[] = [\n {\n key: 'edit',\n label: tr('common.edit', 'Edit'),\n icon: Pencil,\n onSelect: () => handleOpenEdit(target),\n },\n // uninstallAgentFromTarget is @rbac(action:\"update\",\n // resource:\"target\") — hide it without target:update (BOFF-2688).\n ...(target.type !== 'DIRECT' &&\n installed &&\n hasPermission(VIBE_PERMISSIONS.TARGET_UPDATE)\n ? [\n {\n key: 'uninstall',\n label: tr('targets.uninstall', 'Uninstall'),\n icon: XCircle,\n variant: 'danger' as const,\n onSelect: () => void handleUninstallAgent(target),\n },\n ]\n : []),\n // deleteTarget is @rbac(action:\"delete\", resource:\"target\") —\n // hide it without target:delete (BOFF-2688).\n ...(hasPermission(VIBE_PERMISSIONS.TARGET_DELETE)\n ? [\n {\n key: 'delete',\n label: tr('common.delete', 'Delete'),\n icon: Trash2,\n variant: 'danger' as const,\n separatorBefore: true,\n onSelect: () => setDeleteTargetId(target.id),\n },\n ]\n : []),\n ];\n return (\n <MotionItem key={target.id} variant=\"fadeRight\">\n <div\n id={`target-row-${target.id}`}\n className={`p-4 rounded-card border transition-colors ${\n isSelectedTarget\n ? 'border-action-primary-bg bg-action-primary-bg/5'\n : 'border-border-default hover:bg-bg-sunken/30'\n }`}\n >\n {/* Row 1: Info */}\n <div className=\"flex items-start gap-3\">\n <Checkbox\n checked={selectedIds.has(target.id)}\n onCheckedChange={() => toggleSelect(target.id)}\n aria-label={tr('targets.selectTarget', 'Select {{name}}', {\n name: target.name,\n })}\n className=\"mt-1\"\n />\n <div className=\"flex min-w-0 flex-1 flex-wrap items-start gap-2\">\n <span\n className={`inline-flex items-center px-2 py-0.5 text-xs font-semibold rounded ${typeBadgeClass[target.type]}`}\n >\n {target.type}\n </span>\n <span\n className={`inline-flex items-center px-2 py-0.5 text-xs font-semibold rounded ${targetStatusBadgeClass[target.status]}`}\n >\n {tr(\n `targets.status.${target.status}`,\n statusConfig[target.status].label\n )}\n </span>\n <div className=\"min-w-0 basis-full\">\n <div className=\"flex items-center gap-2 flex-wrap\">\n <span className=\"font-medium text-text-primary\">{target.name}</span>\n {target.label && (\n <span className=\"text-text-secondary text-sm\">{target.label}</span>\n )}\n {installed && (\n <span className=\"inline-flex items-center gap-1 rounded-full border border-status-success-border px-2 py-0.5 text-xs bg-status-success-bg-subtle text-status-success-text\">\n <CheckCircle className=\"size-2.5\" aria-hidden=\"true\" />\n {tr('targets.agentInstalled', 'Agent Installed')}\n </span>\n )}\n </div>\n <div className=\"mt-1 flex flex-wrap items-center gap-2 text-sm text-text-secondary sm:gap-3\">\n {target.host && (\n <code className=\"text-xs break-words\">\n {target.username ? `${target.username}@` : ''}\n {target.host}\n {target.port ? `:${target.port}` : ''}\n </code>\n )}\n {target.agents.length > 0 && (\n <span className=\"text-text-muted\">\n {tr('targets.via', 'via')} {target.agents[0].name}\n </span>\n )}\n </div>\n {target.tags.length > 0 && (\n <div className=\"mt-1.5 flex flex-wrap gap-1\">\n {target.tags.map((tag: string) => (\n <span\n key={tag}\n className=\"px-1.5 py-0.5 text-xs bg-bg-sunken text-text-secondary rounded\"\n >\n {tag}\n </span>\n ))}\n </div>\n )}\n </div>\n </div>\n </div>\n {/* Row 2: Actions */}\n <div className=\"mt-3 flex flex-wrap items-center gap-2 pl-0 sm:pl-7\">\n <button\n type=\"button\"\n onClick={() => void handleTest(target.id)}\n title={tr('targets.testConnectivity', 'Test connectivity')}\n className=\"flex min-h-9 items-center gap-1.5 px-3 py-1.5 text-xs font-medium rounded-button border border-border-default bg-bg-surface hover:bg-bg-sunken transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-focus\"\n >\n {tr('targets.test', 'Test')}\n </button>\n <button\n type=\"button\"\n onClick={() => void handleStartTerminal(target.id)}\n disabled={startingTerminalIds.has(target.id)}\n aria-busy={startingTerminalIds.has(target.id)}\n title={tr('targets.openTerminal', 'Open terminal')}\n className=\"flex min-h-9 items-center gap-1.5 px-3 py-1.5 text-xs font-medium rounded-button border border-border-default bg-bg-surface hover:bg-bg-sunken transition-colors disabled:opacity-60 disabled:cursor-not-allowed focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-focus\"\n >\n {startingTerminalIds.has(target.id) ? (\n <>\n <Loader2 className=\"size-3 animate-spin\" aria-hidden=\"true\" />\n {tr('targets.starting', 'Starting…')}\n </>\n ) : (\n tr('targets.terminal', 'Terminal')\n )}\n </button>\n {target.type !== 'DIRECT' && !installed && (\n <button\n type=\"button\"\n onClick={() => void handleInstallAgent(target)}\n title={tr('targets.installAgent', 'Install agent')}\n className=\"flex min-h-9 items-center gap-1.5 rounded-button px-3 py-1.5 text-xs font-medium bg-action-primary-bg 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 {tr('targets.installAgent', 'Install Agent')}\n </button>\n )}\n <div className=\"hidden flex-1 sm:block\" />\n <ActionMenu\n ariaLabel={tr('targets.targetActions', 'Target actions')}\n title={tr('targets.targetActions', 'Target actions')}\n align=\"end\"\n items={overflowItems}\n />\n </div>\n </div>\n </MotionItem>\n );\n })}\n </MotionList>\n )}\n </AnimatePresence>\n ) : (\n <EmptyState\n icon={<Server className=\"size-8 text-text-secondary\" aria-hidden=\"true\" />}\n illustration={isFiltered ? 'empty-search' : 'empty-generic'}\n title={\n isFiltered\n ? tr('targets.emptyNoTargetsFound', 'No targets found')\n : tr('targets.emptyNoTargetsConfigured', 'No targets configured')\n }\n description={\n isFiltered\n ? tr('targets.emptyAdjustSearch', 'Try adjusting your search or filters')\n : tr(\n 'targets.emptyDescription',\n 'Add a target to start managing servers, workstations, and environments.'\n )\n }\n action={\n !isFiltered ? (\n <div className=\"flex flex-wrap items-center justify-center gap-2\">\n <Button\n type=\"button\"\n onClick={() => setShowAddForm(true)}\n className=\"max-md:min-h-11\"\n >\n <Plus className=\"size-4\" aria-hidden=\"true\" />\n {tr('targets.addTarget', 'Add Target')}\n </Button>\n <GetHelpButton prompt=\"What is a Target in VibeControls and how do I create one?\" />\n </div>\n ) : undefined\n }\n />\n )}\n\n {/* Active sessions live on the dedicated /vibecontrols/sessions page —\n intentionally not surfaced here so the Targets tab stays focused on\n target lifecycle (add/edit/delete + drill into a target's agents). */}\n\n {/* Add Target dialog */}\n <ResponsiveDialog\n open={showAddForm}\n onOpenChange={(open) => {\n if (!open) setShowAddForm(false);\n }}\n >\n <ResponsiveDialogContent className=\"sm:max-w-lg\">\n <ResponsiveDialogHeader>\n <ResponsiveDialogTitle>{tr('targets.addTarget', 'Add Target')}</ResponsiveDialogTitle>\n <ResponsiveDialogDescription>\n {tr('targets.addTargetBody', 'Register a machine or server you want to manage.')}\n </ResponsiveDialogDescription>\n </ResponsiveDialogHeader>\n\n <div className=\"max-h-[min(60vh,34rem)] space-y-4 overflow-y-auto px-0.5 py-1\">\n {/* Target Type */}\n <div>\n <span\n id={addTypeLabelId}\n className=\"mb-1.5 block text-sm font-medium text-text-primary\"\n >\n {tr('targets.targetType', 'Target Type')}\n </span>\n <div role=\"group\" aria-labelledby={addTypeLabelId} className=\"grid grid-cols-2 gap-2\">\n {(['DIRECT', 'SSH'] as const).map((t) => (\n <button\n type=\"button\"\n key={t}\n onClick={() => setFormType(t)}\n aria-pressed={formType === t}\n className={`min-h-9 px-3 py-2 text-sm font-medium rounded-button border transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-focus ${\n formType === t\n ? 'border-action-primary-bg bg-action-primary-bg/10 text-action-primary-bg'\n : 'border-border-default hover:bg-bg-sunken text-text-secondary'\n }`}\n >\n {t}\n </button>\n ))}\n </div>\n <p className=\"mt-1 text-xs text-text-muted\">\n {formType === 'DIRECT'\n ? tr(\n 'targets.targetTypeDirectHint',\n 'A local machine where you will install the agent manually.'\n )\n : tr('targets.targetTypeSshHint', 'A remote server accessible via SSH.')}\n </p>\n </div>\n\n <TextField\n label={tr('webhooks.name', 'Name')}\n value={formName}\n onChange={setFormName}\n requiredField\n placeholder={\n formType === 'DIRECT'\n ? tr('targets.namePlaceholderDirect', 'My Laptop')\n : tr('targets.namePlaceholderServer', 'Production Server')\n }\n />\n\n <TextField\n label={tr('targets.descriptionOptional', 'Description (optional)')}\n value={formDescription}\n onChange={setFormDescription}\n placeholder={tr('targets.descriptionPlaceholder', 'Brief description of this target')}\n />\n\n {/* Connection fields — only for SSH */}\n {formType !== 'DIRECT' && (\n <>\n <div>\n <label\n htmlFor={sourceAgentField.id}\n className=\"mb-1.5 block text-sm font-medium text-text-primary\"\n >\n {tr('targets.sourceAgent', 'Source Agent')}\n </label>\n <select\n {...sourceAgentField.inputProps}\n value={formAgent}\n onChange={(e: React.ChangeEvent<HTMLSelectElement>) =>\n setFormAgent(e.target.value)\n }\n aria-required=\"true\"\n className=\"w-full rounded-input border border-border-default bg-bg-elevated px-3 py-2 text-base md:text-sm\"\n >\n <option value=\"\">\n {tr('targets.selectAgentConnectFrom', 'Select an agent to connect from')}\n </option>\n {agents.map((a: AgentOption) => (\n <option key={a.id} value={a.id}>\n {a.name}\n </option>\n ))}\n </select>\n <p id={sourceAgentField.hintId} className=\"mt-1.5 text-xs text-text-muted\">\n {sourceAgentHint}\n </p>\n </div>\n <div className=\"grid grid-cols-1 sm:grid-cols-2 gap-3\">\n <TextField\n label={tr('targets.host', 'Host')}\n value={formHost}\n onChange={setFormHost}\n requiredField\n placeholder={tr('targets.hostPlaceholder', '192.168.1.100')}\n />\n <TextField\n label={tr('tunnels.port', 'Port')}\n value={formPort}\n onChange={(v) => setFormPort(Number(v))}\n type=\"number\"\n />\n </div>\n <TextField\n label={tr('targets.username', 'Username')}\n value={formUsername}\n onChange={setFormUsername}\n requiredField\n placeholder={tr('targets.usernamePlaceholder', 'root')}\n />\n {formType === 'SSH' && (\n <>\n <AuthMethodPicker\n legend={tr('targets.authentication', 'Authentication')}\n name={`${baseId}-add-auth`}\n value={formAuthMethod}\n onChange={setFormAuthMethod}\n passwordLabel={tr('targets.password', 'Password')}\n keyLabel={tr('targets.privateKey', 'Private Key')}\n />\n {formAuthMethod === 'password' ? (\n <TextField\n label={tr('targets.password', 'Password')}\n value={formPassword}\n onChange={setFormPassword}\n type=\"password\"\n autoComplete=\"new-password\"\n />\n ) : (\n <TextField\n label={tr('targets.privateKeyPath', 'Private Key Path')}\n value={formKeyPath}\n onChange={setFormKeyPath}\n placeholder={tr('targets.privateKeyPathPlaceholder', '~/.ssh/id_rsa')}\n />\n )}\n </>\n )}\n </>\n )}\n\n {/* Label + Tags (all types) */}\n <TextField\n label={tr('targets.labelOptional', 'Label (optional)')}\n value={formLabel}\n onChange={setFormLabel}\n placeholder={tr('targets.labelPlaceholder', 'web-server-01')}\n />\n <TextField\n label={tr('targets.tagsCommaSeparated', 'Tags (comma-separated)')}\n value={formTags}\n onChange={setFormTags}\n placeholder={tr('targets.tagsPlaceholder', 'production, web')}\n />\n\n <div className=\"border-t border-border-default pt-3\">\n <h3 className=\"text-sm font-medium text-text-secondary mb-2\">\n {tr('targets.tags', 'Tags')}\n </h3>\n <EntityTagPicker entityType=\"VIBECONTROLS_TARGET\" onDraftChange={setDraftTagIds} />\n </div>\n </div>\n\n <ResponsiveDialogFooter>\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={() => setShowAddForm(false)}\n className=\"max-md:min-h-11\"\n >\n {tr('common.cancel', 'Cancel')}\n </Button>\n <Button type=\"button\" onClick={() => void handleCreate()} className=\"max-md:min-h-11\">\n {tr('targets.addTarget', 'Add Target')}\n </Button>\n </ResponsiveDialogFooter>\n </ResponsiveDialogContent>\n </ResponsiveDialog>\n\n {/* Edit Target dialog */}\n <ResponsiveDialog\n open={editTarget !== null}\n onOpenChange={(open) => {\n if (!open && !editLoading) setEditTarget(null);\n }}\n >\n <ResponsiveDialogContent className=\"sm:max-w-lg\">\n {editTarget && (\n <>\n <ResponsiveDialogHeader>\n <ResponsiveDialogTitle>\n {tr('targets.editTarget', 'Edit Target')}\n </ResponsiveDialogTitle>\n <ResponsiveDialogDescription>{editTarget.name}</ResponsiveDialogDescription>\n </ResponsiveDialogHeader>\n\n <div className=\"max-h-[min(60vh,34rem)] space-y-4 overflow-y-auto px-0.5 py-1\">\n {editError && (\n <div\n role=\"alert\"\n className=\"rounded-card border border-status-error-border bg-status-error-bg-subtle p-3 text-sm text-status-error-text\"\n >\n {editError}\n </div>\n )}\n\n <TextField\n label={tr('webhooks.name', 'Name')}\n value={editName}\n onChange={setEditName}\n requiredField\n placeholder={tr('targets.namePlaceholderServer', 'Production Server')}\n />\n\n <TextField\n label={tr('targets.labelOptional', 'Label (optional)')}\n value={editLabel}\n onChange={setEditLabel}\n placeholder={tr('targets.labelPlaceholder', 'web-server-01')}\n />\n\n {/* Connection fields — only for non-DIRECT targets */}\n {editTarget.type !== 'DIRECT' && (\n <>\n <div className=\"grid grid-cols-1 sm:grid-cols-2 gap-3\">\n <TextField\n label={tr('targets.host', 'Host')}\n value={editHost}\n onChange={setEditHost}\n placeholder={tr('targets.hostPlaceholder', '192.168.1.100')}\n />\n <TextField\n label={tr('tunnels.port', 'Port')}\n value={editPort}\n onChange={(v) => setEditPort(Number(v))}\n type=\"number\"\n />\n </div>\n\n <TextField\n label={tr('targets.username', 'Username')}\n value={editUsername}\n onChange={setEditUsername}\n placeholder={tr('targets.usernamePlaceholder', 'root')}\n />\n\n {editTarget.type === 'SSH' && (\n <>\n <AuthMethodPicker\n legend={tr(\n 'targets.updateCredentialsOptional',\n 'Update credentials (optional)'\n )}\n name={`${baseId}-edit-auth`}\n value={editAuthMethod}\n onChange={setEditAuthMethod}\n passwordLabel={tr('targets.password', 'Password')}\n keyLabel={tr('targets.privateKey', 'Private Key')}\n hint={tr(\n 'targets.keepCredentialsHint',\n 'Leave blank to keep existing credentials.'\n )}\n />\n {editAuthMethod === 'password' ? (\n <TextField\n label={tr('targets.newPassword', 'New Password')}\n value={editPassword}\n onChange={setEditPassword}\n type=\"password\"\n autoComplete=\"new-password\"\n placeholder={tr(\n 'targets.keepCurrentPlaceholder',\n 'Leave blank to keep current'\n )}\n />\n ) : (\n <TextField\n label={tr('targets.newPrivateKeyPath', 'New Private Key Path')}\n value={editKeyPath}\n onChange={setEditKeyPath}\n placeholder={tr(\n 'targets.keepCurrentKeyPlaceholder',\n 'Leave blank to keep current (~/.ssh/id_rsa)'\n )}\n />\n )}\n </>\n )}\n </>\n )}\n\n <TextField\n label={tr('targets.tagsCommaSeparated', 'Tags (comma-separated)')}\n value={editTags}\n onChange={setEditTags}\n placeholder={tr('targets.tagsPlaceholder', 'production, web')}\n />\n </div>\n\n <ResponsiveDialogFooter>\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={() => setEditTarget(null)}\n disabled={editLoading}\n className=\"max-md:min-h-11\"\n >\n {tr('common.cancel', 'Cancel')}\n </Button>\n <Button\n type=\"button\"\n onClick={() => void handleSaveEdit()}\n disabled={editLoading}\n aria-busy={editLoading}\n className=\"max-md:min-h-11\"\n >\n {editLoading\n ? tr('common.saving', 'Saving...')\n : tr('targets.saveChanges', 'Save Changes')}\n </Button>\n </ResponsiveDialogFooter>\n </>\n )}\n </ResponsiveDialogContent>\n </ResponsiveDialog>\n\n {/* Single delete confirmation */}\n <ConfirmDialog\n isOpen={!!deleteTargetId}\n onClose={() => setDeleteTargetId(null)}\n onConfirm={() => void handleDeleteSingle()}\n title={tr('targets.deleteTarget', 'Delete Target')}\n message={tr(\n 'targets.deleteTargetMessage',\n 'This will remove the target and its connection from the agent. Active terminals will be disconnected.'\n )}\n confirmLabel={tr('common.delete', 'Delete')}\n variant=\"danger\"\n />\n\n {/* Bulk delete confirmation */}\n <ConfirmDialog\n isOpen={bulkDeleteOpen}\n onClose={() => setBulkDeleteOpen(false)}\n onConfirm={() => void handleBulkDelete()}\n title={tr('targets.deleteSelectedTargets', 'Delete Selected Targets')}\n message={`${tr('targets.confirmDeleteSelectedPrefix', 'Are you sure you want to delete')} ${selectedIds.size} ${tr('nav.targets', 'target')}${selectedIds.size === 1 ? '' : 's'}? ${tr('targets.confirmDeleteSelectedSuffix', 'This action cannot be undone.')}`}\n confirmLabel={tr('targets.deleteAll', 'Delete All')}\n variant=\"danger\"\n />\n\n {/* Install progress dialog */}\n <ResponsiveDialog\n open={installJobTarget !== null}\n onOpenChange={(open) => {\n if (!open && installJob?.status !== 'running') closeInstallDialog();\n }}\n >\n <ResponsiveDialogContent\n className=\"sm:max-w-md\"\n showCloseButton={installJob?.status !== 'running'}\n >\n {installJobTarget && (\n <>\n <ResponsiveDialogHeader>\n <ResponsiveDialogTitle className=\"break-words\">\n {tr('targets.installingAgentOn', 'Installing Agent on')} {installJobTarget.name}\n </ResponsiveDialogTitle>\n <ResponsiveDialogDescription>\n {tr('targets.installProgressBody', 'Installation progress for this target.')}\n </ResponsiveDialogDescription>\n </ResponsiveDialogHeader>\n\n <div className=\"space-y-2\" role=\"status\">\n {installJob && installJob.steps ? (\n installJob.steps.map((step: InstallJob['steps'][number], idx: number) => (\n <div key={idx} className=\"flex items-center gap-3\">\n {step.status === 'running' && (\n <Loader2\n className=\"size-4 animate-spin text-text-secondary\"\n aria-hidden=\"true\"\n />\n )}\n {step.status === 'completed' && (\n <CheckCircle\n className=\"size-4 text-status-success-text\"\n aria-hidden=\"true\"\n />\n )}\n {step.status === 'failed' && (\n <XCircle className=\"size-4 text-status-error-text\" aria-hidden=\"true\" />\n )}\n {step.status === 'skipped' && (\n <Check className=\"size-4 text-text-muted\" aria-hidden=\"true\" />\n )}\n {step.status === 'pending' && (\n <div\n className=\"size-4 rounded-full border-2 border-border-default\"\n aria-hidden=\"true\"\n />\n )}\n <div className=\"min-w-0\">\n <div className=\"text-sm font-medium text-text-primary\">\n {tr(\n `targets.installStep.${step.name}`,\n stepLabels[step.name] ?? step.name\n )}\n </div>\n {step.message && (\n <div className=\"text-xs text-text-muted break-words\">{step.message}</div>\n )}\n </div>\n </div>\n ))\n ) : (\n <div className=\"flex items-center gap-3\">\n <Loader2\n className=\"size-4 animate-spin text-text-secondary\"\n aria-hidden=\"true\"\n />\n <span className=\"text-sm text-text-primary\">\n {tr('targets.startingInstallJob', 'Starting install job...')}\n </span>\n </div>\n )}\n </div>\n\n {installJob?.status === 'completed' && (\n <div\n role=\"status\"\n className=\"rounded-card border border-status-success-border bg-status-success-bg-subtle p-3 text-sm text-status-success-text\"\n >\n {tr('targets.agentInstalledSuccess', 'Agent installed successfully!')}\n </div>\n )}\n {installJob?.status === 'failed' && (\n <div\n role=\"alert\"\n className=\"rounded-card border border-status-error-border bg-status-error-bg-subtle p-3 text-sm text-status-error-text\"\n >\n {installJob.error ?? tr('targets.installationFailed', 'Installation failed.')}\n </div>\n )}\n\n <ResponsiveDialogFooter>\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={closeInstallDialog}\n disabled={installJob?.status === 'running'}\n aria-busy={installJob?.status === 'running'}\n className=\"w-full max-md:min-h-11\"\n >\n {!installJob || installJob.status === 'running'\n ? tr('targets.installing', 'Installing...')\n : tr('common.close', 'Close')}\n </Button>\n </ResponsiveDialogFooter>\n </>\n )}\n </ResponsiveDialogContent>\n </ResponsiveDialog>\n\n <ConfirmDialog\n isOpen={quotaExhaustedKind !== null}\n onClose={() => setQuotaExhaustedKind(null)}\n onConfirm={() => {\n setQuotaExhaustedKind(null);\n navigate('/billing/plans');\n }}\n title={getQuotaDialogContent(quotaExhaustedKind ?? 'generic').title}\n message={getQuotaDialogContent(quotaExhaustedKind ?? 'generic').message}\n confirmLabel={tr('targets.viewBilling', 'View Billing')}\n cancelLabel={tr('common.dismiss', 'Dismiss')}\n variant=\"warning\"\n />\n </MotionPage>\n );\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"TemplateDetailPage.js","names":[],"sources":["../../src/pages/TemplateDetailPage.tsx"],"sourcesContent":["import { useState, useCallback } from 'react';\nimport { useParams } from 'react-router';\nimport { usePermissions } from '@burdenoff/fe-libs/shared/providers/shell';\nimport { VIBE_PERMISSIONS } from '../constants/permissions';\nimport {\n ArrowLeft,\n FileCode,\n Copy,\n Layers,\n Tag,\n FolderTree,\n Clock,\n RefreshCw,\n Trash2,\n Variable,\n Github,\n CheckCircle2,\n XCircle,\n Loader2,\n} from 'lucide-react';\nimport {\n PageHeader,\n Card,\n EmptyState,\n ErrorState,\n ConfirmDialog,\n QuotaExhaustedDialog,\n} from '@/components/shared';\nimport { isQuotaExhaustedError } from '@/utils/quotaUtils';\nimport { EntityTagPicker } from '@/components/shared/EntityTagPicker';\nimport { PageSkeleton } from '@/components/shared/PageSkeleton';\nimport { MotionPage } from '@burdenoff/fe-libs/shared/motion';\nimport { TemplateWizard } from '@/components/templates';\nimport type { TemplateVariable, GitHubConfig, GitHubConnection } from '@/components/templates';\nimport { EntityShareButton } from '@/components/sharing';\nimport { useVibeNavigate } from '@/providers/VibeControlsProvider';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport {\n useGetTemplateQuery,\n useInstantiateTemplateMutation,\n useDeleteTemplateMutation,\n useUpdateComponentMutation,\n useForkGitHubRepoMutation,\n useListActiveConnectionsQuery,\n} from '@/generated/wspace-operations';\n\nfunction substituteVars(text: string, vars: Record<string, unknown>): string {\n return text.replace(/\\{\\{(\\w+)\\}\\}|\\{(\\w+)\\}/g, (_match, a, b) => {\n const key = a ?? b;\n return key in vars ? String(vars[key]) : _match;\n });\n}\n\nfunction parseGitHubRepo(url: string): { owner: string; repo: string } | null {\n try {\n const match = url.match(/^https?:\\/\\/github\\.com\\/([^/]+)\\/([^/]+?)(?:\\.git)?(?:\\/.*)?$/);\n if (!match) return null;\n return { owner: match[1], repo: match[2] };\n } catch {\n return null;\n }\n}\n\nasync function scaffoldGitHubRepo(\n fullName: string,\n headers: Record<string, string>,\n data: {\n name: string;\n description: string;\n variableValues: Record<string, unknown>;\n },\n template: {\n name: string;\n description?: string | null;\n setupInstructions?: string | null;\n fileTree?: unknown;\n variables?: unknown;\n } | null\n) {\n if (!template) return;\n\n const vars = data.variableValues;\n const templateVars = Array.isArray(template.variables)\n ? (template.variables as Array<{ name: string; title?: string }>)\n : [];\n\n // Build README content\n const lines: string[] = [];\n lines.push(`# ${data.name}`);\n lines.push('');\n if (data.description) {\n lines.push(data.description);\n lines.push('');\n }\n lines.push(`> Scaffolded from VibeControls template: **${template.name}**`);\n lines.push('');\n\n // Variable values table\n if (templateVars.length > 0 && Object.keys(vars).length > 0) {\n lines.push('## Configuration');\n lines.push('');\n lines.push('| Variable | Value |');\n lines.push('|----------|-------|');\n for (const v of templateVars) {\n const val = vars[v.name];\n if (val !== undefined) {\n lines.push(`| ${v.title ?? v.name} | \\`${String(val)}\\` |`);\n }\n }\n lines.push('');\n }\n\n // Setup instructions (with variable substitution)\n if (template.setupInstructions) {\n lines.push('## Getting Started');\n lines.push('');\n lines.push(substituteVars(template.setupInstructions, vars));\n lines.push('');\n }\n\n // File tree\n if (template.fileTree) {\n lines.push('## Project Structure');\n lines.push('');\n lines.push('```');\n lines.push(\n typeof template.fileTree === 'string'\n ? template.fileTree\n : JSON.stringify(template.fileTree, null, 2)\n );\n lines.push('```');\n lines.push('');\n }\n\n const readmeContent = lines.join('\\n');\n\n // Get existing README.md SHA so we can update it\n const existing = await fetch(`https://api.github.com/repos/${fullName}/contents/README.md`, {\n headers,\n });\n let sha: string | undefined;\n if (existing.ok) {\n const existingData = (await existing.json()) as { sha?: string };\n sha = existingData.sha;\n }\n\n // Push scaffolded README.md\n await fetch(`https://api.github.com/repos/${fullName}/contents/README.md`, {\n method: 'PUT',\n headers,\n body: JSON.stringify({\n message: `chore: scaffold from VibeControls template \"${template.name}\"`,\n content: btoa(unescape(encodeURIComponent(readmeContent))),\n ...(sha ? { sha } : {}),\n }),\n });\n\n // Push GETTING_STARTED.md with setup instructions + resolved variable values\n if (template.setupInstructions || (templateVars.length > 0 && Object.keys(vars).length > 0)) {\n const gsLines: string[] = ['# Getting Started', ''];\n\n if (template.setupInstructions) {\n gsLines.push(substituteVars(template.setupInstructions, vars));\n gsLines.push('');\n }\n\n // Always append a resolved variables section so values are never lost\n if (templateVars.length > 0 && Object.keys(vars).length > 0) {\n gsLines.push('---');\n gsLines.push('');\n gsLines.push('## Template Variable Values');\n gsLines.push('');\n gsLines.push('These are the values you chose when creating this project:');\n gsLines.push('');\n for (const v of templateVars) {\n const val = vars[v.name];\n if (val !== undefined && val !== '') {\n gsLines.push(`**${v.title ?? v.name}**`);\n gsLines.push('');\n gsLines.push('```');\n gsLines.push(String(val));\n gsLines.push('```');\n gsLines.push('');\n }\n }\n }\n\n await fetch(`https://api.github.com/repos/${fullName}/contents/GETTING_STARTED.md`, {\n method: 'PUT',\n headers,\n body: JSON.stringify({\n message: 'docs: add getting started guide from template',\n content: btoa(unescape(encodeURIComponent(gsLines.join('\\n')))),\n }),\n });\n }\n}\n\nconst categoryStyles: Record<string, string> = {\n STARTER: 'bg-bg-sunken text-text-secondary',\n MICROSERVICE: 'bg-[var(--color-accent-soft)] text-text-primary',\n FRONTEND: 'bg-status-info-bg text-status-info-text',\n BACKEND: 'bg-[var(--color-accent-soft)] text-text-primary',\n FULLSTACK: 'bg-status-success-bg text-status-success-text',\n INFRASTRUCTURE: 'bg-status-warning-bg text-status-warning-text',\n LIBRARY: 'bg-status-warning-bg text-status-warning-text',\n CUSTOM: 'bg-bg-sunken text-text-secondary',\n};\n\nexport function TemplateDetailPage() {\n const { t } = useI18n();\n const { id } = useParams<{ id: string }>();\n const navigate = useVibeNavigate();\n const { hasPermission, isLoading: permissionsLoading } = usePermissions();\n const canReadTemplate = hasPermission(VIBE_PERMISSIONS.TEMPLATE_READ);\n // `instantiateVibecontrolsTemplate` creates a component, but the gateway\n // directive for that mutation is `@rbac(action: \"create\", resource: \"template\")`.\n const canCreateTemplate = hasPermission(VIBE_PERMISSIONS.TEMPLATE_CREATE);\n const canDeleteTemplate = hasPermission(VIBE_PERMISSIONS.TEMPLATE_DELETE);\n const canReadIntegrationConnection = hasPermission(VIBE_PERMISSIONS.INTEGRATION_CONNECTION_READ);\n\n const tr = useCallback(\n (key: string, fallback: string): string => {\n const value = t(key);\n return value === key ? fallback : value;\n },\n [t]\n );\n\n const [showWizard, setShowWizard] = useState(false);\n const [showQuotaExhausted, setShowQuotaExhausted] = useState(false);\n const [showDeleteConfirm, setShowDeleteConfirm] = useState(false);\n const [isDeleting, setIsDeleting] = useState(false);\n const [successMessage, setSuccessMessage] = useState<string | null>(null);\n const [cloneError, setCloneError] = useState<string | null>(null);\n const [forkNotice, setForkNotice] = useState<string | null>(null);\n const [repoProgress, setRepoProgress] = useState<{\n stage: string;\n done: boolean;\n error: boolean;\n } | null>(null);\n\n const { data, loading, error, refetch } = useGetTemplateQuery({\n variables: { id: id || '' },\n skip: !id || permissionsLoading || !canReadTemplate,\n fetchPolicy: 'cache-and-network',\n });\n\n const [instantiateTemplate] = useInstantiateTemplateMutation({\n refetchQueries: ['ListComponents'],\n });\n const [deleteTemplate] = useDeleteTemplateMutation({ refetchQueries: ['ListTemplates'] });\n const [updateComponent] = useUpdateComponentMutation();\n const [forkGitHubRepo] = useForkGitHubRepoMutation();\n\n // Fetch active GitHub connections for the workspace\n const { data: connectionsData } = useListActiveConnectionsQuery({\n variables: { filter: { status: 'ACTIVE' as const }, pagination: { limit: 50, offset: 0 } },\n fetchPolicy: 'cache-first',\n skip: !canCreateTemplate || !canReadIntegrationConnection,\n });\n const githubConnections: GitHubConnection[] = (connectionsData?.getConnections?.items ?? [])\n .filter((c: { provider?: { key?: string } | null }) => c.provider?.key === 'github')\n .map(\n (c: {\n id: string;\n name: string;\n externalAccountEmail?: string | null;\n externalAccountName?: string | null;\n provider: { key: string; name: string };\n }) => ({\n id: c.id,\n name: c.name,\n externalAccountEmail: c.externalAccountEmail,\n externalAccountName: c.externalAccountName,\n provider: { key: c.provider.key, name: c.provider.name },\n })\n );\n\n const template = data?.vibecontrolsTemplate ?? null;\n\n if (permissionsLoading)\n return (\n <div className=\"flex items-center justify-center min-h-[400px]\">\n <p className=\"text-text-secondary\">Loading permissions…</p>\n </div>\n );\n if (!canReadTemplate)\n return (\n <div className=\"flex items-center justify-center min-h-[400px]\">\n <div className=\"text-center space-y-2\">\n <h2 className=\"text-lg font-semibold text-text-primary\">Access Denied</h2>\n <p className=\"text-sm text-text-secondary\">\n You don't have permission to access this page.\n </p>\n </div>\n </div>\n );\n\n const handleBack = () => {\n navigate('/templates');\n };\n\n const handleClone = async (data: {\n name: string;\n description: string;\n variableValues: Record<string, unknown>;\n githubConfig: GitHubConfig | null;\n }) => {\n if (!canCreateTemplate) return;\n\n setShowWizard(false);\n setRepoProgress({ stage: 'Creating component…', done: false, error: false });\n\n const result = await instantiateTemplate({\n variables: {\n templateId: id,\n input: {\n name: data.name,\n description: data.description || undefined,\n ...(Object.keys(data.variableValues).length > 0 && {\n variableValues: data.variableValues,\n }),\n },\n },\n });\n if (result.error && isQuotaExhaustedError(result.error)) {\n setRepoProgress(null);\n setShowQuotaExhausted(true);\n return;\n }\n const newId = result.data?.instantiateVibecontrolsTemplate?.id;\n\n // GitHub repo creation + scaffolding\n if (newId && data.githubConfig?.enabled) {\n // Ensure repo URL starts empty before GitHub runs\n await updateComponent({ variables: { id: newId, input: { repositoryUrl: null } } });\n const gh = data.githubConfig;\n\n // Priority: explicit sourceRepositoryUrl > snapshot URL > sourceComponent.repositoryUrl\n const snapshotRepoUrl = (template?.componentSnapshot as Record<string, unknown> | null)\n ?.repositoryUrl as string | undefined;\n const sourceRepoUrl =\n template?.sourceRepositoryUrl ||\n snapshotRepoUrl ||\n template?.sourceComponent?.repositoryUrl ||\n undefined;\n\n try {\n if (gh.connectionId) {\n // ── OAuth path: backend resolves the token server-side ──────────────\n setRepoProgress({\n stage: sourceRepoUrl\n ? 'Forking repository via connected account…'\n : 'Creating GitHub repository via connected account…',\n done: false,\n error: false,\n });\n\n const forkResult = await forkGitHubRepo({\n variables: {\n input: {\n connectionId: gh.connectionId,\n sourceRepoUrl: sourceRepoUrl || undefined,\n repoName: gh.repoName,\n visibility: gh.visibility === 'private' ? 'PRIVATE' : 'PUBLIC',\n scope: gh.scope === 'org' ? 'ORG' : 'USER',\n orgName: gh.orgName || undefined,\n description:\n data.description || `Created from VibeControls template: ${template?.name}`,\n },\n },\n });\n\n const forkData = forkResult.data?.forkVibecontrolsGitHubRepo;\n if (forkData) {\n setRepoProgress({\n stage: forkData.isForked ? 'Repository forked!' : 'Repository created!',\n done: true,\n error: false,\n });\n await updateComponent({\n variables: { id: newId, input: { repositoryUrl: forkData.repoUrl } },\n });\n await new Promise((r) => setTimeout(r, 1200));\n } else {\n setRepoProgress({\n stage: 'GitHub repo creation failed — check your connected account',\n done: false,\n error: true,\n });\n setTimeout(() => setRepoProgress(null), 6000);\n }\n } else {\n // ── PAT path: existing client-side GitHub API flow ──────────────────\n const ghHeaders = {\n Authorization: `Bearer ${gh.token}`,\n 'Content-Type': 'application/json',\n Accept: 'application/vnd.github+json',\n 'X-GitHub-Api-Version': '2022-11-28',\n };\n const apiBase = 'https://api.github.com';\n\n const sourceRepo = sourceRepoUrl ? parseGitHubRepo(sourceRepoUrl) : null;\n let repoData: { html_url: string; full_name: string } | null = null;\n let isForked = false;\n\n if (sourceRepo) {\n setRepoProgress({\n stage: `Forking ${sourceRepo.owner}/${sourceRepo.repo}…`,\n done: false,\n error: false,\n });\n const forkRes = await fetch(\n `${apiBase}/repos/${encodeURIComponent(sourceRepo.owner)}/${encodeURIComponent(sourceRepo.repo)}/forks`,\n {\n method: 'POST',\n headers: ghHeaders,\n body: JSON.stringify({\n name: gh.repoName,\n ...(gh.scope === 'org' ? { organization: gh.orgName } : {}),\n default_branch_only: false,\n }),\n }\n );\n\n if (forkRes.ok) {\n repoData = (await forkRes.json()) as { html_url: string; full_name: string };\n isForked = true;\n } else {\n const forkErr = (await forkRes.json()) as { message?: string };\n setRepoProgress(null);\n setForkNotice(\n `Could not fork ${sourceRepoUrl} (${forkRes.status}: ${forkErr.message ?? forkRes.statusText}) — creating a new empty repository instead.`\n );\n setTimeout(() => setForkNotice(null), 10000);\n }\n }\n\n if (!repoData) {\n setRepoProgress({ stage: 'Creating GitHub repository…', done: false, error: false });\n const createEndpoint =\n gh.scope === 'org'\n ? `${apiBase}/orgs/${encodeURIComponent(gh.orgName)}/repos`\n : `${apiBase}/user/repos`;\n\n const repoRes = await fetch(createEndpoint, {\n method: 'POST',\n headers: ghHeaders,\n body: JSON.stringify({\n name: gh.repoName,\n private: gh.visibility === 'private',\n auto_init: true,\n description:\n data.description || `Created from VibeControls template: ${template?.name}`,\n }),\n });\n\n if (repoRes.ok) {\n repoData = (await repoRes.json()) as { html_url: string; full_name: string };\n } else {\n const errBody = (await repoRes.json()) as { message?: string };\n setRepoProgress({\n stage: `GitHub repo failed: ${errBody.message ?? repoRes.statusText}`,\n done: false,\n error: true,\n });\n setTimeout(() => setRepoProgress(null), 6000);\n }\n }\n\n if (repoData) {\n if (!isForked) {\n setRepoProgress({ stage: 'Scaffolding README…', done: false, error: false });\n await scaffoldGitHubRepo(repoData.full_name, ghHeaders, data, template);\n }\n\n setRepoProgress({\n stage: isForked ? 'Repository forked!' : 'Repository created!',\n done: true,\n error: false,\n });\n await updateComponent({\n variables: { id: newId, input: { repositoryUrl: repoData.html_url } },\n });\n await new Promise((r) => setTimeout(r, 1200));\n setRepoProgress(null);\n } else {\n await new Promise((r) => setTimeout(r, 3000));\n setRepoProgress(null);\n }\n }\n } catch {\n setRepoProgress({\n stage: 'GitHub repo creation failed — check your credentials',\n done: false,\n error: true,\n });\n setTimeout(() => setRepoProgress(null), 6000);\n }\n }\n\n setRepoProgress(null);\n if (newId) {\n navigate(`/components/${newId}`);\n } else {\n setSuccessMessage(tr('template.clonedSuccess', 'Component created — check Components list'));\n setTimeout(() => setSuccessMessage(null), 4000);\n }\n };\n\n const handleDeleteTemplate = async () => {\n if (!id) return;\n setIsDeleting(true);\n try {\n await deleteTemplate({ variables: { id } });\n setShowDeleteConfirm(false);\n navigate('/templates');\n } finally {\n setIsDeleting(false);\n }\n };\n\n // Guard states\n if (loading && !template) {\n return (\n <MotionPage className=\"space-y-6 px-6 lg:px-8 py-6 bg-bg-canvas min-h-screen\">\n <button\n type=\"button\"\n onClick={handleBack}\n className=\"flex items-center gap-2 text-text-secondary hover:text-text-primary transition-colors\"\n >\n <ArrowLeft className=\"size-4\" />\n {tr('template.backToTemplates', 'Back to Templates')}\n </button>\n <PageSkeleton variant=\"detail\" />\n </MotionPage>\n );\n }\n\n if (error && !template) {\n return (\n <MotionPage className=\"space-y-6 px-6 lg:px-8 py-6 bg-bg-canvas min-h-screen\">\n <button\n type=\"button\"\n onClick={handleBack}\n className=\"flex items-center gap-2 text-text-secondary hover:text-text-primary transition-colors\"\n >\n <ArrowLeft className=\"size-4\" />\n {tr('template.backToTemplates', 'Back to Templates')}\n </button>\n <ErrorState\n title={tr('template.failedLoad', 'Failed to load template')}\n message={error.message}\n onRetry={() => refetch()}\n />\n </MotionPage>\n );\n }\n\n if (!template) {\n return (\n <MotionPage className=\"space-y-6 px-6 lg:px-8 py-6 bg-bg-canvas min-h-screen\">\n <button\n type=\"button\"\n onClick={handleBack}\n className=\"flex items-center gap-2 text-text-secondary hover:text-text-primary transition-colors\"\n >\n <ArrowLeft className=\"size-4\" />\n {tr('template.backToTemplates', 'Back to Templates')}\n </button>\n <EmptyState\n icon={<FileCode className=\"size-8 text-text-secondary\" />}\n title={tr('template.notFound', 'Template not found')}\n description={`No template with ID \"${id}\" exists`}\n action={\n <button\n type=\"button\"\n onClick={handleBack}\n className=\"px-4 py-2 bg-action-primary-bg text-action-primary-text rounded-md hover:bg-action-primary-bg-hover transition-colors\"\n >\n {tr('template.backToTemplates', 'Back to Templates')}\n </button>\n }\n />\n </MotionPage>\n );\n }\n\n return (\n <MotionPage className=\"space-y-6 px-6 lg:px-8 py-6 bg-bg-canvas min-h-screen\">\n {/* Success Toast */}\n {successMessage && (\n <div className=\"fixed top-4 left-4 right-4 sm:left-auto z-50 bg-status-success-bg text-status-success-text px-4 py-3 rounded-md shadow-lg\">\n {successMessage}\n </div>\n )}\n {forkNotice && (\n <div className=\"fixed top-4 left-4 right-4 sm:left-auto z-50 bg-status-warning-bg text-status-warning-text px-4 py-3 rounded-md shadow-lg text-sm max-w-sm\">\n {forkNotice}\n </div>\n )}\n {/* Error Toast */}\n {cloneError && (\n <div className=\"fixed top-4 left-4 right-4 sm:left-auto z-50 bg-status-error-bg text-status-error-text px-4 py-3 rounded-md shadow-lg\">\n {cloneError}\n </div>\n )}\n {/* Repo creation progress overlay */}\n {repoProgress && (\n <div\n className=\"fixed inset-0 z-[9999] flex items-center justify-center p-4\"\n style={{ backgroundColor: 'rgba(0,0,0,0.55)' }}\n >\n <div className=\"bg-bg-surface border border-border-default rounded-xl shadow-2xl p-8 flex flex-col items-center gap-4 max-w-xs w-full\">\n {repoProgress.done ? (\n <CheckCircle2 className=\"size-10 text-status-success-text\" />\n ) : repoProgress.error ? (\n <XCircle className=\"size-10 text-status-error-text\" />\n ) : (\n <Loader2 className=\"size-10 text-action-primary-bg animate-spin\" />\n )}\n <p className=\"text-sm font-medium text-text-primary text-center\">\n {repoProgress.stage}\n </p>\n </div>\n </div>\n )}\n\n {/* Back Button */}\n <button\n type=\"button\"\n onClick={handleBack}\n className=\"flex items-center gap-2 text-text-secondary hover:text-text-primary transition-colors\"\n >\n <ArrowLeft className=\"size-4\" />\n {tr('template.backToTemplates', 'Back to Templates')}\n </button>\n\n {/* Header */}\n <PageHeader\n title={template.name}\n description={template.description || tr('template.noDescription', 'No description')}\n actions={\n <div className=\"flex items-center gap-2 flex-wrap\">\n <EntityShareButton\n entity=\"template\"\n resource={{ id: template.id, name: template.name }}\n label={tr('template.share', 'Share')}\n variant=\"button\"\n />\n <button\n type=\"button\"\n onClick={() => refetch()}\n disabled={loading}\n className=\"flex items-center justify-center p-2 bg-bg-sunken text-text-primary rounded-md hover:bg-action-secondary-bg-hover transition-colors disabled:opacity-50\"\n title={tr('common.refresh', 'Refresh')}\n >\n <RefreshCw className={`size-4 ${loading ? 'animate-spin' : ''}`} />\n </button>\n {canCreateTemplate && (\n <button\n type=\"button\"\n onClick={() => setShowWizard(true)}\n className=\"flex items-center gap-2 px-4 py-2 bg-action-primary-bg text-action-primary-text rounded-md hover:bg-action-primary-bg-hover transition-colors\"\n >\n <Copy className=\"size-4\" />\n {tr('template.useTemplate', 'Use Template')}\n </button>\n )}\n {canDeleteTemplate && (\n <button\n type=\"button\"\n data-testid=\"template-delete-button\"\n onClick={() => setShowDeleteConfirm(true)}\n className=\"flex items-center gap-2 px-4 py-2 bg-status-error-bg text-status-error-text rounded-md hover:opacity-90 transition-opacity\"\n aria-label={tr('template.deleteTemplate', 'Delete Template')}\n >\n <Trash2 className=\"size-4\" aria-hidden=\"true\" />\n {tr('common.delete', 'Delete')}\n </button>\n )}\n </div>\n }\n />\n\n {/* Context hint for new users */}\n {canCreateTemplate && (\n <p className=\"text-sm text-text-muted\">\n Click <span className=\"font-medium text-text-secondary\">Use Template</span> to open a\n short wizard — give your new component a name, fill in any variables, and optionally\n create a GitHub repository. The whole thing takes under a minute.\n </p>\n )}\n\n {/* Badges */}\n <div className=\"flex items-center gap-3 flex-wrap\">\n {template.category && (\n <span\n className={`inline-flex items-center gap-1.5 px-2.5 py-1 text-sm font-medium rounded ${categoryStyles[template.category] || 'bg-bg-sunken text-text-secondary'}`}\n >\n <Layers className=\"size-3.5\" />\n {template.category}\n </span>\n )}\n <span className=\"inline-flex items-center gap-1.5 text-sm text-text-secondary\">\n <Copy className=\"size-3.5\" />\n {template.cloneCount} {tr('template.clones', 'clones')}\n </span>\n {template.sourceRepositoryUrl && (\n <a\n href={template.sourceRepositoryUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n onClick={(e) => e.stopPropagation()}\n className=\"inline-flex items-center gap-1.5 text-sm text-action-primary-bg hover:underline\"\n >\n <Github className=\"size-3.5\" />\n {template.sourceRepositoryUrl.replace('https://github.com/', '')}\n </a>\n )}\n <span className=\"inline-flex items-center gap-1.5 text-sm text-text-secondary\">\n <Clock className=\"size-3.5\" />\n {new Date(template.createdAt).toLocaleDateString()}\n </span>\n </div>\n\n {/* Tags */}\n {template.tags?.length > 0 && (\n <div className=\"flex flex-wrap gap-2\">\n {template.tags.map((tag: string) => (\n <span\n key={tag}\n className=\"inline-flex items-center gap-1 px-2.5 py-1 text-sm bg-bg-sunken text-text-secondary rounded-md\"\n >\n <Tag className=\"size-3\" />\n {tag}\n </span>\n ))}\n </div>\n )}\n\n {/* Universal tags */}\n <Card>\n <div className=\"p-4 border-b border-border-default flex items-center gap-2\">\n <Tag className=\"size-5\" />\n <h3 className=\"font-semibold text-text-primary\">{tr('template.tags', 'Tags')}</h3>\n </div>\n <div className=\"p-4\">\n <EntityTagPicker entityType=\"VIBECONTROLS_TEMPLATE\" entityId={template.id} />\n </div>\n </Card>\n\n {/* Source Component */}\n {template.sourceComponent && (\n <Card>\n <div className=\"p-4 border-b border-border-default\">\n <h3 className=\"font-semibold text-text-primary\">\n {tr('template.sourceComponent', 'Source Component')}\n </h3>\n </div>\n <div className=\"p-4\">\n <button\n type=\"button\"\n onClick={() => navigate(`/components/${template.sourceComponent.id}`)}\n className=\"flex items-center gap-3 text-left hover:bg-bg-sunken p-2 -m-2 rounded-md transition-colors\"\n >\n <div className=\"size-10 rounded-lg bg-[var(--color-accent-soft)] flex items-center justify-center flex-shrink-0\">\n <FileCode className=\"size-5 text-action-primary-bg\" />\n </div>\n <div>\n <p className=\"font-medium text-text-primary\">{template.sourceComponent.name}</p>\n <p className=\"text-xs text-text-secondary\">\n {template.sourceComponent.type} &middot; {template.sourceComponent.lifecycle}\n </p>\n </div>\n </button>\n </div>\n </Card>\n )}\n\n {/* Cloned Components */}\n {template.clonedComponents && template.clonedComponents.length > 0 && (\n <Card>\n <div className=\"p-4 border-b border-border-default flex items-center gap-2\">\n <Copy className=\"size-5\" />\n <h3 className=\"font-semibold text-text-primary\">\n {tr('template.createdComponents', 'Created Components')}\n </h3>\n <span className=\"ml-auto text-xs text-text-muted\">\n {template.clonedComponents.length} component\n {template.clonedComponents.length !== 1 ? 's' : ''}\n </span>\n </div>\n <div className=\"divide-y divide-border-default\">\n {template.clonedComponents.map(\n (comp: {\n id: string;\n name: string;\n description?: string | null;\n type: string;\n lifecycle: string;\n repositoryUrl?: string | null;\n createdAt: string;\n }) => (\n <button\n type=\"button\"\n key={comp.id}\n onClick={() => navigate(`/components/${comp.id}`)}\n className=\"flex items-center gap-3 w-full text-left px-4 py-3 hover:bg-bg-sunken transition-colors\"\n >\n <div className=\"size-8 rounded-md bg-[var(--color-accent-soft)] flex items-center justify-center flex-shrink-0\">\n <FileCode className=\"size-4 text-action-primary-bg\" />\n </div>\n <div className=\"flex-1 min-w-0\">\n <p className=\"text-sm font-medium text-text-primary truncate\">{comp.name}</p>\n <p className=\"text-xs text-text-secondary\">\n {comp.type} &middot; {comp.lifecycle}\n {comp.repositoryUrl && (\n <>\n {' '}\n &middot;{' '}\n <span className=\"font-mono\">\n {comp.repositoryUrl.replace('https://github.com/', '')}\n </span>\n </>\n )}\n </p>\n </div>\n <span className=\"text-xs text-text-muted flex-shrink-0\">\n {new Date(comp.createdAt).toLocaleDateString()}\n </span>\n </button>\n )\n )}\n </div>\n </Card>\n )}\n\n {/* Variables preview */}\n {Array.isArray(template.variables) &&\n (template.variables as TemplateVariable[]).length > 0 && (\n <Card>\n <div className=\"p-4 border-b border-border-default flex items-center gap-2\">\n <Variable className=\"size-5\" />\n <h3 className=\"font-semibold text-text-primary\">\n {tr('template.variables', 'Template Variables')}\n </h3>\n <span className=\"ml-auto text-xs text-text-muted\">\n {(template.variables as TemplateVariable[]).length} variable\n {(template.variables as TemplateVariable[]).length !== 1 ? 's' : ''}\n </span>\n </div>\n <div className=\"divide-y divide-border-default\">\n {(template.variables as TemplateVariable[]).map((v) => (\n <div key={v.name} className=\"px-4 py-3 flex items-start gap-4\">\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm font-medium text-text-primary font-mono\">\n {v.name}\n </span>\n {v.required && (\n <span className=\"text-xs bg-status-error-bg text-status-error-text px-1.5 py-0.5 rounded\">\n required\n </span>\n )}\n <span className=\"text-xs bg-bg-sunken text-text-muted px-1.5 py-0.5 rounded\">\n {v.type}\n </span>\n </div>\n {v.title && v.title !== v.name && (\n <p className=\"text-xs text-text-secondary mt-0.5\">{v.title}</p>\n )}\n {v.default && (\n <p className=\"text-xs text-text-muted mt-0.5\">\n Default: <span className=\"font-mono\">{v.default}</span>\n </p>\n )}\n </div>\n {v.options.length > 0 && (\n <div className=\"flex flex-wrap gap-1\">\n {v.options.map((opt) => (\n <span\n key={opt}\n className=\"text-xs bg-bg-sunken text-text-secondary px-1.5 py-0.5 rounded\"\n >\n {opt}\n </span>\n ))}\n </div>\n )}\n </div>\n ))}\n </div>\n </Card>\n )}\n\n {/* Setup Instructions */}\n {template.setupInstructions && (\n <Card>\n <div className=\"p-4 border-b border-border-default\">\n <h3 className=\"font-semibold text-text-primary\">\n {tr('template.setupInstructions', 'Setup Instructions')}\n </h3>\n </div>\n <div className=\"p-4\">\n <div className=\"prose prose-sm max-w-none text-text-primary\">\n <pre className=\"bg-bg-sunken rounded-md p-4 text-xs sm:text-sm overflow-x-auto whitespace-pre-wrap font-mono text-text-primary\">\n {template.setupInstructions}\n </pre>\n </div>\n </div>\n </Card>\n )}\n\n {/* File Tree */}\n {template.fileTree && (\n <Card>\n <div className=\"p-4 border-b border-border-default\">\n <h3 className=\"font-semibold text-text-primary flex items-center gap-2\">\n <FolderTree className=\"size-5\" />\n {tr('template.fileTree', 'File Tree')}\n </h3>\n </div>\n <div className=\"p-4\">\n <pre className=\"bg-bg-sunken rounded-md p-4 text-xs sm:text-sm overflow-x-auto font-mono text-text-primary\">\n {typeof template.fileTree === 'string'\n ? template.fileTree\n : JSON.stringify(template.fileTree, null, 2)}\n </pre>\n </div>\n </Card>\n )}\n\n {showWizard && canCreateTemplate && (\n <TemplateWizard\n templateName={template.name}\n variables={\n Array.isArray(template.variables) ? (template.variables as TemplateVariable[]) : []\n }\n sourceRepoUrl={\n template.sourceRepositoryUrl ||\n ((template.componentSnapshot as Record<string, unknown> | null)\n ?.repositoryUrl as string) ||\n template.sourceComponent?.repositoryUrl ||\n null\n }\n githubConnections={githubConnections}\n onClose={() => setShowWizard(false)}\n onSubmit={handleClone}\n />\n )}\n\n <QuotaExhaustedDialog\n isOpen={showQuotaExhausted}\n onClose={() => setShowQuotaExhausted(false)}\n onConfirm={() => {\n setShowQuotaExhausted(false);\n navigate('/billing/plans');\n }}\n title=\"Component Quota Reached\"\n message=\"You've reached the maximum number of components on your current plan. Upgrade your plan or purchase an add-on to create more components.\"\n />\n\n <ConfirmDialog\n isOpen={showDeleteConfirm}\n onClose={() => setShowDeleteConfirm(false)}\n onConfirm={handleDeleteTemplate}\n title={tr('template.deleteTemplate', 'Delete Template')}\n message={tr(\n 'template.deleteConfirmMessage',\n `Are you sure you want to delete template \"${template.name}\"? Existing instantiated components are unaffected, but the template will no longer be available for cloning. This cannot be undone.`\n )}\n confirmLabel={tr('common.delete', 'Delete')}\n variant=\"danger\"\n isLoading={isDeleting}\n />\n </MotionPage>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AA8CA,SAAS,EAAe,GAAc,GAAuC;AAC3E,QAAO,EAAK,QAAQ,6BAA6B,GAAQ,GAAG,MAAM;EAChE,IAAM,IAAM,KAAK;AACjB,SAAO,KAAO,IAAO,OAAO,EAAK,GAAK,GAAG;GACzC;;AAGJ,SAAS,GAAgB,GAAqD;AAC5E,KAAI;EACF,IAAM,IAAQ,EAAI,MAAM,iEAAiE;AAEzF,SADK,IACE;GAAE,OAAO,EAAM;GAAI,MAAM,EAAM;GAAI,GADvB;SAEb;AACN,SAAO;;;AAIX,eAAe,GACb,GACA,GACA,GAKA,GAOA;AACA,KAAI,CAAC,EAAU;CAEf,IAAM,IAAO,EAAK,gBACZ,IAAe,MAAM,QAAQ,EAAS,UAAU,GACjD,EAAS,YACV,EAAE,EAGA,IAAkB,EAAE;AAW1B,KAVA,EAAM,KAAK,KAAK,EAAK,OAAO,EAC5B,EAAM,KAAK,GAAG,EACV,EAAK,gBACP,EAAM,KAAK,EAAK,YAAY,EAC5B,EAAM,KAAK,GAAG,GAEhB,EAAM,KAAK,8CAA8C,EAAS,KAAK,IAAI,EAC3E,EAAM,KAAK,GAAG,EAGV,EAAa,SAAS,KAAK,OAAO,KAAK,EAAK,CAAC,SAAS,GAAG;AAI3D,EAHA,EAAM,KAAK,mBAAmB,EAC9B,EAAM,KAAK,GAAG,EACd,EAAM,KAAK,uBAAuB,EAClC,EAAM,KAAK,uBAAuB;AAClC,OAAK,IAAM,KAAK,GAAc;GAC5B,IAAM,IAAM,EAAK,EAAE;AACnB,GAAI,MAAQ,KAAA,KACV,EAAM,KAAK,KAAK,EAAE,SAAS,EAAE,KAAK,OAAO,OAAO,EAAI,CAAC,MAAM;;AAG/D,IAAM,KAAK,GAAG;;AAYhB,CARI,EAAS,sBACX,EAAM,KAAK,qBAAqB,EAChC,EAAM,KAAK,GAAG,EACd,EAAM,KAAK,EAAe,EAAS,mBAAmB,EAAK,CAAC,EAC5D,EAAM,KAAK,GAAG,GAIZ,EAAS,aACX,EAAM,KAAK,uBAAuB,EAClC,EAAM,KAAK,GAAG,EACd,EAAM,KAAK,MAAM,EACjB,EAAM,KACJ,OAAO,EAAS,YAAa,WACzB,EAAS,WACT,KAAK,UAAU,EAAS,UAAU,MAAM,EAAE,CAC/C,EACD,EAAM,KAAK,MAAM,EACjB,EAAM,KAAK,GAAG;CAGhB,IAAM,IAAgB,EAAM,KAAK,KAAK,EAGhC,IAAW,MAAM,MAAM,gCAAgC,EAAS,sBAAsB,EAC1F,YACD,CAAC,EACE;AAkBJ,KAjBI,EAAS,OAEX,KADsB,MAAM,EAAS,MAAM,EACxB,MAIrB,MAAM,MAAM,gCAAgC,EAAS,sBAAsB;EACzE,QAAQ;EACR;EACA,MAAM,KAAK,UAAU;GACnB,SAAS,+CAA+C,EAAS,KAAK;GACtE,SAAS,KAAK,SAAS,mBAAmB,EAAc,CAAC,CAAC;GAC1D,GAAI,IAAM,EAAE,QAAK,GAAG,EAAE;GACvB,CAAC;EACH,CAAC,EAGE,EAAS,qBAAsB,EAAa,SAAS,KAAK,OAAO,KAAK,EAAK,CAAC,SAAS,GAAI;EAC3F,IAAM,IAAoB,CAAC,qBAAqB,GAAG;AAQnD,MANI,EAAS,sBACX,EAAQ,KAAK,EAAe,EAAS,mBAAmB,EAAK,CAAC,EAC9D,EAAQ,KAAK,GAAG,GAId,EAAa,SAAS,KAAK,OAAO,KAAK,EAAK,CAAC,SAAS,GAAG;AAM3D,GALA,EAAQ,KAAK,MAAM,EACnB,EAAQ,KAAK,GAAG,EAChB,EAAQ,KAAK,8BAA8B,EAC3C,EAAQ,KAAK,GAAG,EAChB,EAAQ,KAAK,6DAA6D,EAC1E,EAAQ,KAAK,GAAG;AAChB,QAAK,IAAM,KAAK,GAAc;IAC5B,IAAM,IAAM,EAAK,EAAE;AACnB,IAAI,MAAQ,KAAA,KAAa,MAAQ,OAC/B,EAAQ,KAAK,KAAK,EAAE,SAAS,EAAE,KAAK,IAAI,EACxC,EAAQ,KAAK,GAAG,EAChB,EAAQ,KAAK,MAAM,EACnB,EAAQ,KAAK,OAAO,EAAI,CAAC,EACzB,EAAQ,KAAK,MAAM,EACnB,EAAQ,KAAK,GAAG;;;AAKtB,QAAM,MAAM,gCAAgC,EAAS,+BAA+B;GAClF,QAAQ;GACR;GACA,MAAM,KAAK,UAAU;IACnB,SAAS;IACT,SAAS,KAAK,SAAS,mBAAmB,EAAQ,KAAK,KAAK,CAAC,CAAC,CAAC;IAChE,CAAC;GACH,CAAC;;;AAIN,IAAM,KAAyC;CAC7C,SAAS;CACT,cAAc;CACd,UAAU;CACV,SAAS;CACT,WAAW;CACX,gBAAgB;CAChB,SAAS;CACT,QAAQ;CACT;AAED,SAAgB,IAAqB;CACnC,IAAM,EAAE,SAAM,GAAS,EACjB,EAAE,UAAO,IAA2B,EACpC,IAAW,GAAiB,EAC5B,EAAE,kBAAe,WAAW,MAAuB,IAAgB,EACnE,IAAkB,EAAc,EAAiB,cAAc,EAG/D,IAAoB,EAAc,EAAiB,gBAAgB,EACnE,IAAoB,EAAc,EAAiB,gBAAgB,EACnE,IAA+B,EAAc,EAAiB,4BAA4B,EAE1F,IAAK,IACR,GAAa,MAA6B;EACzC,IAAM,IAAQ,EAAE,EAAI;AACpB,SAAO,MAAU,IAAM,IAAW;IAEpC,CAAC,EAAE,CACJ,EAEK,CAAC,GAAY,KAAiB,EAAS,GAAM,EAC7C,CAAC,IAAoB,KAAyB,EAAS,GAAM,EAC7D,CAAC,IAAmB,KAAwB,EAAS,GAAM,EAC3D,CAAC,IAAY,KAAiB,EAAS,GAAM,EAC7C,CAAC,GAAgB,KAAqB,EAAwB,KAAK,EACnE,CAAC,GAAY,MAAiB,EAAwB,KAAK,EAC3D,CAAC,GAAY,KAAiB,EAAwB,KAAK,EAC3D,CAAC,GAAc,KAAmB,EAI9B,KAAK,EAET,EAAE,UAAM,YAAS,UAAO,eAAY,EAAoB;EAC5D,WAAW,EAAE,IAAI,KAAM,IAAI;EAC3B,MAAM,CAAC,KAAM,KAAsB,CAAC;EACpC,aAAa;EACd,CAAC,EAEI,CAAC,MAAuB,EAA+B,EAC3D,gBAAgB,CAAC,iBAAiB,EACnC,CAAC,EACI,CAAC,MAAkB,EAA0B,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,CAAC,EACnF,CAAC,KAAmB,GAA4B,EAChD,CAAC,MAAkB,GAA2B,EAG9C,EAAE,MAAM,OAAoB,EAA8B;EAC9D,WAAW;GAAE,QAAQ,EAAE,QAAQ,UAAmB;GAAE,YAAY;IAAE,OAAO;IAAI,QAAQ;IAAG;GAAE;EAC1F,aAAa;EACb,MAAM,CAAC,KAAqB,CAAC;EAC9B,CAAC,EACI,MAAyC,IAAiB,gBAAgB,SAAS,EAAE,EACxF,QAAQ,MAA8C,EAAE,UAAU,QAAQ,SAAS,CACnF,KACE,OAMM;EACL,IAAI,EAAE;EACN,MAAM,EAAE;EACR,sBAAsB,EAAE;EACxB,qBAAqB,EAAE;EACvB,UAAU;GAAE,KAAK,EAAE,SAAS;GAAK,MAAM,EAAE,SAAS;GAAM;EACzD,EACF,EAEG,IAAW,IAAM,wBAAwB;AAE/C,KAAI,EACF,QACE,kBAAC,OAAD;EAAK,WAAU;YACb,kBAAC,KAAD;GAAG,WAAU;aAAsB;GAAwB,CAAA;EACvD,CAAA;AAEV,KAAI,CAAC,EACH,QACE,kBAAC,OAAD;EAAK,WAAU;YACb,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,MAAD;IAAI,WAAU;cAA0C;IAAkB,CAAA,EAC1E,kBAAC,KAAD;IAAG,WAAU;cAA8B;IAEvC,CAAA,CACA;;EACF,CAAA;CAGV,IAAM,UAAmB;AACvB,IAAS,aAAa;;AAiSxB,QAjEI,KAAW,CAAC,IAEZ,kBAAC,GAAD;EAAY,WAAU;YAAtB,CACE,kBAAC,UAAD;GACE,MAAK;GACL,SAAS;GACT,WAAU;aAHZ,CAKE,kBAAC,GAAD,EAAW,WAAU,UAAW,CAAA,EAC/B,EAAG,4BAA4B,oBAAoB,CAC7C;MACT,kBAAC,IAAD,EAAc,SAAQ,UAAW,CAAA,CACtB;MAIb,KAAS,CAAC,IAEV,kBAAC,GAAD;EAAY,WAAU;YAAtB,CACE,kBAAC,UAAD;GACE,MAAK;GACL,SAAS;GACT,WAAU;aAHZ,CAKE,kBAAC,GAAD,EAAW,WAAU,UAAW,CAAA,EAC/B,EAAG,4BAA4B,oBAAoB,CAC7C;MACT,kBAAC,IAAD;GACE,OAAO,EAAG,uBAAuB,0BAA0B;GAC3D,SAAS,EAAM;GACf,eAAe,GAAS;GACxB,CAAA,CACS;MAIZ,IA8BH,kBAAC,GAAD;EAAY,WAAU;YAAtB;GAEG,KACC,kBAAC,OAAD;IAAK,WAAU;cACZ;IACG,CAAA;GAEP,KACC,kBAAC,OAAD;IAAK,WAAU;cACZ;IACG,CAAA;GAGP,KACC,kBAAC,OAAD;IAAK,WAAU;cACZ;IACG,CAAA;GAGP,KACC,kBAAC,OAAD;IACE,WAAU;IACV,OAAO,EAAE,iBAAiB,oBAAoB;cAE9C,kBAAC,OAAD;KAAK,WAAU;eAAf,CACG,EAAa,OACZ,kBAAC,IAAD,EAAc,WAAU,oCAAqC,CAAA,GAC3D,EAAa,QACf,kBAAC,IAAD,EAAS,WAAU,kCAAmC,CAAA,GAEtD,kBAAC,IAAD,EAAS,WAAU,+CAAgD,CAAA,EAErE,kBAAC,KAAD;MAAG,WAAU;gBACV,EAAa;MACZ,CAAA,CACA;;IACF,CAAA;GAIR,kBAAC,UAAD;IACE,MAAK;IACL,SAAS;IACT,WAAU;cAHZ,CAKE,kBAAC,GAAD,EAAW,WAAU,UAAW,CAAA,EAC/B,EAAG,4BAA4B,oBAAoB,CAC7C;;GAGT,kBAAC,IAAD;IACE,OAAO,EAAS;IAChB,aAAa,EAAS,eAAe,EAAG,0BAA0B,iBAAiB;IACnF,SACE,kBAAC,OAAD;KAAK,WAAU;eAAf;MACE,kBAAC,IAAD;OACE,QAAO;OACP,UAAU;QAAE,IAAI,EAAS;QAAI,MAAM,EAAS;QAAM;OAClD,OAAO,EAAG,kBAAkB,QAAQ;OACpC,SAAQ;OACR,CAAA;MACF,kBAAC,UAAD;OACE,MAAK;OACL,eAAe,GAAS;OACxB,UAAU;OACV,WAAU;OACV,OAAO,EAAG,kBAAkB,UAAU;iBAEtC,kBAAC,IAAD,EAAW,WAAW,UAAU,IAAU,iBAAiB,MAAQ,CAAA;OAC5D,CAAA;MACR,KACC,kBAAC,UAAD;OACE,MAAK;OACL,eAAe,EAAc,GAAK;OAClC,WAAU;iBAHZ,CAKE,kBAAC,GAAD,EAAM,WAAU,UAAW,CAAA,EAC1B,EAAG,wBAAwB,eAAe,CACpC;;MAEV,KACC,kBAAC,UAAD;OACE,MAAK;OACL,eAAY;OACZ,eAAe,EAAqB,GAAK;OACzC,WAAU;OACV,cAAY,EAAG,2BAA2B,kBAAkB;iBAL9D,CAOE,kBAAC,IAAD;QAAQ,WAAU;QAAS,eAAY;QAAS,CAAA,EAC/C,EAAG,iBAAiB,SAAS,CACvB;;MAEP;;IAER,CAAA;GAGD,KACC,kBAAC,KAAD;IAAG,WAAU;cAAb;KAAuC;KAC/B,kBAAC,QAAD;MAAM,WAAU;gBAAkC;MAAmB,CAAA;;KAGzE;;GAIN,kBAAC,OAAD;IAAK,WAAU;cAAf;KACG,EAAS,YACR,kBAAC,QAAD;MACE,WAAW,4EAA4E,GAAe,EAAS,aAAa;gBAD9H,CAGE,kBAAC,GAAD,EAAQ,WAAU,YAAa,CAAA,EAC9B,EAAS,SACL;;KAET,kBAAC,QAAD;MAAM,WAAU;gBAAhB;OACE,kBAAC,GAAD,EAAM,WAAU,YAAa,CAAA;OAC5B,EAAS;OAAW;OAAE,EAAG,mBAAmB,SAAS;OACjD;;KACN,EAAS,uBACR,kBAAC,KAAD;MACE,MAAM,EAAS;MACf,QAAO;MACP,KAAI;MACJ,UAAU,MAAM,EAAE,iBAAiB;MACnC,WAAU;gBALZ,CAOE,kBAAC,GAAD,EAAQ,WAAU,YAAa,CAAA,EAC9B,EAAS,oBAAoB,QAAQ,uBAAuB,GAAG,CAC9D;;KAEN,kBAAC,QAAD;MAAM,WAAU;gBAAhB,CACE,kBAAC,IAAD,EAAO,WAAU,YAAa,CAAA,EAC7B,IAAI,KAAK,EAAS,UAAU,CAAC,oBAAoB,CAC7C;;KACH;;GAGL,EAAS,MAAM,SAAS,KACvB,kBAAC,OAAD;IAAK,WAAU;cACZ,EAAS,KAAK,KAAK,MAClB,kBAAC,QAAD;KAEE,WAAU;eAFZ,CAIE,kBAAC,GAAD,EAAK,WAAU,UAAW,CAAA,EACzB,EACI;OALA,EAKA,CACP;IACE,CAAA;GAIR,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,GAAD,EAAK,WAAU,UAAW,CAAA,EAC1B,kBAAC,MAAD;KAAI,WAAU;eAAmC,EAAG,iBAAiB,OAAO;KAAM,CAAA,CAC9E;OACN,kBAAC,OAAD;IAAK,WAAU;cACb,kBAAC,GAAD;KAAiB,YAAW;KAAwB,UAAU,EAAS;KAAM,CAAA;IACzE,CAAA,CACD,EAAA,CAAA;GAGN,EAAS,mBACR,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,OAAD;IAAK,WAAU;cACb,kBAAC,MAAD;KAAI,WAAU;eACX,EAAG,4BAA4B,mBAAmB;KAChD,CAAA;IACD,CAAA,EACN,kBAAC,OAAD;IAAK,WAAU;cACb,kBAAC,UAAD;KACE,MAAK;KACL,eAAe,EAAS,eAAe,EAAS,gBAAgB,KAAK;KACrE,WAAU;eAHZ,CAKE,kBAAC,OAAD;MAAK,WAAU;gBACb,kBAAC,GAAD,EAAU,WAAU,iCAAkC,CAAA;MAClD,CAAA,EACN,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;MAAG,WAAU;gBAAiC,EAAS,gBAAgB;MAAS,CAAA,EAChF,kBAAC,KAAD;MAAG,WAAU;gBAAb;OACG,EAAS,gBAAgB;OAAK;OAAW,EAAS,gBAAgB;OACjE;QACA,EAAA,CAAA,CACC;;IACL,CAAA,CACD,EAAA,CAAA;GAIR,EAAS,oBAAoB,EAAS,iBAAiB,SAAS,KAC/D,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,OAAD;IAAK,WAAU;cAAf;KACE,kBAAC,GAAD,EAAM,WAAU,UAAW,CAAA;KAC3B,kBAAC,MAAD;MAAI,WAAU;gBACX,EAAG,8BAA8B,qBAAqB;MACpD,CAAA;KACL,kBAAC,QAAD;MAAM,WAAU;gBAAhB;OACG,EAAS,iBAAiB;OAAO;OACjC,EAAS,iBAAiB,WAAW,IAAU,KAAN;OACrC;;KACH;OACN,kBAAC,OAAD;IAAK,WAAU;cACZ,EAAS,iBAAiB,KACxB,MASC,kBAAC,UAAD;KACE,MAAK;KAEL,eAAe,EAAS,eAAe,EAAK,KAAK;KACjD,WAAU;eAJZ;MAME,kBAAC,OAAD;OAAK,WAAU;iBACb,kBAAC,GAAD,EAAU,WAAU,iCAAkC,CAAA;OAClD,CAAA;MACN,kBAAC,OAAD;OAAK,WAAU;iBAAf,CACE,kBAAC,KAAD;QAAG,WAAU;kBAAkD,EAAK;QAAS,CAAA,EAC7E,kBAAC,KAAD;QAAG,WAAU;kBAAb;SACG,EAAK;SAAK;SAAW,EAAK;SAC1B,EAAK,iBACJ,kBAAA,IAAA,EAAA,UAAA;UACG;UAAI;UACI;UACT,kBAAC,QAAD;WAAM,WAAU;qBACb,EAAK,cAAc,QAAQ,uBAAuB,GAAG;WACjD,CAAA;UACN,EAAA,CAAA;SAEH;UACA;;MACN,kBAAC,QAAD;OAAM,WAAU;iBACb,IAAI,KAAK,EAAK,UAAU,CAAC,oBAAoB;OACzC,CAAA;MACA;OAzBF,EAAK,GAyBH,CAEZ;IACG,CAAA,CACD,EAAA,CAAA;GAIR,MAAM,QAAQ,EAAS,UAAU,IAC/B,EAAS,UAAiC,SAAS,KAClD,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,OAAD;IAAK,WAAU;cAAf;KACE,kBAAC,IAAD,EAAU,WAAU,UAAW,CAAA;KAC/B,kBAAC,MAAD;MAAI,WAAU;gBACX,EAAG,sBAAsB,qBAAqB;MAC5C,CAAA;KACL,kBAAC,QAAD;MAAM,WAAU;gBAAhB;OACI,EAAS,UAAiC;OAAO;OACjD,EAAS,UAAiC,WAAW,IAAU,KAAN;OACtD;;KACH;OACN,kBAAC,OAAD;IAAK,WAAU;cACX,EAAS,UAAiC,KAAK,MAC/C,kBAAC,OAAD;KAAkB,WAAU;eAA5B,CACE,kBAAC,OAAD;MAAK,WAAU;gBAAf;OACE,kBAAC,OAAD;QAAK,WAAU;kBAAf;SACE,kBAAC,QAAD;UAAM,WAAU;oBACb,EAAE;UACE,CAAA;SACN,EAAE,YACD,kBAAC,QAAD;UAAM,WAAU;oBAA0E;UAEnF,CAAA;SAET,kBAAC,QAAD;UAAM,WAAU;oBACb,EAAE;UACE,CAAA;SACH;;OACL,EAAE,SAAS,EAAE,UAAU,EAAE,QACxB,kBAAC,KAAD;QAAG,WAAU;kBAAsC,EAAE;QAAU,CAAA;OAEhE,EAAE,WACD,kBAAC,KAAD;QAAG,WAAU;kBAAb,CAA8C,aACnC,kBAAC,QAAD;SAAM,WAAU;mBAAa,EAAE;SAAe,CAAA,CACrD;;OAEF;SACL,EAAE,QAAQ,SAAS,KAClB,kBAAC,OAAD;MAAK,WAAU;gBACZ,EAAE,QAAQ,KAAK,MACd,kBAAC,QAAD;OAEE,WAAU;iBAET;OACI,EAJA,EAIA,CACP;MACE,CAAA,CAEJ;OApCI,EAAE,KAoCN,CACN;IACE,CAAA,CACD,EAAA,CAAA;GAIV,EAAS,qBACR,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,OAAD;IAAK,WAAU;cACb,kBAAC,MAAD;KAAI,WAAU;eACX,EAAG,8BAA8B,qBAAqB;KACpD,CAAA;IACD,CAAA,EACN,kBAAC,OAAD;IAAK,WAAU;cACb,kBAAC,OAAD;KAAK,WAAU;eACb,kBAAC,OAAD;MAAK,WAAU;gBACZ,EAAS;MACN,CAAA;KACF,CAAA;IACF,CAAA,CACD,EAAA,CAAA;GAIR,EAAS,YACR,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,OAAD;IAAK,WAAU;cACb,kBAAC,MAAD;KAAI,WAAU;eAAd,CACE,kBAAC,GAAD,EAAY,WAAU,UAAW,CAAA,EAChC,EAAG,qBAAqB,YAAY,CAClC;;IACD,CAAA,EACN,kBAAC,OAAD;IAAK,WAAU;cACb,kBAAC,OAAD;KAAK,WAAU;eACZ,OAAO,EAAS,YAAa,WAC1B,EAAS,WACT,KAAK,UAAU,EAAS,UAAU,MAAM,EAAE;KAC1C,CAAA;IACF,CAAA,CACD,EAAA,CAAA;GAGR,KAAc,KACb,kBAAC,IAAD;IACE,cAAc,EAAS;IACvB,WACE,MAAM,QAAQ,EAAS,UAAU,GAAI,EAAS,YAAmC,EAAE;IAErF,eACE,EAAS,uBACP,EAAS,mBACP,iBACJ,EAAS,iBAAiB,iBAC1B;IAEiB;IACnB,eAAe,EAAc,GAAM;IACnC,UAtoBY,OAAO,MAKrB;AACJ,SAAI,CAAC,EAAmB;AAGxB,KADA,EAAc,GAAM,EACpB,EAAgB;MAAE,OAAO;MAAuB,MAAM;MAAO,OAAO;MAAO,CAAC;KAE5E,IAAM,IAAS,MAAM,GAAoB,EACvC,WAAW;MACT,YAAY;MACZ,OAAO;OACL,MAAM,EAAK;OACX,aAAa,EAAK,eAAe,KAAA;OACjC,GAAI,OAAO,KAAK,EAAK,eAAe,CAAC,SAAS,KAAK,EACjD,gBAAgB,EAAK,gBACtB;OACF;MACF,EACF,CAAC;AACF,SAAI,EAAO,SAAS,EAAsB,EAAO,MAAM,EAAE;AAEvD,MADA,EAAgB,KAAK,EACrB,EAAsB,GAAK;AAC3B;;KAEF,IAAM,IAAQ,EAAO,MAAM,iCAAiC;AAG5D,SAAI,KAAS,EAAK,cAAc,SAAS;AAEvC,YAAM,EAAgB,EAAE,WAAW;OAAE,IAAI;OAAO,OAAO,EAAE,eAAe,MAAM;OAAE,EAAE,CAAC;MACnF,IAAM,IAAK,EAAK,cAGV,IAAmB,GAAU,mBAC/B,eACE,IACJ,GAAU,uBACV,KACA,GAAU,iBAAiB,iBAC3B,KAAA;AAEF,UAAI;AACF,WAAI,EAAG,cAAc;AAEnB,UAAgB;SACd,OAAO,IACH,8CACA;SACJ,MAAM;SACN,OAAO;SACR,CAAC;QAiBF,IAAM,KAfa,MAAM,GAAe,EACtC,WAAW,EACT,OAAO;SACL,cAAc,EAAG;SACjB,eAAe,KAAiB,KAAA;SAChC,UAAU,EAAG;SACb,YAAY,EAAG,eAAe,YAAY,YAAY;SACtD,OAAO,EAAG,UAAU,QAAQ,QAAQ;SACpC,SAAS,EAAG,WAAW,KAAA;SACvB,aACE,EAAK,eAAe,uCAAuC,GAAU;SACxE,EACF,EACF,CAAC,EAE0B,MAAM;AAClC,QAAI,KACF,EAAgB;SACd,OAAO,EAAS,WAAW,uBAAuB;SAClD,MAAM;SACN,OAAO;SACR,CAAC,EACF,MAAM,EAAgB,EACpB,WAAW;SAAE,IAAI;SAAO,OAAO,EAAE,eAAe,EAAS,SAAS;SAAE,EACrE,CAAC,EACF,MAAM,IAAI,SAAS,MAAM,WAAW,GAAG,KAAK,CAAC,KAE7C,EAAgB;SACd,OAAO;SACP,MAAM;SACN,OAAO;SACR,CAAC,EACF,iBAAiB,EAAgB,KAAK,EAAE,IAAK;cAE1C;QAEL,IAAM,IAAY;SAChB,eAAe,UAAU,EAAG;SAC5B,gBAAgB;SAChB,QAAQ;SACR,wBAAwB;SACzB,EACK,IAAU,0BAEV,IAAa,IAAgB,GAAgB,EAAc,GAAG,MAChE,IAA2D,MAC3D,IAAW;AAEf,YAAI,GAAY;AACd,WAAgB;UACd,OAAO,WAAW,EAAW,MAAM,GAAG,EAAW,KAAK;UACtD,MAAM;UACN,OAAO;UACR,CAAC;SACF,IAAM,IAAU,MAAM,MACpB,GAAG,EAAQ,SAAS,mBAAmB,EAAW,MAAM,CAAC,GAAG,mBAAmB,EAAW,KAAK,CAAC,SAChG;UACE,QAAQ;UACR,SAAS;UACT,MAAM,KAAK,UAAU;WACnB,MAAM,EAAG;WACT,GAAI,EAAG,UAAU,QAAQ,EAAE,cAAc,EAAG,SAAS,GAAG,EAAE;WAC1D,qBAAqB;WACtB,CAAC;UACH,CACF;AAED,aAAI,EAAQ,GAEV,CADA,IAAY,MAAM,EAAQ,MAAM,EAChC,IAAW;cACN;UACL,IAAM,IAAW,MAAM,EAAQ,MAAM;AAKrC,UAJA,EAAgB,KAAK,EACrB,EACE,kBAAkB,EAAc,IAAI,EAAQ,OAAO,IAAI,EAAQ,WAAW,EAAQ,WAAW,8CAC9F,EACD,iBAAiB,EAAc,KAAK,EAAE,IAAM;;;AAIhD,YAAI,CAAC,GAAU;AACb,WAAgB;UAAE,OAAO;UAA+B,MAAM;UAAO,OAAO;UAAO,CAAC;SACpF,IAAM,IACJ,EAAG,UAAU,QACT,GAAG,EAAQ,QAAQ,mBAAmB,EAAG,QAAQ,CAAC,UAClD,GAAG,EAAQ,cAEX,IAAU,MAAM,MAAM,GAAgB;UAC1C,QAAQ;UACR,SAAS;UACT,MAAM,KAAK,UAAU;WACnB,MAAM,EAAG;WACT,SAAS,EAAG,eAAe;WAC3B,WAAW;WACX,aACE,EAAK,eAAe,uCAAuC,GAAU;WACxE,CAAC;UACH,CAAC;AAEF,SAAI,EAAQ,KACV,IAAY,MAAM,EAAQ,MAAM,IAGhC,EAAgB;UACd,OAAO,wBAFQ,MAAM,EAAQ,MAAM,EAEG,WAAW,EAAQ;UACzD,MAAM;UACN,OAAO;UACR,CAAC,EACF,iBAAiB,EAAgB,KAAK,EAAE,IAAK;;AAIjD,QAAI,KACG,MACH,EAAgB;SAAE,OAAO;SAAuB,MAAM;SAAO,OAAO;SAAO,CAAC,EAC5E,MAAM,GAAmB,EAAS,WAAW,GAAW,GAAM,EAAS,GAGzE,EAAgB;SACd,OAAO,IAAW,uBAAuB;SACzC,MAAM;SACN,OAAO;SACR,CAAC,EACF,MAAM,EAAgB,EACpB,WAAW;SAAE,IAAI;SAAO,OAAO,EAAE,eAAe,EAAS,UAAU;SAAE,EACtE,CAAC,EACF,MAAM,IAAI,SAAS,MAAM,WAAW,GAAG,KAAK,CAAC,EAC7C,EAAgB,KAAK,KAErB,MAAM,IAAI,SAAS,MAAM,WAAW,GAAG,IAAK,CAAC,EAC7C,EAAgB,KAAK;;cAGnB;AAMN,OALA,EAAgB;QACd,OAAO;QACP,MAAM;QACN,OAAO;QACR,CAAC,EACF,iBAAiB,EAAgB,KAAK,EAAE,IAAK;;;AAKjD,KADA,EAAgB,KAAK,EACjB,IACF,EAAS,eAAe,IAAQ,IAEhC,EAAkB,EAAG,0BAA0B,4CAA4C,CAAC,EAC5F,iBAAiB,EAAkB,KAAK,EAAE,IAAK;;IA2b3C,CAAA;GAGJ,kBAAC,GAAD;IACE,QAAQ;IACR,eAAe,EAAsB,GAAM;IAC3C,iBAAiB;AAEf,KADA,EAAsB,GAAM,EAC5B,EAAS,iBAAiB;;IAE5B,OAAM;IACN,SAAQ;IACR,CAAA;GAEF,kBAAC,GAAD;IACE,QAAQ;IACR,eAAe,EAAqB,GAAM;IAC1C,WAxcuB,YAAY;AAClC,YACL;QAAc,GAAK;AACnB,UAAI;AAGF,OAFA,MAAM,GAAe,EAAE,WAAW,EAAE,OAAI,EAAE,CAAC,EAC3C,EAAqB,GAAM,EAC3B,EAAS,aAAa;gBACd;AACR,SAAc,GAAM;;;;IAiclB,OAAO,EAAG,2BAA2B,kBAAkB;IACvD,SAAS,EACP,iCACA,6CAA6C,EAAS,KAAK,sIAC5D;IACD,cAAc,EAAG,iBAAiB,SAAS;IAC3C,SAAQ;IACR,WAAW;IACX,CAAA;GACS;MA/ZX,kBAAC,GAAD;EAAY,WAAU;YAAtB,CACE,kBAAC,UAAD;GACE,MAAK;GACL,SAAS;GACT,WAAU;aAHZ,CAKE,kBAAC,GAAD,EAAW,WAAU,UAAW,CAAA,EAC/B,EAAG,4BAA4B,oBAAoB,CAC7C;MACT,kBAAC,GAAD;GACE,MAAM,kBAAC,GAAD,EAAU,WAAU,8BAA+B,CAAA;GACzD,OAAO,EAAG,qBAAqB,qBAAqB;GACpD,aAAa,wBAAwB,EAAG;GACxC,QACE,kBAAC,UAAD;IACE,MAAK;IACL,SAAS;IACT,WAAU;cAET,EAAG,4BAA4B,oBAAoB;IAC7C,CAAA;GAEX,CAAA,CACS"}