@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":"ComponentForm.js","names":[],"sources":["../../../src/components/idp-components/ComponentForm.tsx"],"sourcesContent":["import { useRef, useState } from 'react';\nimport type { FC, ReactNode } from 'react';\nimport { X, ChevronDown, ChevronRight, Github } from 'lucide-react';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\n\nexport interface ComponentFormData {\n name: string;\n description: string;\n type:\n | 'SERVICE'\n | 'FRONTEND'\n | 'LIBRARY'\n | 'API'\n | 'MOBILE'\n | 'DATABASE'\n | 'INFRASTRUCTURE'\n | 'CUSTOM';\n lifecycle: 'EXPERIMENTAL' | 'ACTIVE' | 'DEPRECATED' | 'END_OF_LIFE';\n language: string;\n framework: string;\n version: string;\n ownerName: string;\n tags: string[];\n repositoryUrl?: string;\n documentationUrl?: string;\n dependencies?: Array<{ name: string; version?: string; type?: string }> | null;\n sbomData?: Record<string, unknown> | null;\n}\n\nexport interface ComponentFormProps {\n isOpen: boolean;\n onClose: () => void;\n onSubmit: (data: ComponentFormData) => Promise<void>;\n initialData?: Partial<ComponentFormData>;\n title?: string;\n /** Optional extra content (e.g. a draft EntityTagPicker) rendered above the footer. */\n extraSection?: ReactNode;\n}\n\nexport const ComponentForm: FC<ComponentFormProps> = ({\n isOpen,\n onClose,\n onSubmit,\n initialData,\n title,\n extraSection,\n}) => {\n const { t } = useI18n();\n const tr = (key: string, fallback: string) => {\n const v = t(key);\n return v === key ? fallback : v;\n };\n\n const nameRef = useRef<HTMLInputElement>(null);\n const descriptionRef = useRef<HTMLTextAreaElement>(null);\n const typeRef = useRef<HTMLSelectElement>(null);\n const lifecycleRef = useRef<HTMLSelectElement>(null);\n const languageRef = useRef<HTMLInputElement>(null);\n const frameworkRef = useRef<HTMLInputElement>(null);\n const versionRef = useRef<HTMLInputElement>(null);\n const ownerNameRef = useRef<HTMLInputElement>(null);\n const tagsRef = useRef<HTMLInputElement>(null);\n const repositoryUrlRef = useRef<HTMLInputElement>(null);\n const documentationUrlRef = useRef<HTMLInputElement>(null);\n const dependenciesRef = useRef<HTMLTextAreaElement>(null);\n const sbomDataRef = useRef<HTMLTextAreaElement>(null);\n\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const [fieldErrors, setFieldErrors] = useState<{\n name?: string;\n repositoryUrl?: string;\n dependencies?: string;\n sbomData?: string;\n }>({});\n const [showAdvanced, setShowAdvanced] = useState(false);\n\n if (!isOpen) return null;\n\n const handleSubmit = async () => {\n const name = nameRef.current?.value?.trim();\n if (!name) {\n setFieldErrors({ name: tr('component.nameRequired', 'Name is required') });\n setError(tr('component.fillRequired', 'Please fill in all required fields'));\n return;\n }\n\n const repoUrl = repositoryUrlRef.current?.value?.trim();\n if (!repoUrl) {\n setFieldErrors({\n repositoryUrl: tr('component.repositoryUrlRequired', 'Repository URL is required'),\n });\n setError(tr('component.fillRequired', 'Please fill in all required fields'));\n return;\n }\n if (!/^https?:\\/\\/.+\\/.+/.test(repoUrl)) {\n setFieldErrors({\n repositoryUrl: tr(\n 'component.repositoryUrlInvalid',\n 'Enter a valid repository URL (e.g. https://github.com/org/repo)'\n ),\n });\n setError(tr('component.fillRequired', 'Please fix the errors above'));\n return;\n }\n\n const newFieldErrors: {\n name?: string;\n repositoryUrl?: string;\n dependencies?: string;\n sbomData?: string;\n } = {};\n\n let parsedDependencies: ComponentFormData['dependencies'] = null;\n const depsRaw = dependenciesRef.current?.value?.trim();\n if (depsRaw) {\n try {\n parsedDependencies = JSON.parse(depsRaw);\n if (!Array.isArray(parsedDependencies)) throw new Error('Must be a JSON array');\n } catch {\n newFieldErrors.dependencies =\n 'Invalid JSON — must be an array like [{\"name\":\"react\",\"version\":\"19.0.0\"}]';\n }\n }\n\n let parsedSbom: ComponentFormData['sbomData'] = null;\n const sbomRaw = sbomDataRef.current?.value?.trim();\n if (sbomRaw) {\n try {\n parsedSbom = JSON.parse(sbomRaw);\n } catch {\n newFieldErrors.sbomData = 'Invalid JSON — paste a valid CycloneDX or SPDX document';\n }\n }\n\n if (Object.keys(newFieldErrors).length > 0) {\n setFieldErrors(newFieldErrors);\n setError(tr('component.fillRequired', 'Please fix the errors above'));\n return;\n }\n\n setFieldErrors({});\n\n const data: ComponentFormData = {\n name,\n description: descriptionRef.current?.value?.trim() || '',\n type: (typeRef.current?.value as ComponentFormData['type']) || 'SERVICE',\n lifecycle: (lifecycleRef.current?.value as ComponentFormData['lifecycle']) || 'EXPERIMENTAL',\n language: languageRef.current?.value?.trim() || '',\n framework: frameworkRef.current?.value?.trim() || '',\n version: versionRef.current?.value?.trim() || '',\n ownerName: ownerNameRef.current?.value?.trim() || '',\n tags: tagsRef.current?.value\n ? tagsRef.current.value\n .split(',')\n .map((s) => s.trim())\n .filter(Boolean)\n : [],\n repositoryUrl: repositoryUrlRef.current?.value?.trim() || undefined,\n documentationUrl: documentationUrlRef.current?.value?.trim() || undefined,\n dependencies: parsedDependencies,\n sbomData: parsedSbom,\n };\n\n setLoading(true);\n setError(null);\n try {\n await onSubmit(data);\n onClose();\n } catch (err) {\n setError(\n err instanceof Error ? err.message : tr('component.failedSave', 'Failed to save component')\n );\n } finally {\n setLoading(false);\n }\n };\n\n return (\n <div\n className=\"fixed inset-0 flex items-center justify-center z-50 p-4\"\n style={{ backgroundColor: 'rgba(0,0,0,0.55)' }}\n >\n <div className=\"bg-bg-surface rounded-lg p-6 w-full max-w-lg max-h-[90vh] overflow-y-auto\">\n <div className=\"flex items-center justify-between mb-4\">\n <h2 className=\"text-lg font-semibold text-text-primary\">\n {title || tr('component.createComponent', 'Create Component')}\n </h2>\n <button\n type=\"button\"\n onClick={onClose}\n className=\"p-1 rounded hover:bg-bg-sunken transition-colors text-text-secondary\"\n >\n <X className=\"size-5\" />\n </button>\n </div>\n <div className=\"space-y-4\">\n {error && (\n <div className=\"p-3 bg-status-error-bg-subtle text-status-error-text text-sm rounded-md\">\n {error}\n </div>\n )}\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">\n {tr('component.nameLabel', 'Name *')}\n </label>\n <input\n aria-label=\"control\"\n ref={nameRef}\n type=\"text\"\n defaultValue={initialData?.name || ''}\n placeholder={tr('component.namePlaceholder', 'my-service')}\n onChange={() =>\n fieldErrors.name && setFieldErrors((e) => ({ ...e, name: undefined }))\n }\n className={`w-full px-3 py-2 bg-bg-sunken border rounded-md text-text-primary placeholder:text-text-placeholder ${fieldErrors.name ? 'border-status-error-border' : 'border-border-default'}`}\n />\n {fieldErrors.name && (\n <p className=\"mt-1 text-xs text-status-error-text\">{fieldErrors.name}</p>\n )}\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">\n {tr('component.descriptionLabel', 'Description')}\n </label>\n <textarea\n aria-label=\"control\"\n ref={descriptionRef}\n defaultValue={initialData?.description || ''}\n placeholder={tr('component.descriptionPlaceholder', 'Describe this component...')}\n rows={3}\n className=\"w-full px-3 py-2 bg-bg-sunken border border-border-default rounded-md text-text-primary placeholder:text-text-placeholder resize-none\"\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">\n <span className=\"flex items-center gap-1.5\">\n <Github className=\"size-3.5\" />\n {tr('component.repositoryUrl', 'Repository URL')}{' '}\n <span className=\"text-status-error-text\">*</span>\n </span>\n </label>\n <input\n aria-label=\"https://github.com/org/repo\"\n ref={repositoryUrlRef}\n type=\"url\"\n defaultValue={initialData?.repositoryUrl || ''}\n placeholder=\"https://github.com/org/repo\"\n onChange={() =>\n fieldErrors.repositoryUrl &&\n setFieldErrors((e) => ({ ...e, repositoryUrl: undefined }))\n }\n className={`w-full px-3 py-2 bg-bg-sunken border rounded-md text-text-primary placeholder:text-text-placeholder text-sm ${fieldErrors.repositoryUrl ? 'border-status-error-border' : 'border-border-default'}`}\n />\n {fieldErrors.repositoryUrl && (\n <p className=\"mt-1 text-xs text-status-error-text\">{fieldErrors.repositoryUrl}</p>\n )}\n </div>\n <div className=\"grid grid-cols-1 sm:grid-cols-2 gap-4\">\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">\n {tr('component.typeLabel', 'Type')}\n </label>\n <select\n ref={typeRef}\n defaultValue={initialData?.type || 'SERVICE'}\n className=\"w-full px-3 py-2 bg-bg-sunken border border-border-default rounded-md text-text-primary\"\n >\n <option value=\"SERVICE\">{tr('component.typeService', 'Service')}</option>\n <option value=\"FRONTEND\">{tr('component.typeFrontend', 'Frontend')}</option>\n <option value=\"LIBRARY\">{tr('component.typeLibrary', 'Library')}</option>\n <option value=\"API\">{tr('component.typeApi', 'API')}</option>\n <option value=\"MOBILE\">{tr('component.typeMobile', 'Mobile')}</option>\n <option value=\"DATABASE\">{tr('component.typeDatabase', 'Database')}</option>\n <option value=\"INFRASTRUCTURE\">\n {tr('component.typeInfrastructure', 'Infrastructure')}\n </option>\n <option value=\"CUSTOM\">{tr('component.typeCustom', 'Custom')}</option>\n </select>\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">\n {tr('component.lifecycleLabel', 'Lifecycle')}\n </label>\n <select\n ref={lifecycleRef}\n defaultValue={initialData?.lifecycle || 'EXPERIMENTAL'}\n className=\"w-full px-3 py-2 bg-bg-sunken border border-border-default rounded-md text-text-primary\"\n >\n <option value=\"EXPERIMENTAL\">\n {tr('component.lifecycleExperimental', 'Experimental')}\n </option>\n <option value=\"ACTIVE\">{tr('component.lifecycleActive', 'Active')}</option>\n <option value=\"DEPRECATED\">\n {tr('component.lifecycleDeprecated', 'Deprecated')}\n </option>\n <option value=\"END_OF_LIFE\">\n {tr('component.lifecycleEndOfLife', 'End of Life')}\n </option>\n </select>\n </div>\n </div>\n <div className=\"grid grid-cols-1 sm:grid-cols-2 gap-4\">\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">\n {tr('component.languageLabel', 'Language')}\n </label>\n <input\n aria-label=\"control\"\n ref={languageRef}\n type=\"text\"\n defaultValue={initialData?.language || ''}\n placeholder={tr('component.languagePlaceholder', 'TypeScript')}\n className=\"w-full px-3 py-2 bg-bg-sunken border border-border-default rounded-md text-text-primary placeholder:text-text-placeholder\"\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">\n {tr('component.frameworkLabel', 'Framework')}\n </label>\n <input\n aria-label=\"control\"\n ref={frameworkRef}\n type=\"text\"\n defaultValue={initialData?.framework || ''}\n placeholder={tr('component.frameworkPlaceholder', 'React')}\n className=\"w-full px-3 py-2 bg-bg-sunken border border-border-default rounded-md text-text-primary placeholder:text-text-placeholder\"\n />\n </div>\n </div>\n <div className=\"grid grid-cols-1 sm:grid-cols-2 gap-4\">\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">\n {tr('component.versionLabel', 'Version')}\n </label>\n <input\n aria-label=\"control\"\n ref={versionRef}\n type=\"text\"\n defaultValue={initialData?.version || ''}\n placeholder={tr('component.versionPlaceholder', '1.0.0')}\n className=\"w-full px-3 py-2 bg-bg-sunken border border-border-default rounded-md text-text-primary placeholder:text-text-placeholder\"\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">\n {tr('component.ownerLabel', 'Owner')}\n </label>\n <input\n aria-label=\"control\"\n ref={ownerNameRef}\n type=\"text\"\n defaultValue={initialData?.ownerName || ''}\n placeholder={tr('component.ownerPlaceholder', 'team-name')}\n className=\"w-full px-3 py-2 bg-bg-sunken border border-border-default rounded-md text-text-primary placeholder:text-text-placeholder\"\n />\n </div>\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">\n {tr('component.tagsLabel', 'Tags (comma-separated)')}\n </label>\n <input\n aria-label=\"control\"\n ref={tagsRef}\n type=\"text\"\n defaultValue={initialData?.tags?.join(', ') || ''}\n placeholder={tr('component.tagsPlaceholder', 'backend, api, graphql')}\n className=\"w-full px-3 py-2 bg-bg-sunken border border-border-default rounded-md text-text-primary placeholder:text-text-placeholder\"\n />\n </div>\n\n {/* Advanced section */}\n <div className=\"border border-border-default rounded-md overflow-hidden\">\n <button\n type=\"button\"\n onClick={() => setShowAdvanced((v) => !v)}\n className=\"w-full flex items-center justify-between px-3 py-2 bg-bg-sunken hover:bg-bg-sunken/80 transition-colors text-sm font-medium text-text-secondary\"\n >\n <span>{tr('component.advancedSection', 'Advanced (Docs, Dependencies, SBOM)')}</span>\n {showAdvanced ? (\n <ChevronDown className=\"size-4\" />\n ) : (\n <ChevronRight className=\"size-4\" />\n )}\n </button>\n {showAdvanced && (\n <div className=\"p-3 space-y-4 border-t border-border-default\">\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">\n {tr('component.documentationUrl', 'Documentation URL')}\n </label>\n <input\n aria-label=\"https://docs.example.com\"\n ref={documentationUrlRef}\n type=\"url\"\n defaultValue={initialData?.documentationUrl || ''}\n placeholder=\"https://docs.example.com\"\n className=\"w-full px-3 py-2 bg-bg-sunken border border-border-default rounded-md text-text-primary placeholder:text-text-placeholder text-sm\"\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">\n {tr('component.dependencies', 'Dependencies (JSON array)')}\n </label>\n <textarea\n aria-label=\"control\"\n ref={dependenciesRef}\n rows={4}\n defaultValue={\n initialData?.dependencies\n ? JSON.stringify(initialData.dependencies, null, 2)\n : ''\n }\n placeholder={\n '[\\n {\"name\": \"react\", \"version\": \"19.0.0\", \"type\": \"runtime\"},\\n {\"name\": \"typescript\", \"version\": \"5.9.0\", \"type\": \"dev\"}\\n]'\n }\n className={`w-full px-3 py-2 bg-bg-sunken border rounded-md text-text-primary placeholder:text-text-muted font-mono text-xs resize-y ${fieldErrors.dependencies ? 'border-status-error-border' : 'border-border-default'}`}\n />\n {fieldErrors.dependencies && (\n <p className=\"mt-1 text-xs text-status-error-text\">\n {fieldErrors.dependencies}\n </p>\n )}\n <p className=\"mt-1 text-xs text-text-muted\">\n {tr(\n 'component.dependenciesHint',\n 'Used to build the Dependency Graph in Catalogs. Each entry: {name, version, type}.'\n )}\n </p>\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">\n {tr('component.sbomData', 'SBOM Data (CycloneDX / SPDX JSON)')}\n </label>\n <textarea\n aria-label=\"control\"\n ref={sbomDataRef}\n rows={5}\n defaultValue={\n initialData?.sbomData ? JSON.stringify(initialData.sbomData, null, 2) : ''\n }\n placeholder={\n '{\\n \"bomFormat\": \"CycloneDX\",\\n \"specVersion\": \"1.4\",\\n \"components\": [...]\\n}'\n }\n className={`w-full px-3 py-2 bg-bg-sunken border rounded-md text-text-primary placeholder:text-text-muted font-mono text-xs resize-y ${fieldErrors.sbomData ? 'border-status-error-border' : 'border-border-default'}`}\n />\n {fieldErrors.sbomData && (\n <p className=\"mt-1 text-xs text-status-error-text\">{fieldErrors.sbomData}</p>\n )}\n <p className=\"mt-1 text-xs text-text-muted\">\n {tr(\n 'component.sbomDataHint',\n 'Paste output from syft, trivy, or npm sbom. Aggregated per-catalog in the SBOM tab.'\n )}\n </p>\n </div>\n </div>\n )}\n </div>\n </div>\n {extraSection && (\n <div className=\"mt-4 border-t border-border-default pt-4\">{extraSection}</div>\n )}\n <div className=\"flex flex-col sm:flex-row justify-end gap-3 mt-6\">\n <button\n type=\"button\"\n onClick={onClose}\n disabled={loading}\n className=\"px-4 py-2 text-text-primary hover:bg-bg-sunken rounded-md transition-colors disabled:opacity-50\"\n >\n {tr('common.cancel', 'Cancel')}\n </button>\n <button\n type=\"button\"\n onClick={handleSubmit}\n disabled={loading}\n className=\"px-4 py-2 bg-action-primary-bg text-action-primary-text rounded-md hover:bg-action-primary-bg-hover transition-colors disabled:opacity-50\"\n >\n {loading\n ? tr('common.saving', 'Saving...')\n : initialData?.name\n ? tr('common.save', 'Save')\n : tr('component.createComponent', 'Create Component')}\n </button>\n </div>\n </div>\n </div>\n );\n};\n"],"mappings":";;;;;AAuCA,IAAa,KAAyC,EACpD,WACA,YACA,aACA,gBACA,UACA,sBACI;CACJ,IAAM,EAAE,SAAM,GAAS,EACjB,KAAM,GAAa,MAAqB;EAC5C,IAAM,IAAI,EAAE,EAAI;AAChB,SAAO,MAAM,IAAM,IAAW;IAG1B,IAAU,EAAyB,KAAK,EACxC,IAAiB,EAA4B,KAAK,EAClD,IAAU,EAA0B,KAAK,EACzC,IAAe,EAA0B,KAAK,EAC9C,IAAc,EAAyB,KAAK,EAC5C,IAAe,EAAyB,KAAK,EAC7C,IAAa,EAAyB,KAAK,EAC3C,IAAe,EAAyB,KAAK,EAC7C,IAAU,EAAyB,KAAK,EACxC,IAAmB,EAAyB,KAAK,EACjD,IAAsB,EAAyB,KAAK,EACpD,IAAkB,EAA4B,KAAK,EACnD,IAAc,EAA4B,KAAK,EAE/C,CAAC,GAAS,KAAc,EAAS,GAAM,EACvC,CAAC,GAAO,KAAY,EAAwB,KAAK,EACjD,CAAC,GAAa,KAAkB,EAKnC,EAAE,CAAC,EACA,CAAC,GAAc,KAAmB,EAAS,GAAM;AAuGvD,QArGK,IAsGH,kBAAC,OAAD;EACE,WAAU;EACV,OAAO,EAAE,iBAAiB,oBAAoB;YAE9C,kBAAC,OAAD;GAAK,WAAU;aAAf;IACE,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,MAAD;MAAI,WAAU;gBACX,KAAS,EAAG,6BAA6B,mBAAmB;MAC1D,CAAA,EACL,kBAAC,UAAD;MACE,MAAK;MACL,SAAS;MACT,WAAU;gBAEV,kBAAC,GAAD,EAAG,WAAU,UAAW,CAAA;MACjB,CAAA,CACL;;IACN,kBAAC,OAAD;KAAK,WAAU;eAAf;MACG,KACC,kBAAC,OAAD;OAAK,WAAU;iBACZ;OACG,CAAA;MAER,kBAAC,OAAD,EAAA,UAAA;OACE,kBAAC,SAAD;QAAO,WAAU;kBACd,EAAG,uBAAuB,SAAS;QAC9B,CAAA;OACR,kBAAC,SAAD;QACE,cAAW;QACX,KAAK;QACL,MAAK;QACL,cAAc,GAAa,QAAQ;QACnC,aAAa,EAAG,6BAA6B,aAAa;QAC1D,gBACE,EAAY,QAAQ,GAAgB,OAAO;SAAE,GAAG;SAAG,MAAM,KAAA;SAAW,EAAE;QAExE,WAAW,uGAAuG,EAAY,OAAO,+BAA+B;QACpK,CAAA;OACD,EAAY,QACX,kBAAC,KAAD;QAAG,WAAU;kBAAuC,EAAY;QAAS,CAAA;OAEvE,EAAA,CAAA;MACN,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,SAAD;OAAO,WAAU;iBACd,EAAG,8BAA8B,cAAc;OAC1C,CAAA,EACR,kBAAC,YAAD;OACE,cAAW;OACX,KAAK;OACL,cAAc,GAAa,eAAe;OAC1C,aAAa,EAAG,oCAAoC,6BAA6B;OACjF,MAAM;OACN,WAAU;OACV,CAAA,CACE,EAAA,CAAA;MACN,kBAAC,OAAD,EAAA,UAAA;OACE,kBAAC,SAAD;QAAO,WAAU;kBACf,kBAAC,QAAD;SAAM,WAAU;mBAAhB;UACE,kBAAC,GAAD,EAAQ,WAAU,YAAa,CAAA;UAC9B,EAAG,2BAA2B,iBAAiB;UAAE;UAClD,kBAAC,QAAD;WAAM,WAAU;qBAAyB;WAAQ,CAAA;UAC5C;;QACD,CAAA;OACR,kBAAC,SAAD;QACE,cAAW;QACX,KAAK;QACL,MAAK;QACL,cAAc,GAAa,iBAAiB;QAC5C,aAAY;QACZ,gBACE,EAAY,iBACZ,GAAgB,OAAO;SAAE,GAAG;SAAG,eAAe,KAAA;SAAW,EAAE;QAE7D,WAAW,+GAA+G,EAAY,gBAAgB,+BAA+B;QACrL,CAAA;OACD,EAAY,iBACX,kBAAC,KAAD;QAAG,WAAU;kBAAuC,EAAY;QAAkB,CAAA;OAEhF,EAAA,CAAA;MACN,kBAAC,OAAD;OAAK,WAAU;iBAAf,CACE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,SAAD;QAAO,WAAU;kBACd,EAAG,uBAAuB,OAAO;QAC5B,CAAA,EACR,kBAAC,UAAD;QACE,KAAK;QACL,cAAc,GAAa,QAAQ;QACnC,WAAU;kBAHZ;SAKE,kBAAC,UAAD;UAAQ,OAAM;oBAAW,EAAG,yBAAyB,UAAU;UAAU,CAAA;SACzE,kBAAC,UAAD;UAAQ,OAAM;oBAAY,EAAG,0BAA0B,WAAW;UAAU,CAAA;SAC5E,kBAAC,UAAD;UAAQ,OAAM;oBAAW,EAAG,yBAAyB,UAAU;UAAU,CAAA;SACzE,kBAAC,UAAD;UAAQ,OAAM;oBAAO,EAAG,qBAAqB,MAAM;UAAU,CAAA;SAC7D,kBAAC,UAAD;UAAQ,OAAM;oBAAU,EAAG,wBAAwB,SAAS;UAAU,CAAA;SACtE,kBAAC,UAAD;UAAQ,OAAM;oBAAY,EAAG,0BAA0B,WAAW;UAAU,CAAA;SAC5E,kBAAC,UAAD;UAAQ,OAAM;oBACX,EAAG,gCAAgC,iBAAiB;UAC9C,CAAA;SACT,kBAAC,UAAD;UAAQ,OAAM;oBAAU,EAAG,wBAAwB,SAAS;UAAU,CAAA;SAC/D;UACL,EAAA,CAAA,EACN,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,SAAD;QAAO,WAAU;kBACd,EAAG,4BAA4B,YAAY;QACtC,CAAA,EACR,kBAAC,UAAD;QACE,KAAK;QACL,cAAc,GAAa,aAAa;QACxC,WAAU;kBAHZ;SAKE,kBAAC,UAAD;UAAQ,OAAM;oBACX,EAAG,mCAAmC,eAAe;UAC/C,CAAA;SACT,kBAAC,UAAD;UAAQ,OAAM;oBAAU,EAAG,6BAA6B,SAAS;UAAU,CAAA;SAC3E,kBAAC,UAAD;UAAQ,OAAM;oBACX,EAAG,iCAAiC,aAAa;UAC3C,CAAA;SACT,kBAAC,UAAD;UAAQ,OAAM;oBACX,EAAG,gCAAgC,cAAc;UAC3C,CAAA;SACF;UACL,EAAA,CAAA,CACF;;MACN,kBAAC,OAAD;OAAK,WAAU;iBAAf,CACE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,SAAD;QAAO,WAAU;kBACd,EAAG,2BAA2B,WAAW;QACpC,CAAA,EACR,kBAAC,SAAD;QACE,cAAW;QACX,KAAK;QACL,MAAK;QACL,cAAc,GAAa,YAAY;QACvC,aAAa,EAAG,iCAAiC,aAAa;QAC9D,WAAU;QACV,CAAA,CACE,EAAA,CAAA,EACN,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,SAAD;QAAO,WAAU;kBACd,EAAG,4BAA4B,YAAY;QACtC,CAAA,EACR,kBAAC,SAAD;QACE,cAAW;QACX,KAAK;QACL,MAAK;QACL,cAAc,GAAa,aAAa;QACxC,aAAa,EAAG,kCAAkC,QAAQ;QAC1D,WAAU;QACV,CAAA,CACE,EAAA,CAAA,CACF;;MACN,kBAAC,OAAD;OAAK,WAAU;iBAAf,CACE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,SAAD;QAAO,WAAU;kBACd,EAAG,0BAA0B,UAAU;QAClC,CAAA,EACR,kBAAC,SAAD;QACE,cAAW;QACX,KAAK;QACL,MAAK;QACL,cAAc,GAAa,WAAW;QACtC,aAAa,EAAG,gCAAgC,QAAQ;QACxD,WAAU;QACV,CAAA,CACE,EAAA,CAAA,EACN,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,SAAD;QAAO,WAAU;kBACd,EAAG,wBAAwB,QAAQ;QAC9B,CAAA,EACR,kBAAC,SAAD;QACE,cAAW;QACX,KAAK;QACL,MAAK;QACL,cAAc,GAAa,aAAa;QACxC,aAAa,EAAG,8BAA8B,YAAY;QAC1D,WAAU;QACV,CAAA,CACE,EAAA,CAAA,CACF;;MACN,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,SAAD;OAAO,WAAU;iBACd,EAAG,uBAAuB,yBAAyB;OAC9C,CAAA,EACR,kBAAC,SAAD;OACE,cAAW;OACX,KAAK;OACL,MAAK;OACL,cAAc,GAAa,MAAM,KAAK,KAAK,IAAI;OAC/C,aAAa,EAAG,6BAA6B,wBAAwB;OACrE,WAAU;OACV,CAAA,CACE,EAAA,CAAA;MAGN,kBAAC,OAAD;OAAK,WAAU;iBAAf,CACE,kBAAC,UAAD;QACE,MAAK;QACL,eAAe,GAAiB,MAAM,CAAC,EAAE;QACzC,WAAU;kBAHZ,CAKE,kBAAC,QAAD,EAAA,UAAO,EAAG,6BAA6B,sCAAsC,EAAQ,CAAA,EAEnF,EADD,IACE,IAEA,GAFD,EAAa,WAAU,UAAW,CAEC,CAE9B;WACR,KACC,kBAAC,OAAD;QAAK,WAAU;kBAAf;SACE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,SAAD;UAAO,WAAU;oBACd,EAAG,8BAA8B,oBAAoB;UAChD,CAAA,EACR,kBAAC,SAAD;UACE,cAAW;UACX,KAAK;UACL,MAAK;UACL,cAAc,GAAa,oBAAoB;UAC/C,aAAY;UACZ,WAAU;UACV,CAAA,CACE,EAAA,CAAA;SACN,kBAAC,OAAD,EAAA,UAAA;UACE,kBAAC,SAAD;WAAO,WAAU;qBACd,EAAG,0BAA0B,4BAA4B;WACpD,CAAA;UACR,kBAAC,YAAD;WACE,cAAW;WACX,KAAK;WACL,MAAM;WACN,cACE,GAAa,eACT,KAAK,UAAU,EAAY,cAAc,MAAM,EAAE,GACjD;WAEN,aACE;WAEF,WAAW,4HAA4H,EAAY,eAAe,+BAA+B;WACjM,CAAA;UACD,EAAY,gBACX,kBAAC,KAAD;WAAG,WAAU;qBACV,EAAY;WACX,CAAA;UAEN,kBAAC,KAAD;WAAG,WAAU;qBACV,EACC,8BACA,qFACD;WACC,CAAA;UACA,EAAA,CAAA;SACN,kBAAC,OAAD,EAAA,UAAA;UACE,kBAAC,SAAD;WAAO,WAAU;qBACd,EAAG,sBAAsB,oCAAoC;WACxD,CAAA;UACR,kBAAC,YAAD;WACE,cAAW;WACX,KAAK;WACL,MAAM;WACN,cACE,GAAa,WAAW,KAAK,UAAU,EAAY,UAAU,MAAM,EAAE,GAAG;WAE1E,aACE;WAEF,WAAW,4HAA4H,EAAY,WAAW,+BAA+B;WAC7L,CAAA;UACD,EAAY,YACX,kBAAC,KAAD;WAAG,WAAU;qBAAuC,EAAY;WAAa,CAAA;UAE/E,kBAAC,KAAD;WAAG,WAAU;qBACV,EACC,0BACA,sFACD;WACC,CAAA;UACA,EAAA,CAAA;SACF;UAEJ;;MACF;;IACL,KACC,kBAAC,OAAD;KAAK,WAAU;eAA4C;KAAmB,CAAA;IAEhF,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,UAAD;MACE,MAAK;MACL,SAAS;MACT,UAAU;MACV,WAAU;gBAET,EAAG,iBAAiB,SAAS;MACvB,CAAA,EACT,kBAAC,UAAD;MACE,MAAK;MACL,SA5YW,YAAY;OAC/B,IAAM,IAAO,EAAQ,SAAS,OAAO,MAAM;AAC3C,WAAI,CAAC,GAAM;AAET,QADA,EAAe,EAAE,MAAM,EAAG,0BAA0B,mBAAmB,EAAE,CAAC,EAC1E,EAAS,EAAG,0BAA0B,qCAAqC,CAAC;AAC5E;;OAGF,IAAM,IAAU,EAAiB,SAAS,OAAO,MAAM;AACvD,WAAI,CAAC,GAAS;AAIZ,QAHA,EAAe,EACb,eAAe,EAAG,mCAAmC,6BAA6B,EACnF,CAAC,EACF,EAAS,EAAG,0BAA0B,qCAAqC,CAAC;AAC5E;;AAEF,WAAI,CAAC,qBAAqB,KAAK,EAAQ,EAAE;AAOvC,QANA,EAAe,EACb,eAAe,EACb,kCACA,kEACD,EACF,CAAC,EACF,EAAS,EAAG,0BAA0B,8BAA8B,CAAC;AACrE;;OAGF,IAAM,IAKF,EAAE,EAEF,IAAwD,MACtD,IAAU,EAAgB,SAAS,OAAO,MAAM;AACtD,WAAI,EACF,KAAI;AAEF,YADA,IAAqB,KAAK,MAAM,EAAQ,EACpC,CAAC,MAAM,QAAQ,EAAmB,CAAE,OAAU,MAAM,uBAAuB;eACzE;AACN,UAAe,eACb;;OAIN,IAAI,IAA4C,MAC1C,IAAU,EAAY,SAAS,OAAO,MAAM;AAClD,WAAI,EACF,KAAI;AACF,YAAa,KAAK,MAAM,EAAQ;eAC1B;AACN,UAAe,WAAW;;AAI9B,WAAI,OAAO,KAAK,EAAe,CAAC,SAAS,GAAG;AAE1C,QADA,EAAe,EAAe,EAC9B,EAAS,EAAG,0BAA0B,8BAA8B,CAAC;AACrE;;AAGF,SAAe,EAAE,CAAC;OAElB,IAAM,IAA0B;QAC9B;QACA,aAAa,EAAe,SAAS,OAAO,MAAM,IAAI;QACtD,MAAO,EAAQ,SAAS,SAAuC;QAC/D,WAAY,EAAa,SAAS,SAA4C;QAC9E,UAAU,EAAY,SAAS,OAAO,MAAM,IAAI;QAChD,WAAW,EAAa,SAAS,OAAO,MAAM,IAAI;QAClD,SAAS,EAAW,SAAS,OAAO,MAAM,IAAI;QAC9C,WAAW,EAAa,SAAS,OAAO,MAAM,IAAI;QAClD,MAAM,EAAQ,SAAS,QACnB,EAAQ,QAAQ,MACb,MAAM,IAAI,CACV,KAAK,MAAM,EAAE,MAAM,CAAC,CACpB,OAAO,QAAQ,GAClB,EAAE;QACN,eAAe,EAAiB,SAAS,OAAO,MAAM,IAAI,KAAA;QAC1D,kBAAkB,EAAoB,SAAS,OAAO,MAAM,IAAI,KAAA;QAChE,cAAc;QACd,UAAU;QACX;AAGD,OADA,EAAW,GAAK,EAChB,EAAS,KAAK;AACd,WAAI;AAEF,QADA,MAAM,EAAS,EAAK,EACpB,GAAS;gBACF,GAAK;AACZ,UACE,aAAe,QAAQ,EAAI,UAAU,EAAG,wBAAwB,2BAA2B,CAC5F;iBACO;AACR,UAAW,GAAM;;;MA8SX,UAAU;MACV,WAAU;gBAET,IACG,EAAG,iBAAiB,YAAY,GAChC,GAAa,OACX,EAAG,eAAe,OAAO,GACzB,EAAG,6BAA6B,mBAAmB;MAClD,CAAA,CACL;;IACF;;EACF,CAAA,GA1ZY"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"DependencyGraphTab.js","names":[],"sources":["../../../src/components/idp-components/DependencyGraphTab.tsx"],"sourcesContent":["/**\n * DependencyGraphTab — React Flow visualization of a component's dependency graph.\n *\n * Root component node sits on the RIGHT; dependency nodes stack on the LEFT.\n * Edges flow LEFT → RIGHT with type-specific styling.\n * A compact table below the canvas lists all dependencies.\n */\n\nimport { useMemo } from 'react';\nimport { PackageOpen } from 'lucide-react';\nimport '@xyflow/react/dist/style.css';\nimport {\n ReactFlow,\n Background,\n Controls,\n useNodesState,\n useEdgesState,\n type Node,\n type Edge,\n MarkerType,\n BackgroundVariant,\n} from '@xyflow/react';\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport interface DependencyGraphTabProps {\n componentName: string;\n componentType: string;\n dependencies: Array<{ name: string; version?: string | null; type?: string | null }> | null;\n}\n\ntype DepType = 'runtime' | 'dev' | 'peer' | 'optional' | null;\n\nconst MAX_GRAPH_DEPS = 40;\n\n// ---------------------------------------------------------------------------\n// Inline style helpers (React Flow nodes render in a portal — no Tailwind)\n// ---------------------------------------------------------------------------\n\nfunction depNodeStyle(type: DepType): React.CSSProperties {\n switch (type) {\n case 'peer':\n return {\n backgroundColor: 'var(--color-status-info-bg)',\n border: '1px solid var(--color-status-info-border)',\n color: 'var(--color-text-primary)',\n };\n case 'dev':\n return {\n backgroundColor: 'var(--color-bg-sunken)',\n border: '1px dashed var(--color-border-default)',\n color: 'var(--color-text-secondary)',\n };\n case 'optional':\n return {\n backgroundColor: 'var(--color-bg-sunken)',\n border: '1px solid var(--color-border-default)',\n color: 'var(--color-text-primary)',\n opacity: 0.7,\n };\n default:\n // runtime or null\n return {\n backgroundColor: 'var(--color-bg-sunken)',\n border: '1px solid var(--color-border-default)',\n color: 'var(--color-text-primary)',\n };\n }\n}\n\nfunction depTypeBadgeStyle(type: DepType): React.CSSProperties {\n const base: React.CSSProperties = {\n display: 'inline-block',\n fontSize: 10,\n fontWeight: 600,\n borderRadius: 4,\n padding: '1px 5px',\n marginLeft: 4,\n textTransform: 'uppercase',\n letterSpacing: '0.04em',\n };\n switch (type) {\n case 'peer':\n return {\n ...base,\n backgroundColor: 'var(--color-status-info-border)',\n color: 'var(--color-text-inverse)',\n };\n case 'dev':\n return {\n ...base,\n backgroundColor: 'var(--color-border-strong)',\n color: 'var(--color-text-inverse)',\n };\n case 'optional':\n return {\n ...base,\n backgroundColor: 'var(--color-border-default)',\n color: 'var(--color-text-secondary)',\n };\n default:\n return {\n ...base,\n backgroundColor: 'var(--color-action-primary-bg)',\n color: 'var(--color-action-primary-text)',\n };\n }\n}\n\n// ---------------------------------------------------------------------------\n// Label renderers (ReactNode — React Flow default node accepts ReactNode label)\n// ---------------------------------------------------------------------------\n\nfunction makeDepLabel(dep: {\n name: string;\n version?: string | null;\n type?: string | null;\n}): React.ReactNode {\n const depType = (dep.type ?? null) as DepType;\n return (\n <div style={{ lineHeight: 1.4 }}>\n <div\n style={{\n fontWeight: 600,\n maxWidth: 180,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }}\n >\n {dep.name}\n {depType && <span style={depTypeBadgeStyle(depType)}>{depType}</span>}\n </div>\n {dep.version && (\n <div style={{ fontSize: 10, color: 'var(--color-text-muted)', marginTop: 2 }}>\n {dep.version}\n </div>\n )}\n </div>\n );\n}\n\nfunction makeRootLabel(componentName: string, componentType: string): React.ReactNode {\n return (\n <div style={{ lineHeight: 1.4, textAlign: 'center' }}>\n <div style={{ fontWeight: 700, fontSize: 13 }}>{componentName}</div>\n <div\n style={{\n fontSize: 10,\n marginTop: 3,\n backgroundColor: 'var(--color-accent-soft)',\n borderRadius: 4,\n padding: '1px 6px',\n display: 'inline-block',\n letterSpacing: '0.05em',\n textTransform: 'uppercase',\n }}\n >\n {componentType}\n </div>\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------\n// Graph element builder\n// ---------------------------------------------------------------------------\n\nfunction buildGraphElements(\n componentName: string,\n componentType: string,\n deps: Array<{ name: string; version?: string | null; type?: string | null }>\n): { nodes: Node[]; edges: Edge[] } {\n const visible = deps.slice(0, MAX_GRAPH_DEPS);\n const totalHeight = Math.max(visible.length * 80, 80);\n const rootY = totalHeight / 2 - 24;\n\n const nodes: Node[] = [];\n const edges: Edge[] = [];\n\n // Root node\n nodes.push({\n id: 'root',\n position: { x: 520, y: rootY },\n data: { label: makeRootLabel(componentName, componentType) },\n style: {\n backgroundColor: 'var(--color-action-primary-bg)',\n color: 'var(--color-action-primary-text)',\n borderRadius: 10,\n padding: '10px 16px',\n width: 160,\n fontWeight: 700,\n fontSize: 13,\n boxShadow: 'var(--shadow-elevation-2)',\n border: 'none',\n textAlign: 'center',\n },\n });\n\n // Dependency nodes and edges\n visible.forEach((dep, i) => {\n const depType = (dep.type ?? null) as DepType;\n const nodeId = `dep-${i}`;\n const isRuntime = !depType || depType === 'runtime';\n const isDev = depType === 'dev';\n\n nodes.push({\n id: nodeId,\n position: { x: 40, y: 20 + i * 80 },\n data: { label: makeDepLabel(dep) },\n style: {\n ...depNodeStyle(depType),\n borderRadius: 8,\n padding: '8px 12px',\n width: 220,\n fontSize: 12,\n },\n });\n\n edges.push({\n id: `edge-${i}`,\n source: nodeId,\n target: 'root',\n animated: isRuntime,\n markerEnd: { type: MarkerType.ArrowClosed },\n style: {\n stroke: 'var(--color-border-strong)',\n strokeWidth: 1.5,\n ...(isDev ? { strokeDasharray: '4 2' } : {}),\n },\n });\n });\n\n return { nodes, edges };\n}\n\n// ---------------------------------------------------------------------------\n// Inner React Flow component (needs its own hook calls — can't be conditional)\n// ---------------------------------------------------------------------------\n\ninterface DependencyFlowProps {\n componentName: string;\n componentType: string;\n deps: Array<{ name: string; version?: string | null; type?: string | null }>;\n canvasHeight: number;\n}\n\nfunction DependencyFlow({ componentName, componentType, deps, canvasHeight }: DependencyFlowProps) {\n const { nodes: initialNodes, edges: initialEdges } = useMemo(\n () => buildGraphElements(componentName, componentType, deps),\n [componentName, componentType, deps]\n );\n\n const [nodes, , onNodesChange] = useNodesState(initialNodes);\n const [edges, , onEdgesChange] = useEdgesState(initialEdges);\n\n return (\n <div\n className=\"w-full rounded-lg border border-border-default overflow-hidden bg-bg-surface\"\n style={{ height: canvasHeight }}\n >\n <ReactFlow\n nodes={nodes}\n edges={edges}\n onNodesChange={onNodesChange}\n onEdgesChange={onEdgesChange}\n nodesDraggable={false}\n fitView\n fitViewOptions={{ padding: 0.15 }}\n minZoom={0.2}\n maxZoom={2}\n panOnDrag\n proOptions={{ hideAttribution: true }}\n >\n <Background\n variant={BackgroundVariant.Dots}\n gap={20}\n size={1}\n className=\"!fill-text-tertiary/10\"\n />\n <Controls\n showInteractive={false}\n style={{\n background: 'var(--color-bg-primary)',\n border: '1px solid var(--color-border-default)',\n borderRadius: 8,\n boxShadow: '0 1px 4px var(--color-border-default)',\n }}\n className=\"[&_button]:!bg-[var(--color-bg-primary)] [&_button]:!border-[var(--color-border-default)] [&_button]:!fill-[var(--color-text-secondary)] [&_button:hover]:!bg-[var(--color-bg-sunken)]\"\n />\n </ReactFlow>\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------\n// Main export\n// ---------------------------------------------------------------------------\n\nexport function DependencyGraphTab({\n componentName,\n componentType,\n dependencies,\n}: DependencyGraphTabProps) {\n const deps = dependencies ?? [];\n const visibleCount = Math.min(deps.length, MAX_GRAPH_DEPS);\n const hiddenCount = deps.length - visibleCount;\n const canvasHeight = Math.max(400, Math.min(deps.length * 80 + 100, 600));\n\n if (deps.length === 0) {\n return (\n <div className=\"flex flex-col items-center justify-center py-20 text-center gap-4\">\n <PackageOpen className=\"size-10 text-text-muted\" />\n <p className=\"text-sm text-text-secondary max-w-xs\">\n No dependencies recorded. Add them via Settings.\n </p>\n </div>\n );\n }\n\n return (\n <div className=\"space-y-6\">\n {/* Graph canvas */}\n <div>\n {hiddenCount > 0 && (\n <p className=\"text-xs text-text-muted mb-2 text-right\">\n Showing {visibleCount} of {deps.length} dependencies (+{hiddenCount} more in table\n below)\n </p>\n )}\n <DependencyFlow\n componentName={componentName}\n componentType={componentType}\n deps={deps}\n canvasHeight={canvasHeight}\n />\n </div>\n\n {/* All-dependencies table */}\n <div>\n <h3 className=\"text-sm font-semibold text-text-primary mb-3\">\n All Dependencies ({deps.length})\n </h3>\n <div className=\"overflow-x-auto rounded-lg border border-border-default\">\n <table className=\"w-full text-sm\">\n <thead>\n <tr className=\"bg-bg-sunken border-b border-border-default\">\n <th className=\"px-4 py-2.5 text-left font-medium text-text-secondary\">Name</th>\n <th className=\"px-4 py-2.5 text-left font-medium text-text-secondary\">Version</th>\n <th className=\"px-4 py-2.5 text-left font-medium text-text-secondary\">Type</th>\n </tr>\n </thead>\n <tbody>\n {deps.map((dep, i) => (\n <tr\n key={`${dep.name}-${i}`}\n className=\"border-b border-border-default last:border-0 hover:bg-bg-sunken/50 transition-colors\"\n >\n <td className=\"px-4 py-2.5 font-mono text-xs text-text-primary\">{dep.name}</td>\n <td className=\"px-4 py-2.5 text-text-secondary\">{dep.version ?? '—'}</td>\n <td className=\"px-4 py-2.5\">\n {dep.type ? (\n <span className=\"inline-flex items-center px-2 py-0.5 text-xs font-medium rounded bg-bg-sunken text-text-secondary\">\n {dep.type}\n </span>\n ) : (\n <span className=\"text-text-muted\">runtime</span>\n )}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"LogViewer.js","names":[],"sources":["../../../src/components/logs/LogViewer.tsx"],"sourcesContent":["import { useCallback, useEffect, useRef, useState, type FC } from 'react';\nimport { Download, Pause, Play, RefreshCw, Search, Trash2 } from 'lucide-react';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { useVibecontrolsAgentLogStreamSubscription } from '@/generated/wspace-operations';\n\ninterface LogEntry {\n timestamp: string;\n level: 'debug' | 'info' | 'warn' | 'error';\n source: string;\n message: string;\n metadata?: Record<string, unknown>;\n}\n\ninterface LogViewerProps {\n agentId: string;\n /** Canonical CLI profile name on the remote agent. */\n profile: string;\n level?: 'debug' | 'info' | 'warn' | 'error';\n source?: string;\n maxEntries?: number;\n className?: string;\n compact?: boolean;\n}\n\nfunction getEntryKey(entry: LogEntry): string {\n return `${entry.timestamp}:${entry.level}:${entry.source}:${entry.message}`;\n}\n\nconst LEVEL_COLORS: Record<string, string> = {\n debug: 'text-text-tertiary',\n info: 'text-status-info-text',\n warn: 'text-status-warning-text',\n error: 'text-status-error-text',\n};\n\nconst LEVEL_BG: Record<string, string> = {\n debug: 'bg-bg-sunken',\n info: 'bg-status-info-bg-subtle',\n warn: 'bg-status-warning-bg-subtle',\n error: 'bg-status-error-bg-subtle',\n};\n\nexport const LogViewer: FC<LogViewerProps> = ({\n agentId,\n profile,\n level: initialLevel = 'info',\n source: initialSource,\n maxEntries = 1000,\n className = '',\n compact = false,\n}) => {\n const { t } = useI18n();\n const [entries, setEntries] = useState<LogEntry[]>([]);\n const [paused, setPaused] = useState(false);\n const [level, setLevel] = useState(initialLevel);\n const [searchQuery, setSearchQuery] = useState('');\n const [errorMessage, setErrorMessage] = useState<string | null>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n const autoScrollRef = useRef(true);\n\n // GraphQL subscription — the svc polls the agent server-side every\n // ~2s and pushes only new entries here. Replaces the previous client\n // setInterval + fetch, which was firing infinitely because\n // `tr` recreated on every render mutated fetchLogs' identity, which\n // re-ran the useEffect, which re-armed the interval, which called\n // fetchLogs immediately. The subscription has no client polling at\n // all — Apollo opens one WS, the svc owns the cadence.\n const {\n data: streamData,\n error: subscriptionError,\n loading: streamLoading,\n } = useVibecontrolsAgentLogStreamSubscription({\n variables: {\n agentId,\n profile,\n level,\n source: initialSource,\n },\n skip: !agentId || paused,\n shouldResubscribe: true,\n });\n\n const tr = (key: string, fallback: string) => {\n const value = t(key);\n return value === key ? fallback : value;\n };\n\n const handleScroll = useCallback(() => {\n if (!containerRef.current) {\n return;\n }\n\n const element = containerRef.current;\n autoScrollRef.current = element.scrollHeight - element.scrollTop - element.clientHeight < 50;\n }, []);\n\n const scrollToBottom = useCallback(() => {\n if (containerRef.current) {\n containerRef.current.scrollTop = containerRef.current.scrollHeight;\n }\n }, []);\n\n // Drain incoming subscription batches into the entries list. Each\n // payload is the NEW entries since the last server-side tick; merge\n // by key so re-deliveries (e.g. on reconnect backfill) don't dupe.\n useEffect(() => {\n const batch = streamData?.vibecontrolsAgentLogStream;\n if (!batch || batch.length === 0) return;\n const incoming: LogEntry[] = batch.map(\n (row: {\n timestamp: string;\n level: string;\n source?: string | null;\n message: string;\n metadataJson?: string | null;\n }) => {\n let metadata: Record<string, unknown> | undefined;\n if (row.metadataJson) {\n try {\n metadata = JSON.parse(row.metadataJson) as Record<string, unknown>;\n } catch {\n metadata = undefined;\n }\n }\n return {\n timestamp: row.timestamp,\n level: (row.level as LogEntry['level']) ?? 'info',\n source: row.source ?? '',\n message: row.message,\n metadata,\n };\n }\n );\n setEntries((current) => {\n const merged = new Map<string, LogEntry>();\n for (const entry of current) merged.set(getEntryKey(entry), entry);\n for (const entry of incoming) merged.set(getEntryKey(entry), entry);\n return Array.from(merged.values())\n .sort((a, b) => new Date(a.timestamp).getTime() - new Date(b.timestamp).getTime())\n .slice(-maxEntries);\n });\n setErrorMessage(null);\n if (autoScrollRef.current) {\n requestAnimationFrame(() => {\n if (containerRef.current) {\n containerRef.current.scrollTop = containerRef.current.scrollHeight;\n }\n });\n }\n }, [streamData, maxEntries]);\n\n useEffect(() => {\n if (subscriptionError) {\n setErrorMessage(subscriptionError.message);\n }\n }, [subscriptionError]);\n\n const connected = !subscriptionError && !streamLoading;\n const isRefreshing = streamLoading;\n\n // Reset the entries list when the agent / filter set actually changes.\n useEffect(() => {\n setEntries([]);\n setErrorMessage(null);\n }, [agentId, profile, level, initialSource]);\n\n // Manual refresh: no-op since the subscription pushes continuously.\n // Kept as a callback so the existing \"Refresh\" button doesn't have to\n // be conditionally hidden. Wraps in setEntries([]) so the operator's\n // intent of \"give me a fresh window\" is honoured — the next push\n // backfills.\n const fetchLogs = useCallback(() => {\n setEntries([]);\n }, []);\n\n const filteredEntries = searchQuery\n ? entries.filter(\n (entry) =>\n entry.message.toLowerCase().includes(searchQuery.toLowerCase()) ||\n entry.source.toLowerCase().includes(searchQuery.toLowerCase())\n )\n : entries;\n\n const handleClear = () => setEntries([]);\n\n const handleExport = () => {\n const blob = new Blob([filteredEntries.map((entry) => JSON.stringify(entry)).join('\\n')], {\n type: 'application/x-ndjson',\n });\n const url = URL.createObjectURL(blob);\n const anchor = document.createElement('a');\n anchor.href = url;\n anchor.download = `agent-logs-${new Date().toISOString().slice(0, 19).replace(/:/g, '-')}.jsonl`;\n anchor.click();\n URL.revokeObjectURL(url);\n };\n\n const formatTime = (timestamp: string) => {\n try {\n const date = new Date(timestamp);\n return (\n date.toLocaleTimeString('en-US', {\n hour12: false,\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n }) +\n '.' +\n String(date.getMilliseconds()).padStart(3, '0')\n );\n } catch {\n return timestamp;\n }\n };\n\n return (\n <div\n className={`flex flex-col overflow-hidden rounded-lg border border-border-default bg-bg-elevated ${className}`}\n >\n <div className=\"flex flex-wrap items-center gap-2 border-b border-border-default bg-bg-sunken px-3 py-2\">\n <div className=\"mr-2 flex items-center gap-1.5\">\n <div\n className={`size-2 rounded-full ${connected ? 'animate-pulse bg-status-success-bg' : 'bg-status-error-bg'}`}\n />\n <span className=\"text-xs text-text-tertiary\">\n {connected ? tr('logs.live', 'Live') : tr('logs.disconnected', 'Disconnected')}\n </span>\n </div>\n\n <select\n value={level}\n onChange={(event) => setLevel(event.target.value as LogEntry['level'])}\n className=\"rounded border border-border-subtle bg-bg-sunken px-2 py-1 text-xs text-text-primary\"\n aria-label={tr('logs.levelFilter', 'Log level filter')}\n >\n <option value=\"debug\">DEBUG+</option>\n <option value=\"info\">INFO+</option>\n <option value=\"warn\">WARN+</option>\n <option value=\"error\">ERROR</option>\n </select>\n\n <div className=\"relative min-w-[120px] max-w-xs flex-1\">\n <Search\n size={12}\n className=\"absolute left-2 top-1/2 -translate-y-1/2 text-text-tertiary\"\n />\n <input\n aria-label=\"control\"\n type=\"text\"\n placeholder={tr('logs.filterLogs', 'Filter logs...')}\n value={searchQuery}\n onChange={(event) => setSearchQuery(event.target.value)}\n className=\"w-full rounded border border-border-subtle bg-bg-sunken py-1 pl-6 pr-2 text-xs text-text-primary placeholder:text-text-tertiary\"\n />\n </div>\n\n <div className=\"ml-auto flex items-center gap-1\">\n <span className=\"text-xs text-text-tertiary\">\n {filteredEntries.length} {tr('logs.entries', 'entries')}\n </span>\n <button\n type=\"button\"\n onClick={() => void fetchLogs()}\n disabled={isRefreshing}\n className=\"rounded p-1 text-text-tertiary transition-colors hover:bg-bg-sunken disabled:opacity-50\"\n title={tr('common.refresh', 'Refresh')}\n >\n <RefreshCw size={14} className={isRefreshing ? 'animate-spin' : ''} />\n </button>\n <button\n type=\"button\"\n onClick={() => setPaused((current) => !current)}\n className={`rounded p-1 transition-colors hover:bg-bg-sunken ${paused ? 'text-status-warning-text' : 'text-text-tertiary'}`}\n title={paused ? tr('logs.resume', 'Resume') : tr('logs.pause', 'Pause')}\n >\n {paused ? <Play size={14} /> : <Pause size={14} />}\n </button>\n <button\n type=\"button\"\n onClick={handleClear}\n className=\"rounded p-1 text-text-tertiary transition-colors hover:bg-bg-sunken\"\n title={tr('logs.clear', 'Clear')}\n >\n <Trash2 size={14} />\n </button>\n <button\n type=\"button\"\n onClick={handleExport}\n className=\"rounded p-1 text-text-tertiary transition-colors hover:bg-bg-sunken\"\n title={tr('logs.export', 'Export')}\n >\n <Download size={14} />\n </button>\n </div>\n </div>\n\n {errorMessage ? (\n <div\n role=\"alert\"\n className=\"border-b border-border-default bg-status-error-bg-subtle px-3 py-2 text-xs text-status-error-text\"\n >\n {errorMessage}\n </div>\n ) : null}\n\n <div\n ref={containerRef}\n onScroll={handleScroll}\n className={`overflow-y-auto font-mono text-xs leading-relaxed ${compact ? 'max-h-[300px]' : 'min-h-[400px] flex-1'}`}\n style={{ maxHeight: compact ? '300px' : undefined }}\n >\n {filteredEntries.length === 0 ? (\n <div className=\"flex h-full min-h-[200px] items-center justify-center text-text-tertiary\">\n {!agentId\n ? tr('logs.connectToAgent', 'Connect to an agent to view logs')\n : errorMessage\n ? `${tr('logs.subscriptionError', 'Log stream error')}: ${errorMessage}`\n : streamLoading\n ? tr('logs.connecting', 'Connecting to log stream…')\n : tr('logs.waitingForEntries', 'Waiting for log entries…')}\n </div>\n ) : (\n filteredEntries.map((entry, index) => (\n <div\n key={`${entry.timestamp}-${entry.source}-${index}`}\n className={`flex gap-2 border-b border-border-default/30 px-3 py-0.5 hover:bg-bg-sunken ${LEVEL_BG[entry.level] ?? ''}`}\n >\n <span className=\"w-[85px] shrink-0 text-text-tertiary\">\n {formatTime(entry.timestamp)}\n </span>\n <span\n className={`w-[42px] shrink-0 uppercase font-semibold ${LEVEL_COLORS[entry.level] ?? 'text-text-primary'}`}\n >\n {entry.level}\n </span>\n <span\n className=\"w-[100px] shrink-0 truncate text-text-secondary\"\n title={entry.source}\n >\n [{entry.source}]\n </span>\n <span className=\"flex-1 break-all text-text-primary\">\n {entry.message}\n {entry.metadata && Object.keys(entry.metadata).length > 0 ? (\n <span className=\"ml-2 text-text-tertiary\">{JSON.stringify(entry.metadata)}</span>\n ) : null}\n </span>\n </div>\n ))\n )}\n </div>\n </div>\n );\n};\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"NoteCard.js","names":[],"sources":["../../../src/components/notes/NoteCard.tsx"],"sourcesContent":["import { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport {\n FileText,\n Pin,\n Tag,\n MoreVertical,\n Edit,\n Trash2,\n PinOff,\n Lock,\n Globe,\n Share2,\n} from 'lucide-react';\nimport { useState } from 'react';\nimport { motion, AnimatePresence } from 'framer-motion';\nimport type { Note } from './types';\n\ninterface NoteCardProps {\n note: Note;\n onOpen?: (note: Note) => void;\n onEdit?: (note: Note) => void;\n onDelete?: (note: Note) => void;\n onPin?: (note: Note) => void;\n onUnpin?: (note: Note) => void;\n /**\n * Generic-sharing entry point: opens the full Share dialog (users / link /\n * vibe). Provided only when the caller has share permission + the\n * `vibecontrols.sharing.note` flag is on.\n *\n * This supersedes the old PRIVATE↔WORKSPACE visibility toggle — see\n * `vibecontrols-specs/business/production/visibility-feature-audit-boff-3036.md`.\n * Visibility on a note is now exclusively modelled through share grants; the\n * legacy binary toggle has been removed to avoid two parallel sharing models.\n */\n onShareAccess?: (note: Note) => void;\n}\n\nexport function NoteCard({\n note,\n onOpen,\n onEdit,\n onDelete,\n onPin,\n onUnpin,\n onShareAccess,\n}: NoteCardProps) {\n const { t } = useI18n();\n const tr = (key: string, fallback: string) => {\n const v = t(key);\n return v === key ? fallback : v;\n };\n const [showMenu, setShowMenu] = useState(false);\n\n const formatDate = (dateStr: string) => {\n return new Date(dateStr).toLocaleDateString('en-US', {\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n });\n };\n\n const getPreview = (content: string) => {\n // Remove markdown headers and get first 100 chars\n const text = content\n .replace(/^#+\\s+/gm, '')\n .replace(/\\n/g, ' ')\n .trim();\n return text.length > 100 ? text.slice(0, 100) + '...' : text;\n };\n\n return (\n <motion.div\n whileHover={{ transition: { duration: 0.15, ease: [0.4, 0, 0.2, 1] } }}\n whileTap={{ scale: 0.98 }}\n className=\"bg-bg-surface border border-border-default rounded-lg p-4 hover:border-border-strong hover:shadow-md transition-all cursor-pointer\"\n onClick={() => onOpen?.(note)}\n >\n <div className=\"flex items-start justify-between gap-3\">\n <div className=\"flex items-start gap-3 min-w-0\">\n <div className=\"flex-shrink-0 size-10 rounded-lg bg-status-warning-bg flex items-center justify-center\">\n <FileText className=\"size-5 text-status-warning-text\" />\n </div>\n <div className=\"min-w-0\">\n <div className=\"flex items-center gap-2\">\n <h3 className=\"font-semibold text-text-primary truncate\">{note.title}</h3>\n {note.isPinned && <Pin className=\"size-4 text-status-warning-text flex-shrink-0\" />}\n {note.visibility === 'PRIVATE' ? (\n <span title=\"Private note\">\n <Lock className=\"size-3.5 text-text-muted flex-shrink-0\" />\n </span>\n ) : (\n <span title=\"Workspace note\">\n <Globe className=\"size-3.5 text-text-muted flex-shrink-0\" />\n </span>\n )}\n </div>\n <p className=\"text-xs text-text-secondary\">{formatDate(note.updatedAt)}</p>\n </div>\n </div>\n <div className=\"relative\">\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n setShowMenu(!showMenu);\n }}\n className=\"p-1 rounded hover:bg-bg-sunken transition-colors\"\n >\n <MoreVertical className=\"size-4 text-text-secondary\" />\n </button>\n <AnimatePresence>\n {showMenu && (\n <motion.div\n initial={{ opacity: 0, scale: 0.95, y: -4 }}\n animate={{ opacity: 1, scale: 1, y: 0 }}\n exit={{ opacity: 0, scale: 0.95, y: -4 }}\n transition={{ duration: 0.15 }}\n className=\"absolute right-0 mt-1 w-36 bg-bg-surface border border-border-default rounded-lg shadow-lg z-10\"\n >\n {onEdit && (\n <motion.button\n whileTap={{ scale: 0.97 }}\n onClick={(e) => {\n e.stopPropagation();\n onEdit(note);\n setShowMenu(false);\n }}\n className=\"flex items-center gap-2 w-full px-3 py-2 text-sm text-text-primary hover:bg-bg-sunken rounded-t-lg\"\n >\n <Edit className=\"size-4\" />\n Edit\n </motion.button>\n )}\n {onShareAccess && (\n <motion.button\n whileTap={{ scale: 0.97 }}\n data-testid=\"note-share-access\"\n onClick={(e) => {\n e.stopPropagation();\n onShareAccess(note);\n setShowMenu(false);\n }}\n className=\"flex items-center gap-2 w-full px-3 py-2 text-sm text-text-primary hover:bg-bg-sunken\"\n >\n <Share2 className=\"size-4\" />\n Share access…\n </motion.button>\n )}\n {note.isPinned && onUnpin && (\n <motion.button\n whileTap={{ scale: 0.97 }}\n onClick={(e) => {\n e.stopPropagation();\n onUnpin(note);\n setShowMenu(false);\n }}\n className=\"flex items-center gap-2 w-full px-3 py-2 text-sm text-text-primary hover:bg-bg-sunken\"\n >\n <PinOff className=\"size-4\" />\n Unpin\n </motion.button>\n )}\n {!note.isPinned && onPin && (\n <motion.button\n whileTap={{ scale: 0.97 }}\n onClick={(e) => {\n e.stopPropagation();\n onPin(note);\n setShowMenu(false);\n }}\n className=\"flex items-center gap-2 w-full px-3 py-2 text-sm text-text-primary hover:bg-bg-sunken\"\n >\n <Pin className=\"size-4\" />\n Pin\n </motion.button>\n )}\n {onDelete && (\n <motion.button\n whileTap={{ scale: 0.97 }}\n onClick={(e) => {\n e.stopPropagation();\n onDelete(note);\n setShowMenu(false);\n }}\n className=\"flex items-center gap-2 w-full px-3 py-2 text-sm text-status-error-text hover:bg-bg-sunken rounded-b-lg\"\n >\n <Trash2 className=\"size-4\" />\n Delete\n </motion.button>\n )}\n </motion.div>\n )}\n </AnimatePresence>\n </div>\n </div>\n\n <p className=\"mt-3 text-sm text-text-secondary line-clamp-2\">{getPreview(note.content)}</p>\n\n {/* Render tagAssignments if available, otherwise fall back to legacy string tags */}\n {note.tagAssignments && note.tagAssignments.length > 0 ? (\n <div className=\"mt-3 flex flex-wrap gap-1\">\n {note.tagAssignments.slice(0, 3).map((assignment) => (\n <span\n key={assignment.id}\n className=\"inline-flex items-center gap-1 px-2 py-0.5 text-xs bg-[var(--color-accent-soft)] text-text-primary rounded\"\n style={\n assignment.tag?.color\n ? { borderLeft: `3px solid ${assignment.tag.color}` }\n : undefined\n }\n >\n <Tag className=\"size-3\" />\n {assignment.tag?.label ?? assignment.tagId.slice(0, 8)}\n </span>\n ))}\n {note.tagAssignments.length > 3 && (\n <span className=\"px-2 py-0.5 text-xs bg-bg-sunken text-text-secondary rounded\">\n +{note.tagAssignments.length - 3}\n </span>\n )}\n </div>\n ) : note.tags && note.tags.length > 0 ? (\n <div className=\"mt-3 flex flex-wrap gap-1\">\n {note.tags.slice(0, 3).map((tag) => (\n <span\n key={tag}\n className=\"inline-flex items-center gap-1 px-2 py-0.5 text-xs bg-bg-sunken text-text-secondary rounded\"\n >\n <Tag className=\"size-3\" />\n {tag}\n </span>\n ))}\n {note.tags.length > 3 && (\n <span className=\"px-2 py-0.5 text-xs bg-bg-sunken text-text-secondary rounded\">\n +{note.tags.length - 3}\n </span>\n )}\n </div>\n ) : null}\n </motion.div>\n );\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"NoteEditor.js","names":[],"sources":["../../../src/components/notes/NoteEditor.tsx"],"sourcesContent":["import { useState, useEffect } from 'react';\nimport { X, Save, Eye, Edit, Tag, Check, Plus, Lock, Globe } from 'lucide-react';\nimport type { CreateNoteInput, Note, NoteTagAssignment, NoteVisibility } from './types';\nimport { useAvailableNoteTagsQuery, useCreateNoteTagMutation } from '@/generated/wspace-operations';\nimport { useTr } from '../../shared/hooks/useTr';\nimport { useVibeControls } from '../../providers/VibeControlsProvider';\n\n/** Tag selected in the editor */\nexport interface SelectedTag {\n id: string;\n key: string;\n label: string;\n color: string | null;\n}\n\n/** Note data submitted from the editor — includes `id` and selected tag IDs */\nexport type NoteEditorSubmitData = CreateNoteInput & {\n id?: string;\n selectedTagIds?: string[];\n visibility?: NoteVisibility;\n};\n\nconst TAG_COLORS = [\n 'var(--color-status-error-text)',\n 'var(--color-status-warning-text)',\n 'var(--color-status-success-text)',\n 'var(--color-accent-teal)',\n 'var(--color-text-link)',\n 'var(--color-accent-purple)',\n 'var(--color-text-tertiary)',\n];\n\ninterface NoteEditorProps {\n note?: Note;\n vibeOptions?: { id: string; name: string }[];\n /** Pre-set vibeId when creating a new note (used in vibe-scoped context) */\n defaultVibeId?: string;\n /** Hide the vibe dropdown (used when notes are scoped to a single vibe) */\n hideVibeSelect?: boolean;\n onSubmit: (data: NoteEditorSubmitData) => void;\n onCancel: () => void;\n isLoading?: boolean;\n}\n\nexport function NoteEditor({\n note,\n vibeOptions = [],\n defaultVibeId,\n hideVibeSelect,\n onSubmit,\n onCancel,\n isLoading,\n}: NoteEditorProps) {\n const tr = useTr();\n const { workspaceId } = useVibeControls();\n const [isPreview, setIsPreview] = useState(false);\n const [formData, setFormData] = useState({\n title: note?.title || '',\n content: note?.content || '',\n vibeId: note?.vibeId || defaultVibeId || '',\n isPinned: note?.isPinned ?? false,\n visibility: (note?.visibility ?? 'WORKSPACE') as NoteVisibility,\n });\n\n // Tag picker state\n const [selectedTagIds, setSelectedTagIds] = useState<Set<string>>(new Set());\n const [tagsInitialized, setTagsInitialized] = useState(false);\n const [showTagPicker, setShowTagPicker] = useState(false);\n\n // Fetch available tags from wspace-tags-svc\n const { data: tagsData, refetch: refetchTags } = useAvailableNoteTagsQuery();\n const availableTags: SelectedTag[] = (tagsData?.availableNoteTags ?? []).map(\n (t: { id: string; key: string; label: string; color?: string | null }) => ({\n id: t.id,\n key: t.key,\n label: t.label,\n color: t.color ?? null,\n })\n );\n\n // Initialize selected tags once available tags load\n useEffect(() => {\n if (tagsInitialized || availableTags.length === 0) return;\n const ids = new Set<string>();\n\n // First: pre-select from tagAssignments (tags service data)\n if (note?.tagAssignments && note.tagAssignments.length > 0) {\n note.tagAssignments.forEach((a: NoteTagAssignment) => ids.add(a.tagId));\n }\n // Fallback: match legacy string tags by label/key to available tags\n else if (note?.tags && note.tags.length > 0) {\n for (const legacyTag of note.tags) {\n const match = availableTags.find(\n (t) =>\n t.label.toLowerCase() === legacyTag.toLowerCase() || t.key === legacyTag.toLowerCase()\n );\n if (match) ids.add(match.id);\n }\n }\n\n if (ids.size > 0) setSelectedTagIds(ids);\n setTagsInitialized(true);\n }, [availableTags, note, tagsInitialized]);\n\n // Inline tag creation\n const [createNoteTag] = useCreateNoteTagMutation();\n const [newTagLabel, setNewTagLabel] = useState('');\n const [newTagColor, setNewTagColor] = useState('var(--color-accent-purple)');\n const [isCreatingTag, setIsCreatingTag] = useState(false);\n\n const handleCreateTag = async () => {\n const label = newTagLabel.trim();\n if (!label || isCreatingTag) return;\n setIsCreatingTag(true);\n try {\n const result = await createNoteTag({\n variables: { input: { label, color: newTagColor } },\n });\n const newTag = result.data?.createNoteTag;\n if (newTag) {\n setSelectedTagIds((prev) => new Set(prev).add(newTag.id));\n await refetchTags();\n }\n setNewTagLabel('');\n } catch (err) {\n console.error('Failed to create tag:', err);\n } finally {\n setIsCreatingTag(false);\n }\n };\n\n const toggleTag = (tagId: string) => {\n setSelectedTagIds((prev) => {\n const next = new Set(prev);\n if (next.has(tagId)) {\n next.delete(tagId);\n } else {\n next.add(tagId);\n }\n return next;\n });\n };\n\n const handleSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n const data: NoteEditorSubmitData = {\n ...(note?.id ? { id: note.id } : {}),\n workspaceId: workspaceId ?? '',\n title: formData.title,\n content: formData.content,\n vibeId: formData.vibeId || undefined,\n isPinned: formData.isPinned,\n visibility: formData.visibility,\n selectedTagIds: Array.from(selectedTagIds),\n };\n onSubmit(data);\n };\n\n // Enhanced markdown preview with inline formatting support\n const parseInlineFormatting = (text: string): React.ReactNode[] => {\n const parts: React.ReactNode[] = [];\n let remaining = text;\n let key = 0;\n\n while (remaining.length > 0) {\n // Bold: **text** or __text__\n const boldMatch = remaining.match(/^(\\*\\*|__)(.+?)\\1/);\n if (boldMatch) {\n parts.push(<strong key={key++}>{parseInlineFormatting(boldMatch[2])}</strong>);\n remaining = remaining.slice(boldMatch[0].length);\n continue;\n }\n\n // Italic: *text* or _text_\n const italicMatch = remaining.match(/^(\\*|_)([^*_]+?)\\1/);\n if (italicMatch) {\n parts.push(<em key={key++}>{parseInlineFormatting(italicMatch[2])}</em>);\n remaining = remaining.slice(italicMatch[0].length);\n continue;\n }\n\n // Strikethrough: ~~text~~\n const strikeMatch = remaining.match(/^~~(.+?)~~/);\n if (strikeMatch) {\n parts.push(<del key={key++}>{parseInlineFormatting(strikeMatch[1])}</del>);\n remaining = remaining.slice(strikeMatch[0].length);\n continue;\n }\n\n // Inline code: `code`\n const codeMatch = remaining.match(/^`([^`]+)`/);\n if (codeMatch) {\n parts.push(\n <code\n key={key++}\n className=\"bg-bg-elevated px-1.5 py-0.5 rounded text-sm font-mono text-text-primary\"\n >\n {codeMatch[1]}\n </code>\n );\n remaining = remaining.slice(codeMatch[0].length);\n continue;\n }\n\n // Links: [text](url) - only allow safe URL schemes to prevent XSS\n const linkMatch = remaining.match(/^\\[([^\\]]+)\\]\\(([^)]+)\\)/);\n if (linkMatch) {\n const url = linkMatch[2];\n // Only allow http, https, mailto, relative paths, and hash links to prevent XSS via javascript: URLs\n const isSafeUrl = /^(https?:\\/\\/|mailto:|\\/|#)/i.test(url);\n if (isSafeUrl) {\n parts.push(\n <a\n key={key++}\n href={url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"text-action-primary-bg hover:underline\"\n >\n {linkMatch[1]}\n </a>\n );\n } else {\n // Render unsafe links as plain text with muted styling\n parts.push(\n <span key={key++} className=\"text-text-secondary\">\n {linkMatch[1]}\n </span>\n );\n }\n remaining = remaining.slice(linkMatch[0].length);\n continue;\n }\n\n // No match - take the next character\n parts.push(remaining[0]);\n remaining = remaining.slice(1);\n }\n\n return parts;\n };\n\n // Parse markdown content into React elements\n const renderMarkdown = (text: string) => {\n const lines = text.split('\\n');\n const elements: React.ReactNode[] = [];\n let i = 0;\n\n while (i < lines.length) {\n const line = lines[i];\n\n // Code blocks: ```\n if (line.startsWith('```')) {\n const language = line.slice(3).trim();\n const codeLines: string[] = [];\n i++;\n while (i < lines.length && !lines[i].startsWith('```')) {\n codeLines.push(lines[i]);\n i++;\n }\n elements.push(\n <pre key={elements.length} className=\"bg-bg-elevated rounded-md p-3 my-2 overflow-x-auto\">\n <code className=\"text-sm font-mono text-text-primary\">\n {language && (\n <span className=\"text-xs text-text-secondary block mb-2\">{language}</span>\n )}\n {codeLines.join('\\n')}\n </code>\n </pre>\n );\n i++;\n continue;\n }\n\n // Headings\n if (line.startsWith('# ')) {\n elements.push(\n <h1 key={elements.length} className=\"text-2xl font-bold mb-2 mt-4\">\n {parseInlineFormatting(line.slice(2))}\n </h1>\n );\n i++;\n continue;\n }\n if (line.startsWith('## ')) {\n elements.push(\n <h2 key={elements.length} className=\"text-xl font-bold mb-2 mt-3\">\n {parseInlineFormatting(line.slice(3))}\n </h2>\n );\n i++;\n continue;\n }\n if (line.startsWith('### ')) {\n elements.push(\n <h3 key={elements.length} className=\"text-lg font-bold mb-2 mt-2\">\n {parseInlineFormatting(line.slice(4))}\n </h3>\n );\n i++;\n continue;\n }\n\n // Blockquotes: > text\n if (line.startsWith('> ')) {\n elements.push(\n <blockquote\n key={elements.length}\n className=\"border-l-4 border-border-default pl-4 my-2 italic text-text-secondary\"\n >\n {parseInlineFormatting(line.slice(2))}\n </blockquote>\n );\n i++;\n continue;\n }\n\n // Unordered list: - or * (collect consecutive items and wrap in <ul>)\n if (line.match(/^[-*] /)) {\n const listItems: React.ReactNode[] = [];\n while (i < lines.length && lines[i].match(/^[-*] /)) {\n listItems.push(\n <li key={listItems.length} className=\"list-disc\">\n {parseInlineFormatting(lines[i].slice(2))}\n </li>\n );\n i++;\n }\n elements.push(\n <ul key={elements.length} className=\"ml-6 my-2\">\n {listItems}\n </ul>\n );\n continue;\n }\n\n // Ordered list: 1. 2. etc. (collect consecutive items and wrap in <ol>)\n const orderedMatch = line.match(/^(\\d+)\\. /);\n if (orderedMatch) {\n const listItems: React.ReactNode[] = [];\n while (i < lines.length) {\n const olMatch = lines[i].match(/^(\\d+)\\. /);\n if (!olMatch) break;\n listItems.push(\n <li key={listItems.length} className=\"list-decimal\">\n {parseInlineFormatting(lines[i].slice(olMatch[0].length))}\n </li>\n );\n i++;\n }\n elements.push(\n <ol key={elements.length} className=\"ml-6 my-2\">\n {listItems}\n </ol>\n );\n continue;\n }\n\n // Horizontal rule: --- or ***\n if (line.match(/^(-{3,}|\\*{3,})$/)) {\n elements.push(<hr key={elements.length} className=\"my-4 border-border-default\" />);\n i++;\n continue;\n }\n\n // Table detection (simple): | col1 | col2 |\n if (line.startsWith('|') && line.endsWith('|')) {\n const tableLines: string[] = [line];\n i++;\n while (i < lines.length && lines[i].startsWith('|') && lines[i].endsWith('|')) {\n tableLines.push(lines[i]);\n i++;\n }\n\n // Parse table\n const rows = tableLines\n .filter((l) => !l.match(/^\\|[\\s\\-:|]+\\|$/)) // Skip separator rows (including alignment markers like :---:)\n .map((l) =>\n l\n .slice(1, -1)\n .split('|')\n .map((cell) => cell.trim())\n );\n\n if (rows.length > 0) {\n const [header, ...body] = rows;\n elements.push(\n <table key={elements.length} className=\"w-full my-2 border-collapse text-sm\">\n <thead>\n <tr className=\"border-b border-border-default\">\n {header.map((cell, ci) => (\n <th key={ci} className=\"text-left py-2 px-3 font-semibold text-text-primary\">\n {parseInlineFormatting(cell)}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {body.map((row, ri) => (\n <tr key={ri} className=\"border-b border-border-subtle\">\n {row.map((cell, ci) => (\n <td key={ci} className=\"py-2 px-3 text-text-primary\">\n {parseInlineFormatting(cell)}\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n );\n }\n continue;\n }\n\n // Empty line\n if (line === '') {\n elements.push(<br key={elements.length} />);\n i++;\n continue;\n }\n\n // Regular paragraph with inline formatting\n elements.push(\n <p key={elements.length} className=\"mb-1\">\n {parseInlineFormatting(line)}\n </p>\n );\n i++;\n }\n\n return elements;\n };\n\n return (\n <div className=\"fixed inset-0 z-50 flex items-center justify-center bg-bg-overlay\">\n <div className=\"w-full max-w-3xl bg-bg-surface rounded-lg shadow-xl max-h-[90vh] flex flex-col\">\n <div className=\"flex items-center justify-between px-6 py-4 border-b border-border-default\">\n <h2 className=\"text-lg font-semibold text-text-primary\">\n {note\n ? tr('vibecontrols.notes.editNote', 'Edit Note')\n : tr('vibecontrols.notes.newNote', 'New Note')}\n </h2>\n <div className=\"flex items-center gap-2\">\n <button\n type=\"button\"\n onClick={() => setIsPreview(!isPreview)}\n className={`inline-flex items-center gap-2 px-3 py-1.5 text-sm rounded-md transition-colors ${\n isPreview\n ? 'bg-action-primary-bg text-action-primary-text'\n : 'bg-bg-sunken text-text-primary hover:bg-bg-elevated'\n }`}\n >\n {isPreview ? <Edit className=\"size-4\" /> : <Eye className=\"size-4\" />}\n {isPreview\n ? tr('vibecontrols.notes.edit', 'Edit')\n : tr('vibecontrols.notes.preview', 'Preview')}\n </button>\n <button\n type=\"button\"\n onClick={onCancel}\n className=\"p-1 rounded hover:bg-bg-sunken transition-colors\"\n >\n <X className=\"size-5 text-text-secondary\" />\n </button>\n </div>\n </div>\n\n <form onSubmit={handleSubmit} className=\"flex-1 flex flex-col overflow-hidden\">\n <div className=\"p-6 space-y-4 flex-1 overflow-y-auto\">\n <div>\n <input\n aria-label=\"control\"\n type=\"text\"\n value={formData.title}\n onChange={(e) => setFormData({ ...formData, title: e.target.value })}\n placeholder={tr('vibecontrols.notes.titlePlaceholder', 'Note title...')}\n required\n className=\"w-full px-0 py-2 text-lg sm:text-2xl font-bold bg-transparent border-0 border-b border-border-default text-text-primary placeholder:text-text-placeholder focus:outline-none focus:border-action-primary-bg\"\n />\n </div>\n\n <div className={`grid ${hideVibeSelect ? 'grid-cols-1' : 'grid-cols-2'} gap-4`}>\n {!hideVibeSelect && (\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">\n {tr('vibecontrols.notes.relatedVibe', 'Related Vibe (optional)')}\n </label>\n <select\n value={formData.vibeId}\n onChange={(e) => setFormData({ ...formData, vibeId: e.target.value })}\n className=\"w-full px-3 py-2 text-sm bg-bg-sunken border border-border-default rounded-md text-text-primary focus:outline-none focus:ring-2 focus:ring-action-primary-bg\"\n >\n <option value=\"\">No vibe</option>\n {vibeOptions.map((vibe) => (\n <option key={vibe.id} value={vibe.id}>\n {vibe.name}\n </option>\n ))}\n </select>\n </div>\n )}\n <div>\n <label className=\"block text-sm font-medium text-text-primary mb-1\">\n {tr('vibecontrols.notes.tags', 'Tags')}\n </label>\n {/* Selected tags */}\n <div className=\"flex flex-wrap gap-1.5 min-h-[38px] px-3 py-2 bg-bg-sunken border border-border-default rounded-md\">\n {availableTags\n .filter((t) => selectedTagIds.has(t.id))\n .map((tag) => (\n <span\n key={tag.id}\n className=\"inline-flex items-center gap-1 px-2 py-0.5 text-xs font-medium bg-[var(--color-accent-soft)] text-text-primary rounded\"\n >\n <Tag className=\"size-3\" />\n {tag.label}\n <button\n type=\"button\"\n onClick={() => toggleTag(tag.id)}\n className=\"ml-0.5 hover:text-status-error-text\"\n >\n <X className=\"size-3\" />\n </button>\n </span>\n ))}\n <button\n type=\"button\"\n onClick={() => setShowTagPicker(!showTagPicker)}\n className=\"inline-flex items-center gap-1 px-2 py-0.5 text-xs text-text-secondary hover:text-text-primary hover:bg-bg-elevated rounded transition-colors\"\n >\n <Tag className=\"size-3\" />\n {selectedTagIds.size === 0 ? 'Add tags...' : '+'}\n </button>\n </div>\n {/* Tag picker dropdown */}\n {showTagPicker && (\n <div className=\"mt-1 bg-bg-surface border border-border-default rounded-md shadow-lg\">\n {/* Inline create: text input + color picker */}\n <div className=\"flex items-center gap-2 p-2 border-b border-border-subtle\">\n <span\n aria-hidden=\"true\"\n className=\"size-6 rounded-full border-2 border-border-default\"\n style={{ backgroundColor: newTagColor }}\n />\n <input\n aria-label=\"New tag name... (Enter to create)\"\n type=\"text\"\n value={newTagLabel}\n onChange={(e) => setNewTagLabel(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n handleCreateTag();\n }\n }}\n placeholder=\"New tag name... (Enter to create)\"\n disabled={isCreatingTag}\n className=\"flex-1 px-2 py-1 text-sm bg-bg-sunken border border-border-default rounded text-text-primary placeholder:text-text-placeholder focus:outline-none focus:ring-1 focus:ring-action-primary-bg disabled:opacity-50\"\n />\n <button\n type=\"button\"\n onClick={handleCreateTag}\n disabled={!newTagLabel.trim() || isCreatingTag}\n className=\"p-1 text-action-primary-bg hover:bg-[var(--color-accent-soft)] rounded transition-colors disabled:opacity-30\"\n >\n <Plus className=\"size-4\" />\n </button>\n </div>\n {/* Quick color palette */}\n <div className=\"flex items-center gap-1 px-2 py-1.5 border-b border-border-subtle\">\n {TAG_COLORS.map((c) => (\n <button\n key={c}\n type=\"button\"\n onClick={() => setNewTagColor(c)}\n className={`size-4 rounded-full transition-transform ${newTagColor === c ? 'ring-2 ring-action-primary-bg scale-125' : ''}`}\n style={{ backgroundColor: c }}\n />\n ))}\n </div>\n {/* Existing tags list */}\n <div className=\"max-h-32 overflow-y-auto p-1\">\n {availableTags.length === 0 ? (\n <p className=\"text-xs text-text-muted px-2 py-1\">\n No tags yet — create one above\n </p>\n ) : (\n availableTags.map((tag) => (\n <button\n key={tag.id}\n type=\"button\"\n onClick={() => toggleTag(tag.id)}\n className=\"flex items-center justify-between w-full px-2 py-1.5 text-sm text-text-primary hover:bg-bg-sunken rounded transition-colors\"\n >\n <span className=\"flex items-center gap-2\">\n {tag.color && (\n <span\n className=\"size-2.5 rounded-full\"\n style={{ backgroundColor: tag.color }}\n />\n )}\n {tag.label}\n </span>\n {selectedTagIds.has(tag.id) && (\n <Check className=\"size-4 text-action-primary-bg\" />\n )}\n </button>\n ))\n )}\n </div>\n </div>\n )}\n </div>\n </div>\n\n <div className=\"flex-1 min-h-[300px]\">\n {isPreview ? (\n <div className=\"h-full p-4 bg-bg-sunken rounded-md prose prose-sm dark:prose-invert max-w-none overflow-y-auto\">\n {renderMarkdown(formData.content)}\n </div>\n ) : (\n <textarea\n aria-label=\"control\"\n value={formData.content}\n onChange={(e) => setFormData({ ...formData, content: e.target.value })}\n placeholder={tr(\n 'vibecontrols.notes.contentPlaceholder',\n 'Write your note in Markdown...'\n )}\n className=\"w-full h-full min-h-[300px] px-3 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 resize-none font-mono\"\n />\n )}\n </div>\n\n <div className=\"flex items-center gap-4 flex-wrap\">\n <div className=\"flex items-center gap-2\">\n <input\n aria-label=\"isPinned\"\n type=\"checkbox\"\n id=\"isPinned\"\n checked={formData.isPinned}\n onChange={(e) => setFormData({ ...formData, isPinned: e.target.checked })}\n className=\"size-4 rounded border-border-default text-action-primary-bg focus:ring-action-primary-bg\"\n />\n <label htmlFor=\"isPinned\" className=\"text-sm text-text-primary\">\n {tr('vibecontrols.notes.pinThisNote', 'Pin this note')}\n </label>\n </div>\n\n {/* Visibility toggle */}\n <div className=\"flex items-center gap-1 bg-bg-sunken rounded-lg p-0.5\">\n <button\n type=\"button\"\n onClick={() => setFormData({ ...formData, visibility: 'WORKSPACE' })}\n className={`flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium rounded-md transition-colors ${\n formData.visibility === 'WORKSPACE'\n ? 'bg-bg-surface text-text-primary shadow-sm'\n : 'text-text-muted hover:text-text-secondary'\n }`}\n >\n <Globe className=\"size-3.5\" />\n Workspace\n </button>\n <button\n type=\"button\"\n onClick={() => setFormData({ ...formData, visibility: 'PRIVATE' })}\n className={`flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium rounded-md transition-colors ${\n formData.visibility === 'PRIVATE'\n ? 'bg-bg-surface text-text-primary shadow-sm'\n : 'text-text-muted hover:text-text-secondary'\n }`}\n >\n <Lock className=\"size-3.5\" />\n Private\n </button>\n </div>\n {formData.visibility === 'PRIVATE' && (\n <p className=\"text-xs text-text-muted w-full -mt-2\">Only you can see this note.</p>\n )}\n </div>\n </div>\n\n <div className=\"flex items-center justify-end gap-3 px-6 py-4 border-t border-border-default bg-bg-sunken\">\n <button\n type=\"button\"\n onClick={onCancel}\n disabled={isLoading}\n className=\"px-4 py-2 text-sm font-medium text-text-primary bg-bg-surface border border-border-default rounded-md hover:bg-bg-elevated transition-colors disabled:opacity-50\"\n >\n {tr('vibecontrols.notes.cancel', 'Cancel')}\n </button>\n <button\n type=\"submit\"\n disabled={isLoading}\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 <Save className=\"size-4\" />\n {isLoading\n ? tr('vibecontrols.notes.saving', 'Saving...')\n : tr('vibecontrols.notes.saveNote', 'Save Note')}\n </button>\n </div>\n </form>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"NoteList.js","names":[],"sources":["../../../src/components/notes/NoteList.tsx"],"sourcesContent":["import type { Note } from './types';\nimport { EmptyState } from '../shared/EmptyState';\nimport {\n FileText,\n Plus,\n Pin,\n Tag,\n MoreVertical,\n Edit,\n Trash2,\n PinOff,\n Lock,\n Globe,\n Share2,\n} from 'lucide-react';\nimport { useState } from 'react';\nimport { useTr } from '../../shared/hooks/useTr';\n\ninterface NoteListProps {\n notes: Note[];\n onOpen?: (note: Note) => void;\n onEdit?: (note: Note) => void;\n onDelete?: (note: Note) => void;\n onPin?: (note: Note) => void;\n onUnpin?: (note: Note) => void;\n /** Generic-sharing entry point (full Share dialog); see NoteCard.onShareAccess. */\n onShareAccess?: (note: Note) => void;\n onCreateNew?: () => void;\n isLoading?: boolean;\n}\n\nfunction NoteRow({\n note,\n onOpen,\n onEdit,\n onDelete,\n onPin,\n onUnpin,\n onShareAccess,\n}: {\n note: Note;\n onOpen?: (note: Note) => void;\n onEdit?: (note: Note) => void;\n onDelete?: (note: Note) => void;\n onPin?: (note: Note) => void;\n onUnpin?: (note: Note) => void;\n onShareAccess?: (note: Note) => void;\n}) {\n const [showMenu, setShowMenu] = useState(false);\n\n const formatDate = (dateStr: string) => {\n return new Date(dateStr).toLocaleDateString('en-US', {\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n });\n };\n\n const getPreview = (content: string) => {\n const text = content\n .replace(/^#+\\s+/gm, '')\n .replace(/\\n/g, ' ')\n .trim();\n return text.length > 80 ? text.slice(0, 80) + '...' : text;\n };\n\n return (\n <tr\n className=\"border-b border-border-subtle hover:bg-bg-sunken/50 cursor-pointer transition-colors\"\n onClick={() => onOpen?.(note)}\n >\n <td className=\"px-4 py-3\">\n <div className=\"flex items-center gap-3 min-w-0\">\n <FileText className=\"size-4 text-status-warning-text shrink-0\" />\n <div className=\"min-w-0\">\n <div className=\"flex items-center gap-1.5\">\n <p className=\"text-sm font-medium text-text-primary truncate\">{note.title}</p>\n {note.isPinned && <Pin className=\"size-3 text-status-warning-text shrink-0\" />}\n {note.visibility === 'PRIVATE' ? (\n <span title=\"Private\">\n <Lock className=\"size-3 text-text-muted shrink-0\" />\n </span>\n ) : (\n <span title=\"Workspace\">\n <Globe className=\"size-3 text-text-muted shrink-0\" />\n </span>\n )}\n </div>\n <p className=\"text-xs text-text-muted truncate max-w-[300px]\">\n {getPreview(note.content)}\n </p>\n </div>\n </div>\n </td>\n <td className=\"px-4 py-3\">\n <span className=\"text-sm text-text-secondary truncate block max-w-[100px]\">\n {note.vibe?.name || '-'}\n </span>\n </td>\n <td className=\"px-4 py-3\">\n {/* Render tagAssignments if available, otherwise fall back to legacy string tags */}\n {note.tagAssignments && note.tagAssignments.length > 0 ? (\n <div className=\"flex flex-wrap gap-1\">\n {note.tagAssignments.slice(0, 2).map((assignment) => (\n <span\n key={assignment.id}\n className=\"inline-flex items-center gap-0.5 px-1.5 py-0.5 text-xs bg-[var(--color-accent-soft)] text-text-primary rounded\"\n style={\n assignment.tag?.color\n ? { borderLeft: `2px solid ${assignment.tag.color}` }\n : undefined\n }\n >\n <Tag className=\"size-2.5\" />\n {assignment.tag?.label ?? assignment.tagId.slice(0, 8)}\n </span>\n ))}\n {note.tagAssignments.length > 2 && (\n <span className=\"px-1.5 py-0.5 text-xs bg-bg-sunken text-text-secondary rounded\">\n +{note.tagAssignments.length - 2}\n </span>\n )}\n </div>\n ) : note.tags && note.tags.length > 0 ? (\n <div className=\"flex flex-wrap gap-1\">\n {note.tags.slice(0, 2).map((tag) => (\n <span\n key={tag}\n className=\"inline-flex items-center gap-0.5 px-1.5 py-0.5 text-xs bg-bg-sunken text-text-secondary rounded\"\n >\n <Tag className=\"size-2.5\" />\n {tag}\n </span>\n ))}\n {note.tags.length > 2 && (\n <span className=\"px-1.5 py-0.5 text-xs bg-bg-sunken text-text-secondary rounded\">\n +{note.tags.length - 2}\n </span>\n )}\n </div>\n ) : (\n <span className=\"text-xs text-text-muted\">-</span>\n )}\n </td>\n <td className=\"px-4 py-3\">\n <span className=\"text-xs text-text-muted\">{formatDate(note.updatedAt)}</span>\n </td>\n <td className=\"px-4 py-3\">\n <div className=\"flex items-center gap-1 justify-end\">\n {(onEdit || onDelete || onPin || onUnpin || onShareAccess) && (\n <div className=\"relative\">\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n setShowMenu(!showMenu);\n }}\n className=\"p-1.5 rounded hover:bg-bg-sunken transition-colors\"\n >\n <MoreVertical className=\"size-3.5 text-text-secondary\" />\n </button>\n {showMenu && (\n <div className=\"absolute right-0 mt-1 w-44 bg-bg-surface border border-border-default rounded-lg shadow-lg z-50\">\n {onEdit && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n onEdit(note);\n setShowMenu(false);\n }}\n className=\"flex items-center gap-2 w-full px-3 py-2 text-sm text-text-primary hover:bg-bg-sunken rounded-t-lg\"\n >\n <Edit className=\"size-4\" />\n Edit\n </button>\n )}\n {onShareAccess && (\n <button\n type=\"button\"\n data-testid=\"note-share-access\"\n onClick={(e) => {\n e.stopPropagation();\n onShareAccess(note);\n setShowMenu(false);\n }}\n className=\"flex items-center gap-2 w-full px-3 py-2 text-sm text-text-primary hover:bg-bg-sunken\"\n >\n <Share2 className=\"size-4\" />\n Share access…\n </button>\n )}\n {note.isPinned && onUnpin && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n onUnpin(note);\n setShowMenu(false);\n }}\n className=\"flex items-center gap-2 w-full px-3 py-2 text-sm text-text-primary hover:bg-bg-sunken\"\n >\n <PinOff className=\"size-4\" />\n Unpin\n </button>\n )}\n {!note.isPinned && onPin && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n onPin(note);\n setShowMenu(false);\n }}\n className=\"flex items-center gap-2 w-full px-3 py-2 text-sm text-text-primary hover:bg-bg-sunken\"\n >\n <Pin className=\"size-4\" />\n Pin\n </button>\n )}\n {onDelete && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n onDelete(note);\n setShowMenu(false);\n }}\n className=\"flex items-center gap-2 w-full px-3 py-2 text-sm text-status-error-text hover:bg-bg-sunken rounded-b-lg\"\n >\n <Trash2 className=\"size-4\" />\n Delete\n </button>\n )}\n </div>\n )}\n </div>\n )}\n </div>\n </td>\n </tr>\n );\n}\n\nexport function NoteList({\n notes,\n onOpen,\n onEdit,\n onDelete,\n onPin,\n onUnpin,\n onShareAccess,\n onCreateNew,\n isLoading,\n}: NoteListProps) {\n const tr = useTr();\n if (!isLoading && notes.length === 0) {\n return (\n <EmptyState\n icon={<FileText className=\"size-8 text-text-secondary\" />}\n title={tr('vibecontrols.notes.emptyTitle', 'No notes yet')}\n description={tr(\n 'vibecontrols.notes.emptyDescription',\n 'Notes help you document your development process. Create your first note to get started.'\n )}\n action={\n onCreateNew && (\n <button\n type=\"button\"\n onClick={onCreateNew}\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\"\n >\n <Plus className=\"size-4\" />\n {tr('vibecontrols.notes.createNote', 'Create Note')}\n </button>\n )\n }\n />\n );\n }\n\n // Sort: pinned first, then by updated date\n const sortedNotes = [...notes].sort((a, b) => {\n if (a.isPinned && !b.isPinned) return -1;\n if (!a.isPinned && b.isPinned) return 1;\n return new Date(b.updatedAt).getTime() - new Date(a.updatedAt).getTime();\n });\n\n return (\n <div className=\"border border-border-default rounded-lg\">\n <div className=\"overflow-x-auto rounded-lg\">\n <table className=\"w-full\">\n <thead>\n <tr className=\"bg-bg-sunken border-b border-border-default\">\n <th className=\"px-4 py-2.5 text-left text-xs font-medium text-text-secondary uppercase tracking-wider rounded-tl-lg\">\n {tr('vibecontrols.notes.columnTitle', 'Title')}\n </th>\n <th className=\"px-4 py-2.5 text-left text-xs font-medium text-text-secondary uppercase tracking-wider\">\n {tr('vibecontrols.notes.columnVibe', 'Vibe')}\n </th>\n <th className=\"px-4 py-2.5 text-left text-xs font-medium text-text-secondary uppercase tracking-wider\">\n {tr('vibecontrols.notes.columnTags', 'Tags')}\n </th>\n <th className=\"px-4 py-2.5 text-left text-xs font-medium text-text-secondary uppercase tracking-wider\">\n {tr('vibecontrols.notes.columnUpdated', 'Updated')}\n </th>\n <th className=\"px-4 py-2.5 text-right text-xs font-medium text-text-secondary uppercase tracking-wider rounded-tr-lg\">\n {tr('vibecontrols.notes.columnActions', 'Actions')}\n </th>\n </tr>\n </thead>\n <tbody>\n {sortedNotes.map((note) => (\n <NoteRow\n key={note.id}\n note={note}\n onOpen={onOpen}\n onEdit={onEdit}\n onDelete={onDelete}\n onPin={onPin}\n onUnpin={onUnpin}\n onShareAccess={onShareAccess}\n />\n ))}\n </tbody>\n </table>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;AA+BA,SAAS,EAAQ,EACf,SACA,WACA,WACA,aACA,UACA,YACA,oBASC;CACD,IAAM,CAAC,GAAU,KAAe,EAAS,GAAM;AAkB/C,QACE,kBAAC,MAAD;EACE,WAAU;EACV,eAAe,IAAS,EAAK;YAF/B;GAIE,kBAAC,MAAD;IAAI,WAAU;cACZ,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,GAAD,EAAU,WAAU,4CAA6C,CAAA,EACjE,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,OAAD;OAAK,WAAU;iBAAf;QACE,kBAAC,KAAD;SAAG,WAAU;mBAAkD,EAAK;SAAU,CAAA;QAC7E,EAAK,YAAY,kBAAC,GAAD,EAAK,WAAU,4CAA6C,CAAA;QAC7E,EAAK,eAAe,YACnB,kBAAC,QAAD;SAAM,OAAM;mBACV,kBAAC,GAAD,EAAM,WAAU,mCAAoC,CAAA;SAC/C,CAAA,GAEP,kBAAC,QAAD;SAAM,OAAM;mBACV,kBAAC,GAAD,EAAO,WAAU,mCAAoC,CAAA;SAChD,CAAA;QAEL;UACN,kBAAC,KAAD;OAAG,WAAU;mBA9BH,MAAoB;QACtC,IAAM,IAAO,EACV,QAAQ,YAAY,GAAG,CACvB,QAAQ,OAAO,IAAI,CACnB,MAAM;AACT,eAAO,EAAK,SAAS,KAAK,EAAK,MAAM,GAAG,GAAG,GAAG,QAAQ;UA0BhC,EAAK,QAAQ;OACvB,CAAA,CACA;QACF;;IACH,CAAA;GACL,kBAAC,MAAD;IAAI,WAAU;cACZ,kBAAC,QAAD;KAAM,WAAU;eACb,EAAK,MAAM,QAAQ;KACf,CAAA;IACJ,CAAA;GACL,kBAAC,MAAD;IAAI,WAAU;cAEX,EAAK,kBAAkB,EAAK,eAAe,SAAS,IACnD,kBAAC,OAAD;KAAK,WAAU;eAAf,CACG,EAAK,eAAe,MAAM,GAAG,EAAE,CAAC,KAAK,MACpC,kBAAC,QAAD;MAEE,WAAU;MACV,OACE,EAAW,KAAK,QACZ,EAAE,YAAY,aAAa,EAAW,IAAI,SAAS,GACnD,KAAA;gBANR,CASE,kBAAC,GAAD,EAAK,WAAU,YAAa,CAAA,EAC3B,EAAW,KAAK,SAAS,EAAW,MAAM,MAAM,GAAG,EAAE,CACjD;QAVA,EAAW,GAUX,CACP,EACD,EAAK,eAAe,SAAS,KAC5B,kBAAC,QAAD;MAAM,WAAU;gBAAhB,CAAiF,KAC7E,EAAK,eAAe,SAAS,EAC1B;QAEL;SACJ,EAAK,QAAQ,EAAK,KAAK,SAAS,IAClC,kBAAC,OAAD;KAAK,WAAU;eAAf,CACG,EAAK,KAAK,MAAM,GAAG,EAAE,CAAC,KAAK,MAC1B,kBAAC,QAAD;MAEE,WAAU;gBAFZ,CAIE,kBAAC,GAAD,EAAK,WAAU,YAAa,CAAA,EAC3B,EACI;QALA,EAKA,CACP,EACD,EAAK,KAAK,SAAS,KAClB,kBAAC,QAAD;MAAM,WAAU;gBAAhB,CAAiF,KAC7E,EAAK,KAAK,SAAS,EAChB;QAEL;SAEN,kBAAC,QAAD;KAAM,WAAU;eAA0B;KAAQ,CAAA;IAEjD,CAAA;GACL,kBAAC,MAAD;IAAI,WAAU;cACZ,kBAAC,QAAD;KAAM,WAAU;iBA/FF,MACX,IAAI,KAAK,EAAQ,CAAC,mBAAmB,SAAS;MACnD,OAAO;MACP,KAAK;MACL,MAAM;MACP,CAAC,EA0FwD,EAAK,UAAU;KAAQ,CAAA;IAC1E,CAAA;GACL,kBAAC,MAAD;IAAI,WAAU;cACZ,kBAAC,OAAD;KAAK,WAAU;gBACX,KAAU,KAAY,KAAS,KAAW,MAC1C,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,UAAD;OACE,MAAK;OACL,UAAU,MAAM;AAEd,QADA,EAAE,iBAAiB,EACnB,EAAY,CAAC,EAAS;;OAExB,WAAU;iBAEV,kBAAC,GAAD,EAAc,WAAU,gCAAiC,CAAA;OAClD,CAAA,EACR,KACC,kBAAC,OAAD;OAAK,WAAU;iBAAf;QACG,KACC,kBAAC,UAAD;SACE,MAAK;SACL,UAAU,MAAM;AAGd,UAFA,EAAE,iBAAiB,EACnB,EAAO,EAAK,EACZ,EAAY,GAAM;;SAEpB,WAAU;mBAPZ,CASE,kBAAC,GAAD,EAAM,WAAU,UAAW,CAAA,EAAA,OAEpB;;QAEV,KACC,kBAAC,UAAD;SACE,MAAK;SACL,eAAY;SACZ,UAAU,MAAM;AAGd,UAFA,EAAE,iBAAiB,EACnB,EAAc,EAAK,EACnB,EAAY,GAAM;;SAEpB,WAAU;mBARZ,CAUE,kBAAC,GAAD,EAAQ,WAAU,UAAW,CAAA,EAAA,gBAEtB;;QAEV,EAAK,YAAY,KAChB,kBAAC,UAAD;SACE,MAAK;SACL,UAAU,MAAM;AAGd,UAFA,EAAE,iBAAiB,EACnB,EAAQ,EAAK,EACb,EAAY,GAAM;;SAEpB,WAAU;mBAPZ,CASE,kBAAC,GAAD,EAAQ,WAAU,UAAW,CAAA,EAAA,QAEtB;;QAEV,CAAC,EAAK,YAAY,KACjB,kBAAC,UAAD;SACE,MAAK;SACL,UAAU,MAAM;AAGd,UAFA,EAAE,iBAAiB,EACnB,EAAM,EAAK,EACX,EAAY,GAAM;;SAEpB,WAAU;mBAPZ,CASE,kBAAC,GAAD,EAAK,WAAU,UAAW,CAAA,EAAA,MAEnB;;QAEV,KACC,kBAAC,UAAD;SACE,MAAK;SACL,UAAU,MAAM;AAGd,UAFA,EAAE,iBAAiB,EACnB,EAAS,EAAK,EACd,EAAY,GAAM;;SAEpB,WAAU;mBAPZ,CASE,kBAAC,GAAD,EAAQ,WAAU,UAAW,CAAA,EAAA,SAEtB;;QAEP;SAEJ;;KAEJ,CAAA;IACH,CAAA;GACF;;;AAIT,SAAgB,EAAS,EACvB,UACA,WACA,WACA,aACA,UACA,YACA,kBACA,gBACA,gBACgB;CAChB,IAAM,IAAK,GAAO;AAClB,KAAI,CAAC,KAAa,EAAM,WAAW,EACjC,QACE,kBAAC,GAAD;EACE,MAAM,kBAAC,GAAD,EAAU,WAAU,8BAA+B,CAAA;EACzD,OAAO,EAAG,iCAAiC,eAAe;EAC1D,aAAa,EACX,uCACA,2FACD;EACD,QACE,KACE,kBAAC,UAAD;GACE,MAAK;GACL,SAAS;GACT,WAAU;aAHZ,CAKE,kBAAC,GAAD,EAAM,WAAU,UAAW,CAAA,EAC1B,EAAG,iCAAiC,cAAc,CAC5C;;EAGb,CAAA;CAKN,IAAM,IAAc,CAAC,GAAG,EAAM,CAAC,MAAM,GAAG,MAClC,EAAE,YAAY,CAAC,EAAE,WAAiB,KAClC,CAAC,EAAE,YAAY,EAAE,WAAiB,IAC/B,IAAI,KAAK,EAAE,UAAU,CAAC,SAAS,GAAG,IAAI,KAAK,EAAE,UAAU,CAAC,SAAS,CACxE;AAEF,QACE,kBAAC,OAAD;EAAK,WAAU;YACb,kBAAC,OAAD;GAAK,WAAU;aACb,kBAAC,SAAD;IAAO,WAAU;cAAjB,CACE,kBAAC,SAAD,EAAA,UACE,kBAAC,MAAD;KAAI,WAAU;eAAd;MACE,kBAAC,MAAD;OAAI,WAAU;iBACX,EAAG,kCAAkC,QAAQ;OAC3C,CAAA;MACL,kBAAC,MAAD;OAAI,WAAU;iBACX,EAAG,iCAAiC,OAAO;OACzC,CAAA;MACL,kBAAC,MAAD;OAAI,WAAU;iBACX,EAAG,iCAAiC,OAAO;OACzC,CAAA;MACL,kBAAC,MAAD;OAAI,WAAU;iBACX,EAAG,oCAAoC,UAAU;OAC/C,CAAA;MACL,kBAAC,MAAD;OAAI,WAAU;iBACX,EAAG,oCAAoC,UAAU;OAC/C,CAAA;MACF;QACC,CAAA,EACR,kBAAC,SAAD,EAAA,UACG,EAAY,KAAK,MAChB,kBAAC,GAAD;KAEQ;KACE;KACA;KACE;KACH;KACE;KACM;KACf,EARK,EAAK,GAQV,CACF,EACI,CAAA,CACF;;GACJ,CAAA;EACF,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"NotesTabPanel.js","names":[],"sources":["../../../src/components/notes/NotesTabPanel.tsx"],"sourcesContent":["import { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { useState, useMemo } from 'react';\nimport { Plus, FileText, Grid, List, Pin, RefreshCw, Lock, Globe } from 'lucide-react';\nimport { AnimatePresence } from 'framer-motion';\nimport { useNavigate } from 'react-router';\nimport { useApolloClient } from '@apollo/client/react';\nimport { MotionList, MotionItem } from '@burdenoff/fe-libs/shared/motion';\nimport { NoteCard } from './NoteCard';\nimport { NoteList } from './NoteList';\nimport { NoteEditor } from './NoteEditor';\nimport type { Note, NoteVisibility } from './types';\nimport type { NoteEditorSubmitData } from './NoteEditor';\nimport {\n SearchInput,\n FilterDropdown,\n EmptyState,\n LoadingState,\n ErrorState,\n QuotaExhaustedDialog,\n} from '@/components/shared';\nimport {\n useListNotesQuery,\n usePinNoteMutation,\n useUnpinNoteMutation,\n useDeleteNoteMutation,\n useCreateNoteMutation,\n useUpdateNoteMutation,\n useReplaceNoteTagsMutation,\n useAvailableNoteTagsQuery,\n ListNotesDocument,\n} from '@/generated/wspace-operations';\nimport { NoteVisibility as GqlNoteVisibility } from '@/generated/wspace-types';\nimport { PermissionButton, AccessDenied } from '@burdenoff/fe-libs/shared/components';\nimport { usePermissions } from '@burdenoff/fe-libs/shared/providers/shell';\nimport { useFeatureFlag } from '@burdenoff/fe-libs/shared/feature-flags';\nimport { VIBE_PERMISSIONS } from '@/constants/permissions';\nimport { isQuotaExhaustedError, markQuotaHandledLocally } from '@/utils/quotaUtils';\nimport { NoteShareDialog, SHARE_REGISTRY } from '@/components/sharing';\n\ntype ViewMode = 'grid' | 'list';\n\ninterface NotesTabPanelProps {\n /**\n * 'vibe' = single vibe context; 'agent' = multi-vibe agent context;\n * 'session' = notes authored against a single terminal session (F1).\n */\n context: 'vibe' | 'agent' | 'session';\n /** For vibe context: the single vibeId to scope notes to */\n vibeId?: string;\n /** For session context: the single sessionId to scope notes to */\n sessionId?: string;\n /** For agent context: the vibes belonging to the agent */\n agentVibes?: { id: string; name: string }[];\n}\n\n/**\n * Reusable notes panel for embedding as a tab in detail pages.\n * Supports vibe-scoped, agent-scoped, and session-scoped contexts.\n */\nexport function NotesTabPanel({ context, vibeId, sessionId, agentVibes = [] }: NotesTabPanelProps) {\n const { t } = useI18n();\n const navigate = useNavigate();\n const apolloClient = useApolloClient();\n const tr = (key: string, fallback: string) => {\n const v = t(key);\n return v === key ? fallback : v;\n };\n const { hasPermission, isLoading: permissionsLoading, permissions } = usePermissions();\n\n const canListNotes = hasPermission(VIBE_PERMISSIONS.NOTE_LIST);\n const canCreateNote = hasPermission(VIBE_PERMISSIONS.NOTE_CREATE);\n const canDeleteNote = hasPermission(VIBE_PERMISSIONS.NOTE_DELETE);\n\n // Generic note sharing (full users/link/vibe dialog). Gated by the\n // `vibecontrols.sharing.note` flag (default ON) + note share permission.\n // This is the only sharing entry point on the notes surface as of\n // BOFF-3036 — the legacy PRIVATE↔WORKSPACE toggle was removed (see\n // `vibecontrols-specs/business/production/visibility-feature-audit-boff-3036.md`).\n const noteSharingFlagEnabled = useFeatureFlag(\n SHARE_REGISTRY.note.featureFlag,\n SHARE_REGISTRY.note.defaultEnabled\n );\n const canShareNote = hasPermission(SHARE_REGISTRY.note.permission);\n const noteSharingEnabled = noteSharingFlagEnabled && canShareNote;\n const [genericShareNote, setGenericShareNote] = useState<Note | null>(null);\n\n const [searchQuery, setSearchQuery] = useState('');\n const [vibeFilter, setVibeFilter] = useState('all');\n const [tagFilter, setTagFilter] = useState('all');\n const [visibilityFilter, setVisibilityFilter] = useState<'all' | 'PRIVATE' | 'WORKSPACE'>('all');\n const [showPinnedOnly, setShowPinnedOnly] = useState(false);\n const [viewMode, setViewMode] = useState<ViewMode>('grid');\n const [showEditor, setShowEditor] = useState(false);\n const [selectedNote, setSelectedNote] = useState<Note | null>(null);\n const [showQuotaExhausted, setShowQuotaExhausted] = useState(false);\n\n // Evict cached notes list and refetch — bypasses stale cache-and-network data\n const evictAndRefetch = (refetch: () => void) => {\n apolloClient.cache.evict({ id: 'ROOT_QUERY', fieldName: 'notes' });\n apolloClient.cache.gc();\n refetch();\n };\n\n const [pinNote] = usePinNoteMutation({\n refetchQueries: [ListNotesDocument],\n awaitRefetchQueries: true,\n });\n const [unpinNote] = useUnpinNoteMutation({\n refetchQueries: [ListNotesDocument],\n awaitRefetchQueries: true,\n });\n const [deleteNote] = useDeleteNoteMutation({\n refetchQueries: [ListNotesDocument],\n awaitRefetchQueries: true,\n });\n const [createNote] = useCreateNoteMutation({\n refetchQueries: [ListNotesDocument],\n awaitRefetchQueries: true,\n });\n const [updateNote] = useUpdateNoteMutation({\n refetchQueries: [ListNotesDocument],\n awaitRefetchQueries: true,\n });\n const [replaceNoteTags] = useReplaceNoteTagsMutation({\n refetchQueries: [ListNotesDocument],\n awaitRefetchQueries: true,\n });\n\n const shouldSkipQueries = permissionsLoading || !canListNotes;\n\n const { data: availableTagsData } = useAvailableNoteTagsQuery({ skip: shouldSkipQueries });\n\n // Build query filter based on context\n const queryFilter = useMemo(() => {\n const visibilityVal =\n visibilityFilter !== 'all' ? (visibilityFilter as GqlNoteVisibility) : undefined;\n\n if (context === 'session' && sessionId) {\n return {\n sessionId,\n isPinned: showPinnedOnly ? true : undefined,\n visibility: visibilityVal,\n };\n }\n if (context === 'vibe' && vibeId) {\n return {\n vibeId,\n isPinned: showPinnedOnly ? true : undefined,\n visibility: visibilityVal,\n };\n }\n // Agent context: fetch all notes, filter client-side\n return {\n vibeId: vibeFilter === 'none' ? null : vibeFilter !== 'all' ? vibeFilter : undefined,\n isPinned: showPinnedOnly ? true : undefined,\n visibility: visibilityVal,\n };\n }, [context, vibeId, sessionId, vibeFilter, showPinnedOnly, visibilityFilter]);\n\n const { data, loading, error, refetch } = useListNotesQuery({\n variables: { filter: queryFilter, pagination: { limit: 50 } },\n fetchPolicy: 'cache-and-network',\n skip: shouldSkipQueries,\n });\n\n // Vibe filter options (agent context only)\n const vibeOptions = useMemo(() => {\n if (context !== 'agent') return [];\n return [\n { value: 'all', label: 'All Vibes' },\n { value: 'none', label: 'No Vibe (General)' },\n ...agentVibes.map((v) => ({ value: v.id, label: v.name })),\n ];\n }, [context, agentVibes]);\n\n // Tag label lookup by ID — used when federation doesn't return nested tag object\n type AvailableTag = { id: string; key: string; label: string; color?: string | null };\n const tagLabelMap = useMemo((): Map<string, AvailableTag> => {\n const tags = (availableTagsData?.availableNoteTags ?? []) as AvailableTag[];\n return new Map(tags.map((tag) => [tag.id, tag]));\n }, [availableTagsData?.availableNoteTags]);\n\n // Map GraphQL response to Note type\n const notes: Note[] = useMemo(() => {\n const rawNotes = data?.notes?.items ?? [];\n const mapped = rawNotes.map((note: NonNullable<typeof rawNotes>[number]) => ({\n id: note.id,\n workspaceId: note.workspaceId,\n vibeId: note.vibeId || null,\n title: note.title,\n content: note.content,\n tags: note.tags || [],\n tagAssignments:\n note.tagAssignments?.map((a: NonNullable<typeof note.tagAssignments>[number]) => {\n // `a.tag` may be null when federation doesn't resolve the tag entity.\n // Fall back to the availableNoteTags lookup so the label always shows.\n const resolvedTag = a.tag\n ? { id: a.tag.id, label: a.tag.label, key: a.tag.key, color: a.tag.color }\n : tagLabelMap.has(a.tagId)\n ? {\n id: a.tagId,\n label: tagLabelMap.get(a.tagId)!.label,\n key: tagLabelMap.get(a.tagId)!.key,\n color: tagLabelMap.get(a.tagId)!.color ?? null,\n }\n : undefined;\n return {\n id: a.id,\n tagId: a.tagId,\n tag: resolvedTag,\n entityType: a.entityType,\n entityId: a.entityId,\n source: a.source,\n assignedBy: a.assignedBy,\n assignedAt: a.assignedAt,\n };\n }) || [],\n isPinned: note.isPinned,\n visibility: (note.visibility ?? 'WORKSPACE') as NoteVisibility,\n createdBy: note.createdBy ?? '',\n metadata: (note.metadata as Record<string, unknown>) || {},\n createdAt: note.createdAt,\n updatedAt: note.updatedAt,\n vibe: note.vibe ? { id: note.vibe.id, name: note.vibe.name } : undefined,\n }));\n\n // Agent context: client-side filter to only agent's vibes\n if (context === 'agent' && agentVibes.length > 0) {\n const vibeIdSet = new Set(agentVibes.map((v) => v.id));\n return mapped.filter((n: Note) => n.vibeId && vibeIdSet.has(n.vibeId));\n }\n\n return mapped;\n }, [data?.notes?.items, context, agentVibes, tagLabelMap]);\n\n // Tag filter options\n const tagOptions = useMemo(() => {\n const tags = availableTagsData?.availableNoteTags ?? [];\n return [\n { value: 'all', label: 'All Tags' },\n ...tags.map((tag: AvailableTag) => ({\n value: tag.id,\n label: tag.label,\n })),\n ];\n }, [availableTagsData?.availableNoteTags]);\n\n // Client-side search and tag filtering\n const filteredNotes = useMemo(() => {\n return notes.filter((note) => {\n if (searchQuery) {\n const query = searchQuery.toLowerCase();\n const matchesSearch =\n note.title.toLowerCase().includes(query) ||\n note.content.toLowerCase().includes(query) ||\n note.tagAssignments?.some((a) => a.tag?.label?.toLowerCase().includes(query));\n if (!matchesSearch) return false;\n }\n if (tagFilter !== 'all') {\n const hasTag = note.tagAssignments?.some((a) => a.tagId === tagFilter);\n if (!hasTag) return false;\n }\n return true;\n });\n }, [notes, searchQuery, tagFilter]);\n\n // Sort: pinned first, then by updatedAt\n const sortedNotes = useMemo(() => {\n return [...filteredNotes].sort((a, b) => {\n if (a.isPinned && !b.isPinned) return -1;\n if (!a.isPinned && b.isPinned) return 1;\n return new Date(b.updatedAt).getTime() - new Date(a.updatedAt).getTime();\n });\n }, [filteredNotes]);\n\n const handleNoteSelect = (note: Note) => {\n setSelectedNote(note);\n setShowEditor(true);\n };\n\n const handleCreateNote = () => {\n setSelectedNote(null);\n setShowEditor(true);\n };\n\n const handlePinNote = async (note: Note) => {\n try {\n if (note.isPinned) {\n await unpinNote({ variables: { id: note.id } });\n } else {\n await pinNote({ variables: { id: note.id } });\n }\n evictAndRefetch(refetch);\n } catch (err) {\n console.error('Failed to toggle pin for note:', err);\n }\n };\n\n const handleDeleteNote = async (note: Note) => {\n try {\n await deleteNote({ variables: { id: note.id } });\n evictAndRefetch(refetch);\n } catch (err) {\n console.error('Failed to delete note:', err);\n }\n };\n\n const handleSaveNote = async (noteData: NoteEditorSubmitData) => {\n const closeEditorForQuota = () => {\n setShowEditor(false);\n setSelectedNote(null);\n markQuotaHandledLocally();\n setShowQuotaExhausted(true);\n };\n\n try {\n let noteId: string | undefined;\n\n // In vibe context, always force the vibeId\n const effectiveVibeId = context === 'vibe' ? vibeId : noteData.vibeId;\n\n if (noteData.id) {\n let result;\n try {\n result = await updateNote({\n variables: {\n id: noteData.id,\n input: {\n title: noteData.title,\n content: noteData.content,\n visibility: noteData.visibility\n ? (noteData.visibility as GqlNoteVisibility)\n : undefined,\n },\n },\n });\n } catch (err) {\n if (isQuotaExhaustedError(err)) {\n closeEditorForQuota();\n return;\n }\n\n throw err;\n }\n noteId = result.data?.updateNote?.id;\n } else {\n let result;\n try {\n result = await createNote({\n variables: {\n input: {\n title: noteData.title || '',\n content: noteData.content || '',\n vibeId: effectiveVibeId,\n // F1 — stamp the session so the note shows in this session's\n // drawer; it stays workspace-reusable everywhere else.\n sessionId: context === 'session' ? sessionId : undefined,\n visibility: noteData.visibility\n ? (noteData.visibility as GqlNoteVisibility)\n : GqlNoteVisibility.Workspace,\n },\n },\n });\n } catch (err) {\n if (isQuotaExhaustedError(err)) {\n closeEditorForQuota();\n return;\n }\n\n throw err;\n }\n noteId = result.data?.createNote?.id;\n }\n\n // Assign tags\n if (noteId && noteData.selectedTagIds && noteData.selectedTagIds.length > 0) {\n await replaceNoteTags({\n variables: { input: { noteId, tagIds: noteData.selectedTagIds } },\n });\n } else if (noteId && noteData.selectedTagIds?.length === 0 && noteData.id) {\n await replaceNoteTags({\n variables: { input: { noteId, tagIds: [] } },\n });\n }\n\n setShowEditor(false);\n evictAndRefetch(refetch);\n } catch (err) {\n console.error('Failed to save note:', err);\n }\n };\n\n // Opens the generic Share dialog for a note (users / link / vibe).\n // Note visibility is now exclusively modelled via the generic Share dialog;\n // the legacy PRIVATE↔WORKSPACE toggle (`onShare` / `handleShareNote`) was\n // removed in BOFF-3036 — see\n // `vibecontrols-specs/business/production/visibility-feature-audit-boff-3036.md`.\n const handleShareNoteAccess = noteSharingEnabled\n ? (note: Note) => setGenericShareNote(note)\n : undefined;\n\n // Stats\n const stats = {\n total: notes.length,\n pinned: notes.filter((n) => n.isPinned).length,\n };\n\n // Vibe options for editor\n const vibeOptionsForEditor = useMemo(() => {\n if (context === 'vibe') return [];\n return agentVibes;\n }, [context, agentVibes]);\n\n // Permission guard\n if (!permissionsLoading && permissions && !canListNotes) {\n return (\n <AccessDenied\n title=\"Access Denied\"\n description=\"You don't have permission to view notes.\"\n details=\"Required permission: note:list\"\n />\n );\n }\n\n if (loading && notes.length === 0) {\n return <LoadingState message=\"Loading notes...\" />;\n }\n\n if (error && notes.length === 0) {\n return (\n <ErrorState title=\"Failed to load notes\" message={error.message} onRetry={() => refetch()} />\n );\n }\n\n const isFiltered =\n searchQuery ||\n (context === 'agent' && vibeFilter !== 'all') ||\n tagFilter !== 'all' ||\n showPinnedOnly;\n\n return (\n <div className=\"space-y-4\">\n {/* Header */}\n <div className=\"flex items-center justify-between\">\n <div>\n <h3 className=\"text-lg font-semibold text-text-primary\">Notes</h3>\n <p className=\"text-sm text-text-secondary\">\n {stats.total} {stats.total === 1 ? 'note' : 'notes'}, {stats.pinned} pinned\n </p>\n </div>\n <div className=\"flex items-center gap-2\">\n <button\n type=\"button\"\n onClick={() => refetch()}\n disabled={loading}\n className=\"flex items-center gap-2 px-3 py-2 text-text-secondary hover:bg-bg-sunken rounded-md transition-colors disabled:opacity-50\"\n title=\"Refresh notes\"\n >\n <RefreshCw className={`size-4 ${loading ? 'animate-spin' : ''}`} />\n </button>\n <PermissionButton permission={VIBE_PERMISSIONS.NOTE_CREATE}>\n <button\n type=\"button\"\n onClick={handleCreateNote}\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 <Plus className=\"size-4\" />\n New Note\n </button>\n </PermissionButton>\n </div>\n </div>\n\n {/* Filters */}\n <div className=\"space-y-3\">\n <div className=\"flex items-center gap-2\">\n <SearchInput\n value={searchQuery}\n onChange={setSearchQuery}\n placeholder=\"Search notes...\"\n className=\"flex-1 sm:w-64 sm:flex-none\"\n />\n <div className=\"flex items-center gap-1 bg-bg-sunken rounded-md p-1 flex-shrink-0\">\n <button\n type=\"button\"\n onClick={() => setViewMode('grid')}\n className={`p-1.5 sm:p-2 rounded ${viewMode === 'grid' ? 'bg-bg-surface shadow-sm' : 'hover:bg-bg-surface/50'}`}\n title=\"Grid view\"\n >\n <Grid className=\"size-4 text-text-secondary\" />\n </button>\n <button\n type=\"button\"\n onClick={() => setViewMode('list')}\n className={`p-1.5 sm:p-2 rounded ${viewMode === 'list' ? 'bg-bg-surface shadow-sm' : 'hover:bg-bg-surface/50'}`}\n title=\"List view\"\n >\n <List className=\"size-4 text-text-secondary\" />\n </button>\n </div>\n </div>\n\n <div className=\"flex items-center gap-2 sm:gap-3 flex-wrap\">\n {context === 'agent' && (\n <FilterDropdown\n label=\"Vibe\"\n value={vibeFilter}\n options={vibeOptions}\n onChange={setVibeFilter}\n />\n )}\n <FilterDropdown\n label=\"Tag\"\n value={tagFilter}\n options={tagOptions}\n onChange={setTagFilter}\n />\n {/* Visibility filter */}\n <div className=\"flex items-center gap-1 bg-bg-sunken rounded-md p-0.5\">\n <button\n type=\"button\"\n onClick={() => setVisibilityFilter('all')}\n className={`px-2.5 py-1 text-xs rounded transition-colors ${visibilityFilter === 'all' ? 'bg-bg-surface text-text-primary shadow-sm' : 'text-text-muted hover:text-text-secondary'}`}\n >\n All\n </button>\n <button\n type=\"button\"\n onClick={() => setVisibilityFilter('WORKSPACE')}\n className={`flex items-center gap-1 px-2.5 py-1 text-xs rounded transition-colors ${visibilityFilter === 'WORKSPACE' ? 'bg-bg-surface text-text-primary shadow-sm' : 'text-text-muted hover:text-text-secondary'}`}\n >\n <Globe className=\"size-3\" />\n Shared\n </button>\n <button\n type=\"button\"\n onClick={() => setVisibilityFilter('PRIVATE')}\n className={`flex items-center gap-1 px-2.5 py-1 text-xs rounded transition-colors ${visibilityFilter === 'PRIVATE' ? 'bg-bg-surface text-text-primary shadow-sm' : 'text-text-muted hover:text-text-secondary'}`}\n >\n <Lock className=\"size-3\" />\n Private\n </button>\n </div>\n </div>\n </div>\n\n {/* Pinned toggle */}\n <div className=\"flex items-center gap-2\">\n <button\n type=\"button\"\n onClick={() => setShowPinnedOnly(!showPinnedOnly)}\n className={`flex items-center gap-2 px-3 py-1.5 text-sm rounded-full transition-colors ${\n showPinnedOnly\n ? 'bg-status-warning-bg-subtle text-status-warning-text'\n : 'bg-bg-sunken text-text-secondary hover:bg-bg-sunken/80'\n }`}\n >\n <Pin className=\"size-3\" />\n Pinned ({stats.pinned})\n </button>\n </div>\n\n {/* Results count */}\n {isFiltered ? (\n <p className=\"text-sm text-text-secondary\">\n Showing {sortedNotes.length} of {notes.length} notes\n {loading && <span className=\"ml-2 text-text-muted\">(refreshing…)</span>}\n </p>\n ) : null}\n\n {/* Notes display */}\n <AnimatePresence mode=\"wait\">\n {sortedNotes.length > 0 ? (\n viewMode === 'grid' ? (\n <MotionList\n key=\"grid\"\n stagger={0.04}\n className=\"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4\"\n >\n {sortedNotes.map((note) => (\n <MotionItem key={note.id}>\n <NoteCard\n note={note}\n onOpen={handleNoteSelect}\n onEdit={handleNoteSelect}\n onPin={handlePinNote}\n onUnpin={handlePinNote}\n onDelete={canDeleteNote ? handleDeleteNote : undefined}\n onShareAccess={handleShareNoteAccess}\n />\n </MotionItem>\n ))}\n </MotionList>\n ) : (\n <NoteList\n key=\"list\"\n notes={sortedNotes}\n onOpen={handleNoteSelect}\n onEdit={handleNoteSelect}\n onPin={handlePinNote}\n onUnpin={handlePinNote}\n onDelete={canDeleteNote ? handleDeleteNote : undefined}\n onShareAccess={handleShareNoteAccess}\n />\n )\n ) : (\n <EmptyState\n icon={<FileText className=\"size-8 text-text-secondary\" />}\n title={isFiltered ? 'No notes found' : 'No notes yet'}\n description={\n isFiltered\n ? 'Try adjusting your search or filters'\n : 'Create your first note to start documenting your work'\n }\n action={\n !isFiltered && canCreateNote ? (\n <button\n type=\"button\"\n onClick={handleCreateNote}\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 <Plus className=\"size-4\" />\n New Note\n </button>\n ) : undefined\n }\n />\n )}\n </AnimatePresence>\n\n {/* Note Editor Modal */}\n {showEditor && (\n <NoteEditor\n note={selectedNote || undefined}\n vibeOptions={vibeOptionsForEditor}\n defaultVibeId={context === 'vibe' ? vibeId : undefined}\n hideVibeSelect={context === 'vibe'}\n onSubmit={handleSaveNote}\n onCancel={() => setShowEditor(false)}\n />\n )}\n\n <QuotaExhaustedDialog\n isOpen={showQuotaExhausted}\n onClose={() => setShowQuotaExhausted(false)}\n onConfirm={() => {\n setShowQuotaExhausted(false);\n navigate('/billing/plans');\n }}\n title=\"Note Quota Reached\"\n message=\"You've used all available note quota on your current plan. Upgrade your plan to create or update more notes.\"\n />\n\n {/* Generic note sharing dialog (users / link / vibe) */}\n {genericShareNote && (\n <NoteShareDialog\n note={{\n id: genericShareNote.id,\n title: genericShareNote.title,\n vibeId: genericShareNote.vibeId,\n }}\n open={Boolean(genericShareNote)}\n onOpenChange={(next) => {\n if (!next) setGenericShareNote(null);\n }}\n />\n )}\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"FleetActivityAreaChart.js","names":[],"sources":["../../../src/components/overview/FleetActivityAreaChart.tsx"],"sourcesContent":["/**\n * The recharts half of the Fleet Activity card.\n *\n * Split out (and lazy-loaded by `FleetActivityChart`) so recharts stays out of\n * the Overview page's initial chunk — the same treatment the Analytics page\n * gives its charts.\n *\n * This is deliberately NOT `AnalyticsTimeSeriesChart`: that component renders\n * its own bordered surface, a legend box and an `M/D` axis, none of which work\n * for an hourly 24h series embedded in a card.\n */\n\nimport { useId, useMemo } from 'react';\nimport {\n Area,\n AreaChart,\n CartesianGrid,\n ResponsiveContainer,\n Tooltip,\n XAxis,\n YAxis,\n} from 'recharts';\nimport type { FleetActivityGranularity, FleetActivitySeries } from './types';\n\ninterface FleetActivityAreaChartProps {\n series: readonly FleetActivitySeries[];\n granularity: FleetActivityGranularity;\n height?: number;\n}\n\ntype MergedPoint = Record<string, number | string>;\n\nexport function FleetActivityAreaChart({\n series,\n granularity,\n height = 260,\n}: FleetActivityAreaChartProps) {\n const gradientPrefix = useId().replace(/:/g, '');\n\n const chartData = useMemo<MergedPoint[]>(() => {\n const byTimestamp = new Map<string, MergedPoint>();\n\n for (const s of series) {\n for (const point of s.data ?? []) {\n const key = new Date(point.timestamp).toISOString();\n const bucket = byTimestamp.get(key) ?? { timestamp: key };\n bucket[s.id] = point.value;\n byTimestamp.set(key, bucket);\n }\n }\n\n // Zero-fill missing series so the stacked areas do not tear where one\n // entity reported no events for a bucket.\n const merged = Array.from(byTimestamp.values());\n for (const bucket of merged) {\n for (const s of series) {\n if (typeof bucket[s.id] !== 'number') bucket[s.id] = 0;\n }\n }\n\n return merged.sort((a, b) => String(a.timestamp).localeCompare(String(b.timestamp)));\n }, [series]);\n\n const formatAxis = (value: string): string => {\n const d = new Date(value);\n if (granularity === 'HOUR') {\n return d.toLocaleTimeString(undefined, { hour: '2-digit', minute: '2-digit' });\n }\n return d.toLocaleDateString(undefined, { month: 'short', day: 'numeric' });\n };\n\n const formatTooltip = (value: string): string =>\n new Date(value).toLocaleString(undefined, {\n month: 'short',\n day: 'numeric',\n hour: '2-digit',\n minute: '2-digit',\n });\n\n return (\n <ResponsiveContainer width=\"100%\" height={height}>\n <AreaChart data={chartData} margin={{ top: 8, right: 8, left: 0, bottom: 0 }}>\n <defs>\n {series.map((s) => (\n <linearGradient key={s.id} id={`${gradientPrefix}-${s.id}`} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"0%\" stopColor={s.color} stopOpacity={0.45} />\n <stop offset=\"100%\" stopColor={s.color} stopOpacity={0.02} />\n </linearGradient>\n ))}\n </defs>\n <CartesianGrid\n strokeDasharray=\"3 3\"\n stroke=\"var(--color-border-seam)\"\n vertical={false}\n opacity={0.6}\n />\n <XAxis\n dataKey=\"timestamp\"\n tickFormatter={formatAxis}\n minTickGap={28}\n tickLine={false}\n tick={{ fill: 'var(--color-text-secondary)', fontSize: 11 }}\n axisLine={{ stroke: 'var(--color-border-seam)' }}\n />\n <YAxis\n width={36}\n allowDecimals={false}\n tickLine={false}\n tick={{ fill: 'var(--color-text-secondary)', fontSize: 11 }}\n axisLine={false}\n />\n <Tooltip\n labelFormatter={formatTooltip}\n cursor={{ stroke: 'var(--color-border-strong)', strokeWidth: 1 }}\n contentStyle={{\n background: 'var(--color-bg-surface)',\n border: '1px solid var(--color-border-seam)',\n borderRadius: 'var(--radius-card, 8px)',\n fontSize: '12px',\n color: 'var(--color-text-primary)',\n }}\n labelStyle={{ color: 'var(--color-text-secondary)' }}\n itemStyle={{ color: 'var(--color-text-primary)' }}\n />\n {series.map((s) => (\n <Area\n key={s.id}\n type=\"monotone\"\n dataKey={s.id}\n name={s.label}\n stackId=\"fleet-activity\"\n stroke={s.color}\n strokeWidth={2}\n fill={`url(#${gradientPrefix}-${s.id})`}\n dot={false}\n activeDot={{ r: 3 }}\n isAnimationActive={false}\n />\n ))}\n </AreaChart>\n </ResponsiveContainer>\n );\n}\n"],"mappings":";;;;;;;;;;AAgCA,SAAgB,EAAuB,EACrC,WACA,gBACA,YAAS,OACqB;CAC9B,IAAM,IAAiB,GAAO,CAAC,QAAQ,MAAM,GAAG;AA0ChD,QACE,kBAAC,GAAD;EAAqB,OAAM;EAAe;YACxC,kBAAC,GAAD;GAAW,MA1CG,QAA6B;IAC7C,IAAM,oBAAc,IAAI,KAA0B;AAElD,SAAK,IAAM,KAAK,EACd,MAAK,IAAM,KAAS,EAAE,QAAQ,EAAE,EAAE;KAChC,IAAM,IAAM,IAAI,KAAK,EAAM,UAAU,CAAC,aAAa,EAC7C,IAAS,EAAY,IAAI,EAAI,IAAI,EAAE,WAAW,GAAK;AAEzD,KADA,EAAO,EAAE,MAAM,EAAM,OACrB,EAAY,IAAI,GAAK,EAAO;;IAMhC,IAAM,IAAS,MAAM,KAAK,EAAY,QAAQ,CAAC;AAC/C,SAAK,IAAM,KAAU,EACnB,MAAK,IAAM,KAAK,EACd,CAAI,OAAO,EAAO,EAAE,OAAQ,aAAU,EAAO,EAAE,MAAM;AAIzD,WAAO,EAAO,MAAM,GAAG,MAAM,OAAO,EAAE,UAAU,CAAC,cAAc,OAAO,EAAE,UAAU,CAAC,CAAC;MACnF,CAAC,EAAO,CAAC;GAoBoB,QAAQ;IAAE,KAAK;IAAG,OAAO;IAAG,MAAM;IAAG,QAAQ;IAAG;aAA5E;IACE,kBAAC,QAAD,EAAA,UACG,EAAO,KAAK,MACX,kBAAC,kBAAD;KAA2B,IAAI,GAAG,EAAe,GAAG,EAAE;KAAM,IAAG;KAAI,IAAG;KAAI,IAAG;KAAI,IAAG;eAApF,CACE,kBAAC,QAAD;MAAM,QAAO;MAAK,WAAW,EAAE;MAAO,aAAa;MAAQ,CAAA,EAC3D,kBAAC,QAAD;MAAM,QAAO;MAAO,WAAW,EAAE;MAAO,aAAa;MAAQ,CAAA,CAC9C;OAHI,EAAE,GAGN,CACjB,EACG,CAAA;IACP,kBAAC,GAAD;KACE,iBAAgB;KAChB,QAAO;KACP,UAAU;KACV,SAAS;KACT,CAAA;IACF,kBAAC,GAAD;KACE,SAAQ;KACR,gBAnCY,MAA0B;MAC5C,IAAM,IAAI,IAAI,KAAK,EAAM;AAIzB,aAHI,MAAgB,SACX,EAAE,mBAAmB,KAAA,GAAW;OAAE,MAAM;OAAW,QAAQ;OAAW,CAAC,GAEzE,EAAE,mBAAmB,KAAA,GAAW;OAAE,OAAO;OAAS,KAAK;OAAW,CAAC;;KA+BpE,YAAY;KACZ,UAAU;KACV,MAAM;MAAE,MAAM;MAA+B,UAAU;MAAI;KAC3D,UAAU,EAAE,QAAQ,4BAA4B;KAChD,CAAA;IACF,kBAAC,GAAD;KACE,OAAO;KACP,eAAe;KACf,UAAU;KACV,MAAM;MAAE,MAAM;MAA+B,UAAU;MAAI;KAC3D,UAAU;KACV,CAAA;IACF,kBAAC,GAAD;KACE,iBAzCe,MACrB,IAAI,KAAK,EAAM,CAAC,eAAe,KAAA,GAAW;MACxC,OAAO;MACP,KAAK;MACL,MAAM;MACN,QAAQ;MACT,CAAC;KAoCI,QAAQ;MAAE,QAAQ;MAA8B,aAAa;MAAG;KAChE,cAAc;MACZ,YAAY;MACZ,QAAQ;MACR,cAAc;MACd,UAAU;MACV,OAAO;MACR;KACD,YAAY,EAAE,OAAO,+BAA+B;KACpD,WAAW,EAAE,OAAO,6BAA6B;KACjD,CAAA;IACD,EAAO,KAAK,MACX,kBAAC,GAAD;KAEE,MAAK;KACL,SAAS,EAAE;KACX,MAAM,EAAE;KACR,SAAQ;KACR,QAAQ,EAAE;KACV,aAAa;KACb,MAAM,QAAQ,EAAe,GAAG,EAAE,GAAG;KACrC,KAAK;KACL,WAAW,EAAE,GAAG,GAAG;KACnB,mBAAmB;KACnB,EAXK,EAAE,GAWP,CACF;IACQ;;EACQ,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"FleetActivityChart.js","names":[],"sources":["../../../src/components/overview/FleetActivityChart.tsx"],"sourcesContent":["/**\n * Fleet Activity — time-bucketed sessions / AI events / action runs across the\n * workspace, with a range picker. Backed by the existing\n * `VibecontrolsAnalytics` query via `useFleetActivity`.\n */\n\nimport { Suspense, lazy, useMemo } from 'react';\nimport { Activity } from 'lucide-react';\nimport { Card, EmptyState, ErrorState } from '@/components/shared';\nimport { SkeletonLine } from '@/components/shared/PageSkeleton';\nimport { useTr } from '../../shared/hooks/useTr';\nimport type { FleetActivityRange } from './types';\nimport type { FleetActivityResult } from './useFleetAnalytics';\n\nconst FleetActivityAreaChart = lazy(() =>\n import('./FleetActivityAreaChart').then((m) => ({ default: m.FleetActivityAreaChart }))\n);\n\nconst RANGE_ORDER: readonly FleetActivityRange[] = ['LAST_24H', 'LAST_7D', 'LAST_30D'];\n\ninterface FleetActivityChartProps {\n range: FleetActivityRange;\n onRangeChange: (range: FleetActivityRange) => void;\n activity: FleetActivityResult;\n /** Called when the user follows the card through to the Analytics page. */\n onViewAnalytics?: () => void;\n}\n\nexport function FleetActivityChart({\n range,\n onRangeChange,\n activity,\n onViewAnalytics,\n}: FleetActivityChartProps) {\n const tr = useTr();\n\n const rangeLabels: Record<FleetActivityRange, string> = {\n LAST_24H: tr('vibecontrols.overview.activity.range.last24h', 'Last 24 hours'),\n LAST_7D: tr('vibecontrols.overview.activity.range.last7d', 'Last 7 days'),\n LAST_30D: tr('vibecontrols.overview.activity.range.last30d', 'Last 30 days'),\n };\n\n const series = useMemo(\n () => [\n {\n id: 'sessions',\n label: tr('vibecontrols.overview.activity.series.sessions', 'Sessions'),\n color: 'var(--color-accent-teal)',\n data: activity.sessions,\n },\n {\n id: 'aiEvents',\n label: tr('vibecontrols.overview.activity.series.aiEvents', 'AI events'),\n color: 'var(--color-accent-purple)',\n data: activity.aiEvents,\n },\n {\n id: 'actionRuns',\n label: tr('vibecontrols.overview.activity.series.actionRuns', 'Action runs'),\n color: 'var(--color-text-link)',\n data: activity.actionRuns,\n },\n ],\n [activity.sessions, activity.aiEvents, activity.actionRuns, tr]\n );\n\n const hasData = series.some((s) => (s.data?.length ?? 0) > 0);\n const isInitialLoad = activity.loading && !hasData;\n\n return (\n <Card className=\"flex h-full flex-col\">\n <div className=\"mb-5 flex flex-wrap items-center justify-between gap-3\">\n <h2 className=\"flex items-center gap-2.5 text-lg font-semibold tracking-tight text-text-primary\">\n <span className=\"inline-flex size-8 items-center justify-center rounded-lg bg-[var(--color-accent-soft)] text-text-primary\">\n <Activity className=\"size-5\" />\n </span>\n {tr('vibecontrols.overview.activity.title', 'Fleet Activity')}\n </h2>\n <label className=\"flex items-center gap-2\">\n <span className=\"sr-only\">\n {tr('vibecontrols.overview.activity.rangeLabel', 'Fleet activity time range')}\n </span>\n <select\n value={range}\n onChange={(e) => onRangeChange(e.target.value as FleetActivityRange)}\n className=\"rounded-md border border-border-seam bg-bg-sunken px-2 py-1.5 text-sm text-text-primary focus:outline-none focus-visible:ring-2 focus-visible:ring-border-focus\"\n >\n {RANGE_ORDER.map((value) => (\n <option key={value} value={value}>\n {rangeLabels[value]}\n </option>\n ))}\n </select>\n </label>\n </div>\n\n {activity.error && !hasData ? (\n <ErrorState\n title={tr('vibecontrols.overview.activity.errorTitle', 'Could not load fleet activity')}\n message={tr(\n 'vibecontrols.overview.activity.errorMessage',\n 'The activity breakdown is temporarily unavailable. Try again in a moment.'\n )}\n onRetry={activity.refetch}\n />\n ) : isInitialLoad ? (\n <div className=\"flex-1 space-y-3\" aria-hidden=\"true\">\n <SkeletonLine height=\"h-[260px]\" />\n </div>\n ) : !hasData ? (\n <EmptyState\n illustration=\"empty-analytics\"\n title={tr('vibecontrols.overview.activity.emptyTitle', 'No activity in this window')}\n description={tr(\n 'vibecontrols.overview.activity.emptyDescription',\n 'Once sessions, AI tools and actions run, their volume shows up here.'\n )}\n action={\n onViewAnalytics ? (\n <button\n type=\"button\"\n onClick={onViewAnalytics}\n className=\"text-sm font-medium text-text-link hover:underline\"\n >\n {tr('vibecontrols.overview.activity.openAnalytics', 'Open analytics')}\n </button>\n ) : undefined\n }\n />\n ) : (\n <>\n <ul className=\"mb-3 flex flex-wrap items-center gap-x-4 gap-y-1\">\n {series.map((s) => (\n <li key={s.id} className=\"flex items-center gap-1.5 text-xs text-text-secondary\">\n <span\n className=\"size-2 rounded-full\"\n style={{ backgroundColor: s.color }}\n aria-hidden=\"true\"\n />\n {s.label}\n </li>\n ))}\n </ul>\n <div className=\"flex-1\">\n <Suspense fallback={<SkeletonLine height=\"h-[260px]\" />}>\n <FleetActivityAreaChart series={series} granularity={activity.granularity} />\n </Suspense>\n </div>\n </>\n )}\n </Card>\n );\n}\n"],"mappings":";;;;;;;;;;AAcA,IAAM,IAAyB,QAC7B,OAAO,+BAA4B,MAAM,OAAO,EAAE,SAAS,EAAE,wBAAwB,EAAE,CACxF,EAEK,IAA6C;CAAC;CAAY;CAAW;CAAW;AAUtF,SAAgB,EAAmB,EACjC,UACA,kBACA,aACA,sBAC0B;CAC1B,IAAM,IAAK,GAAO,EAEZ,IAAkD;EACtD,UAAU,EAAG,gDAAgD,gBAAgB;EAC7E,SAAS,EAAG,+CAA+C,cAAc;EACzE,UAAU,EAAG,gDAAgD,eAAe;EAC7E,EAEK,IAAS,QACP;EACJ;GACE,IAAI;GACJ,OAAO,EAAG,kDAAkD,WAAW;GACvE,OAAO;GACP,MAAM,EAAS;GAChB;EACD;GACE,IAAI;GACJ,OAAO,EAAG,kDAAkD,YAAY;GACxE,OAAO;GACP,MAAM,EAAS;GAChB;EACD;GACE,IAAI;GACJ,OAAO,EAAG,oDAAoD,cAAc;GAC5E,OAAO;GACP,MAAM,EAAS;GAChB;EACF,EACD;EAAC,EAAS;EAAU,EAAS;EAAU,EAAS;EAAY;EAAG,CAChE,EAEK,IAAU,EAAO,MAAM,OAAO,EAAE,MAAM,UAAU,KAAK,EAAE,EACvD,IAAgB,EAAS,WAAW,CAAC;AAE3C,QACE,kBAAC,GAAD;EAAM,WAAU;YAAhB,CACE,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,MAAD;IAAI,WAAU;cAAd,CACE,kBAAC,QAAD;KAAM,WAAU;eACd,kBAAC,GAAD,EAAU,WAAU,UAAW,CAAA;KAC1B,CAAA,EACN,EAAG,wCAAwC,iBAAiB,CAC1D;OACL,kBAAC,SAAD;IAAO,WAAU;cAAjB,CACE,kBAAC,QAAD;KAAM,WAAU;eACb,EAAG,6CAA6C,4BAA4B;KACxE,CAAA,EACP,kBAAC,UAAD;KACE,OAAO;KACP,WAAW,MAAM,EAAc,EAAE,OAAO,MAA4B;KACpE,WAAU;eAET,EAAY,KAAK,MAChB,kBAAC,UAAD;MAA2B;gBACxB,EAAY;MACN,EAFI,EAEJ,CACT;KACK,CAAA,CACH;MACJ;MAEL,EAAS,SAAS,CAAC,IAClB,kBAAC,GAAD;GACE,OAAO,EAAG,6CAA6C,gCAAgC;GACvF,SAAS,EACP,+CACA,4EACD;GACD,SAAS,EAAS;GAClB,CAAA,GACA,IACF,kBAAC,OAAD;GAAK,WAAU;GAAmB,eAAY;aAC5C,kBAAC,GAAD,EAAc,QAAO,aAAc,CAAA;GAC/B,CAAA,GACH,IAqBH,kBAAA,GAAA,EAAA,UAAA,CACE,kBAAC,MAAD;GAAI,WAAU;aACX,EAAO,KAAK,MACX,kBAAC,MAAD;IAAe,WAAU;cAAzB,CACE,kBAAC,QAAD;KACE,WAAU;KACV,OAAO,EAAE,iBAAiB,EAAE,OAAO;KACnC,eAAY;KACZ,CAAA,EACD,EAAE,MACA;MAPI,EAAE,GAON,CACL;GACC,CAAA,EACL,kBAAC,OAAD;GAAK,WAAU;aACb,kBAAC,GAAD;IAAU,UAAU,kBAAC,GAAD,EAAc,QAAO,aAAc,CAAA;cACrD,kBAAC,GAAD;KAAgC;KAAQ,aAAa,EAAS;KAAe,CAAA;IACpE,CAAA;GACP,CAAA,CACL,EAAA,CAAA,GAtCH,kBAAC,GAAD;GACE,cAAa;GACb,OAAO,EAAG,6CAA6C,6BAA6B;GACpF,aAAa,EACX,mDACA,uEACD;GACD,QACE,IACE,kBAAC,UAAD;IACE,MAAK;IACL,SAAS;IACT,WAAU;cAET,EAAG,gDAAgD,iBAAiB;IAC9D,CAAA,GACP,KAAA;GAEN,CAAA,CAsBC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"FleetHealthCard.js","names":[],"sources":["../../../src/components/overview/FleetHealthCard.tsx"],"sourcesContent":["/**\n * Fleet Health — a healthy-share donut plus a per-agent status list.\n *\n * Data source: the agents already held in the cached `VibeControlsInitialData`\n * result (no extra request from the landing page). Status is derived exactly\n * the way the Health page derives it when no live deep-probe is available:\n * inactive => offline, active with a heartbeat inside 5 minutes => healthy,\n * active with a stale/absent heartbeat => degraded. The live per-component\n * probe (`VibecontrolsAgentHealthProbes`) is intentionally left to the Health\n * page — it round-trips to every agent and is too heavy for the overview.\n */\n\nimport { useMemo } from 'react';\nimport { HeartPulse } from 'lucide-react';\nimport { Card, EmptyState, ErrorState, StatusBadge } from '@/components/shared';\nimport { SkeletonLine } from '@/components/shared/PageSkeleton';\nimport { useTr } from '../../shared/hooks/useTr';\nimport type { FleetHealthEntry, FleetHealthStatus } from './types';\n\n/** An agent is considered healthy while its heartbeat is younger than this. */\nconst HEARTBEAT_FRESH_MS = 5 * 60 * 1000;\n\nexport interface FleetHealthAgentInput {\n id: string;\n name: string;\n hostname: string;\n isActive: boolean;\n lastHeartbeat?: string | null;\n}\n\nexport function deriveFleetHealth(\n agents: readonly FleetHealthAgentInput[],\n now: number\n): FleetHealthEntry[] {\n return agents.map((agent) => {\n let status: FleetHealthStatus = 'offline';\n\n if (agent.isActive) {\n const beat = agent.lastHeartbeat ? new Date(agent.lastHeartbeat).getTime() : NaN;\n status = Number.isFinite(beat) && now - beat < HEARTBEAT_FRESH_MS ? 'healthy' : 'degraded';\n }\n\n return { id: agent.id, name: agent.name, hostname: agent.hostname, status };\n });\n}\n\nconst MAX_LISTED = 5;\nconst DONUT_RADIUS = 15.5;\nconst DONUT_CIRCUMFERENCE = 2 * Math.PI * DONUT_RADIUS;\n\n// `StatusBadge` only maps UPPERCASE agent statuses, so the lowercase health\n// vocabulary is mapped explicitly here (otherwise `offline` renders neutral\n// grey instead of the error tint).\nconst STATUS_VARIANT: Record<FleetHealthStatus, 'success' | 'warning' | 'error'> = {\n healthy: 'success',\n degraded: 'warning',\n offline: 'error',\n};\n\nfunction ringToken(percent: number): string {\n if (percent >= 90) return 'var(--color-status-success-text)';\n if (percent >= 50) return 'var(--color-status-warning-text)';\n return 'var(--color-status-error-text)';\n}\n\ninterface FleetHealthCardProps {\n agents: readonly FleetHealthAgentInput[];\n loading: boolean;\n error?: Error;\n onRetry: () => void;\n onViewAll: () => void;\n onSelectAgent: (agentId: string) => void;\n onAddAgent: () => void;\n}\n\nexport function FleetHealthCard({\n agents,\n loading,\n error,\n onRetry,\n onViewAll,\n onSelectAgent,\n onAddAgent,\n}: FleetHealthCardProps) {\n const tr = useTr();\n\n const entries = useMemo(() => deriveFleetHealth(agents, Date.now()), [agents]);\n\n const healthyCount = entries.filter((e) => e.status === 'healthy').length;\n const healthyPercent =\n entries.length === 0 ? 0 : Math.round((healthyCount / entries.length) * 100);\n const ringColor = ringToken(healthyPercent);\n const dash = (healthyPercent / 100) * DONUT_CIRCUMFERENCE;\n\n // Surface the agents that need attention first — a fleet-health card that\n // lists five healthy agents while a sixth is offline is worse than useless.\n const ordered = useMemo(() => {\n const weight: Record<FleetHealthStatus, number> = { offline: 0, degraded: 1, healthy: 2 };\n return [...entries].sort((a, b) => weight[a.status] - weight[b.status]);\n }, [entries]);\n\n return (\n <Card className=\"flex h-full flex-col\">\n <div className=\"mb-5 flex items-center justify-between\">\n <h2 className=\"flex items-center gap-2.5 text-lg font-semibold tracking-tight text-text-primary\">\n <span className=\"inline-flex size-8 items-center justify-center rounded-lg bg-[var(--color-accent-soft)] text-text-primary\">\n <HeartPulse className=\"size-5\" />\n </span>\n {tr('vibecontrols.overview.health.title', 'Fleet Health')}\n </h2>\n <button\n type=\"button\"\n onClick={onViewAll}\n className=\"text-sm font-medium text-text-link hover:underline\"\n >\n {tr('vibecontrols.overview.health.viewAll', 'View all')}\n </button>\n </div>\n\n {error && entries.length === 0 ? (\n <ErrorState\n title={tr('vibecontrols.overview.health.errorTitle', 'Could not load fleet health')}\n message={tr(\n 'vibecontrols.overview.health.errorMessage',\n \"We couldn't read your agents' status. Try again in a moment.\"\n )}\n onRetry={onRetry}\n />\n ) : loading && entries.length === 0 ? (\n <div className=\"space-y-3\" aria-hidden=\"true\">\n <SkeletonLine height=\"h-16\" width=\"w-40\" />\n <SkeletonLine height=\"h-5\" />\n <SkeletonLine height=\"h-5\" />\n <SkeletonLine height=\"h-5\" />\n </div>\n ) : entries.length === 0 ? (\n <EmptyState\n illustration=\"empty-agents\"\n title={tr('vibecontrols.overview.health.emptyTitle', 'No agents registered')}\n description={tr(\n 'vibecontrols.overview.health.emptyDescription',\n 'Register an agent to start tracking fleet health.'\n )}\n action={\n <button\n type=\"button\"\n onClick={onAddAgent}\n className=\"text-sm font-medium text-text-link hover:underline\"\n >\n {tr('vibecontrols.overview.health.addAgent', 'Add agent')}\n </button>\n }\n />\n ) : (\n <>\n <div className=\"mb-5 flex items-center gap-4\">\n <svg\n viewBox=\"0 0 36 36\"\n className=\"size-16 flex-shrink-0\"\n role=\"img\"\n aria-label={tr(\n 'vibecontrols.overview.health.donutLabel',\n '{{percent}}% of agents healthy',\n { percent: healthyPercent }\n )}\n >\n <circle\n cx=\"18\"\n cy=\"18\"\n r={DONUT_RADIUS}\n fill=\"none\"\n stroke=\"var(--color-border-seam)\"\n strokeWidth=\"3\"\n />\n <circle\n cx=\"18\"\n cy=\"18\"\n r={DONUT_RADIUS}\n fill=\"none\"\n stroke={ringColor}\n strokeWidth=\"3\"\n strokeLinecap=\"round\"\n strokeDasharray={`${dash} ${DONUT_CIRCUMFERENCE}`}\n transform=\"rotate(-90 18 18)\"\n />\n </svg>\n <div className=\"min-w-0\">\n <p className=\"text-2xl font-semibold tabular-nums text-text-primary\">\n {healthyPercent}%{' '}\n <span className=\"text-sm font-medium text-text-secondary\">\n {tr('vibecontrols.overview.health.healthy', 'healthy')}\n </span>\n </p>\n <p className=\"text-xs text-text-secondary\">\n {tr('vibecontrols.overview.health.summary', '{{healthy}} of {{total}} agents', {\n healthy: healthyCount,\n total: entries.length,\n })}\n </p>\n </div>\n </div>\n\n <ul className=\"flex-1 space-y-2\">\n {ordered.slice(0, MAX_LISTED).map((entry) => (\n <li key={entry.id}>\n <button\n type=\"button\"\n onClick={() => onSelectAgent(entry.id)}\n className=\"flex w-full items-center justify-between gap-3 rounded-button px-2 py-1.5 text-left hover:bg-bg-sunken focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-focus\"\n >\n <span className=\"min-w-0\">\n <span className=\"block truncate text-sm font-medium text-text-primary\">\n {entry.name}\n </span>\n <span className=\"block truncate text-xs text-text-secondary\">\n {entry.hostname}\n </span>\n </span>\n <StatusBadge status={entry.status} variant={STATUS_VARIANT[entry.status]} />\n </button>\n </li>\n ))}\n </ul>\n\n {ordered.length > MAX_LISTED && (\n <p className=\"mt-3 text-xs text-text-secondary\">\n {tr('vibecontrols.overview.health.more', '+{{count}} more', {\n count: ordered.length - MAX_LISTED,\n })}\n </p>\n )}\n </>\n )}\n </Card>\n );\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"QuickActionsCard.js","names":[],"sources":["../../../src/components/overview/QuickActionsCard.tsx"],"sourcesContent":["/**\n * Quick Actions — the mockup's right-rail shortcut stack.\n *\n * Every entry is pure in-app navigation to a route that already exists in\n * `VibeControlsRoutes`; nothing here calls a mutation, so no backend\n * capability is implied. Entries the caller has no permission for are hidden\n * rather than shown disabled.\n */\n\nimport type { ReactNode } from 'react';\nimport { CalendarClock, Plus, Server, Workflow, Zap } from 'lucide-react';\nimport { usePermissions } from '@burdenoff/fe-libs/shared/providers/shell';\nimport { Card, EmptyState } from '@/components/shared';\nimport { SkeletonLine } from '@/components/shared/PageSkeleton';\nimport { VIBE_PERMISSIONS } from '@/constants/permissions';\nimport { useTr } from '../../shared/hooks/useTr';\n\ninterface QuickAction {\n id: string;\n label: string;\n icon: ReactNode;\n to: string;\n permission: string;\n primary?: boolean;\n}\n\ninterface QuickActionsCardProps {\n onNavigate: (path: string) => void;\n}\n\nexport function QuickActionsCard({ onNavigate }: QuickActionsCardProps) {\n const tr = useTr();\n const { hasPermission, isLoading } = usePermissions();\n\n const actions: QuickAction[] = [\n {\n id: 'new-session',\n label: tr('vibecontrols.overview.quickActions.newSession', 'New Session'),\n icon: <Plus className=\"size-4\" />,\n to: '/sessions',\n permission: VIBE_PERMISSIONS.SESSION_CREATE,\n primary: true,\n },\n {\n id: 'add-agent',\n label: tr('vibecontrols.overview.quickActions.addAgent', 'Add Agent'),\n icon: <Server className=\"size-4\" />,\n to: '/agents?create=true',\n permission: VIBE_PERMISSIONS.AGENT_CREATE,\n },\n {\n id: 'review-vibes',\n label: tr('vibecontrols.overview.quickActions.reviewVibes', 'Review Vibes'),\n icon: <Zap className=\"size-4\" />,\n to: '/vibes',\n permission: VIBE_PERMISSIONS.VIBE_LIST,\n },\n {\n id: 'create-workflow',\n label: tr('vibecontrols.overview.quickActions.createWorkflow', 'Create Workflow'),\n icon: <Workflow className=\"size-4\" />,\n to: '/actions',\n permission: VIBE_PERMISSIONS.ACTION_CREATE,\n },\n {\n id: 'schedule-task',\n label: tr('vibecontrols.overview.quickActions.scheduleTask', 'Schedule Task'),\n icon: <CalendarClock className=\"size-4\" />,\n to: '/calendar',\n permission: VIBE_PERMISSIONS.CALENDAR_AGENT_TASK_CREATE,\n },\n ];\n\n const visible = actions.filter((action) => hasPermission(action.permission));\n\n return (\n <Card className=\"flex h-full flex-col\">\n <h2 className=\"mb-4 text-lg font-semibold tracking-tight text-text-primary\">\n {tr('vibecontrols.overview.quickActions.title', 'Quick Actions')}\n </h2>\n\n {isLoading ? (\n <div className=\"space-y-2\" aria-hidden=\"true\">\n <SkeletonLine height=\"h-9\" />\n <SkeletonLine height=\"h-9\" />\n <SkeletonLine height=\"h-9\" />\n </div>\n ) : visible.length === 0 ? (\n <EmptyState\n title={tr('vibecontrols.overview.quickActions.emptyTitle', 'No actions available')}\n description={tr(\n 'vibecontrols.overview.quickActions.emptyDescription',\n 'Your role does not allow creating sessions, agents, workflows or scheduled tasks.'\n )}\n />\n ) : (\n <div className=\"flex flex-col gap-2\">\n {visible.map((action) => (\n <button\n key={action.id}\n type=\"button\"\n onClick={() => onNavigate(action.to)}\n className={\n action.primary\n ? 'inline-flex w-full items-center justify-center gap-2 rounded-button bg-action-primary-bg px-3 py-2 text-sm font-semibold text-action-primary-text transition-colors duration-200 hover:bg-action-primary-bgHover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-focus'\n : 'inline-flex w-full items-center justify-center gap-2 rounded-button border border-border-seam bg-bg-surface px-3 py-2 text-sm font-medium text-text-primary transition-all duration-200 hover:border-border-strong hover:bg-bg-sunken focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-focus'\n }\n >\n {action.icon}\n {action.label}\n </button>\n ))}\n </div>\n )}\n </Card>\n );\n}\n"],"mappings":";;;;;;;;;;AA8BA,SAAgB,EAAiB,EAAE,iBAAqC;CACtE,IAAM,IAAK,GAAO,EACZ,EAAE,kBAAe,iBAAc,GAAgB,EAyC/C,IAvCyB;EAC7B;GACE,IAAI;GACJ,OAAO,EAAG,iDAAiD,cAAc;GACzE,MAAM,kBAAC,GAAD,EAAM,WAAU,UAAW,CAAA;GACjC,IAAI;GACJ,YAAY,EAAiB;GAC7B,SAAS;GACV;EACD;GACE,IAAI;GACJ,OAAO,EAAG,+CAA+C,YAAY;GACrE,MAAM,kBAAC,GAAD,EAAQ,WAAU,UAAW,CAAA;GACnC,IAAI;GACJ,YAAY,EAAiB;GAC9B;EACD;GACE,IAAI;GACJ,OAAO,EAAG,kDAAkD,eAAe;GAC3E,MAAM,kBAAC,GAAD,EAAK,WAAU,UAAW,CAAA;GAChC,IAAI;GACJ,YAAY,EAAiB;GAC9B;EACD;GACE,IAAI;GACJ,OAAO,EAAG,qDAAqD,kBAAkB;GACjF,MAAM,kBAAC,GAAD,EAAU,WAAU,UAAW,CAAA;GACrC,IAAI;GACJ,YAAY,EAAiB;GAC9B;EACD;GACE,IAAI;GACJ,OAAO,EAAG,mDAAmD,gBAAgB;GAC7E,MAAM,kBAAC,GAAD,EAAe,WAAU,UAAW,CAAA;GAC1C,IAAI;GACJ,YAAY,EAAiB;GAC9B;EACF,CAEuB,QAAQ,MAAW,EAAc,EAAO,WAAW,CAAC;AAE5E,QACE,kBAAC,GAAD;EAAM,WAAU;YAAhB,CACE,kBAAC,MAAD;GAAI,WAAU;aACX,EAAG,4CAA4C,gBAAgB;GAC7D,CAAA,EAEJ,IACC,kBAAC,OAAD;GAAK,WAAU;GAAY,eAAY;aAAvC;IACE,kBAAC,GAAD,EAAc,QAAO,OAAQ,CAAA;IAC7B,kBAAC,GAAD,EAAc,QAAO,OAAQ,CAAA;IAC7B,kBAAC,GAAD,EAAc,QAAO,OAAQ,CAAA;IACzB;OACJ,EAAQ,WAAW,IACrB,kBAAC,GAAD;GACE,OAAO,EAAG,iDAAiD,uBAAuB;GAClF,aAAa,EACX,uDACA,oFACD;GACD,CAAA,GAEF,kBAAC,OAAD;GAAK,WAAU;aACZ,EAAQ,KAAK,MACZ,kBAAC,UAAD;IAEE,MAAK;IACL,eAAe,EAAW,EAAO,GAAG;IACpC,WACE,EAAO,UACH,qSACA;cAPR,CAUG,EAAO,MACP,EAAO,MACD;MAXF,EAAO,GAWL,CACT;GACE,CAAA,CAEH"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useFleetAnalytics.js","names":[],"sources":["../../../src/components/overview/useFleetAnalytics.ts"],"sourcesContent":["/**\n * Overview analytics hooks.\n *\n * Both hooks bind to the EXISTING `VibecontrolsAnalytics` query\n * (`src/operations/wspace/vibecontrols/queries/analytics.graphql`) — the same\n * operation the Analytics page uses. `entityTypes` narrows the server-side\n * work to only the entities each widget needs.\n *\n * Variable stability matters here: Apollo re-issues a request whenever\n * `variables` change, so both hooks quantise \"now\" (to the hour / to the day)\n * instead of using a fresh `Date` on every render.\n */\n\nimport { useCallback, useMemo } from 'react';\nimport { AnalyticsEntityType } from '@/generated/wspace-types';\nimport { useVibecontrolsAnalyticsQuery } from '@/generated/wspace-operations';\nimport type { FleetActivityGranularity, FleetActivityPoint, FleetActivityRange } from './types';\n\ninterface RangeConfig {\n hours: number;\n granularity: FleetActivityGranularity;\n}\n\nconst RANGE_CONFIG: Record<FleetActivityRange, RangeConfig> = {\n LAST_24H: { hours: 24, granularity: 'HOUR' },\n LAST_7D: { hours: 24 * 7, granularity: 'DAY' },\n LAST_30D: { hours: 24 * 30, granularity: 'DAY' },\n};\n\n/** Current hour, minutes/seconds zeroed — stable for up to an hour. */\nfunction currentHourKey(): string {\n const d = new Date();\n d.setMinutes(0, 0, 0);\n return d.toISOString();\n}\n\n/** Local midnight of the current day — stable for the whole day. */\nfunction currentDayKey(): string {\n const d = new Date();\n d.setHours(0, 0, 0, 0);\n return d.toISOString();\n}\n\nexport interface FleetActivityResult {\n sessions: readonly FleetActivityPoint[];\n aiEvents: readonly FleetActivityPoint[];\n actionRuns: readonly FleetActivityPoint[];\n granularity: FleetActivityGranularity;\n loading: boolean;\n error?: Error;\n refetch: () => void;\n}\n\n/**\n * Time-bucketed fleet activity (sessions started, AI tool events, action runs)\n * for the selected window.\n */\nexport function useFleetActivity(range: FleetActivityRange, enabled: boolean): FleetActivityResult {\n const { hours, granularity } = RANGE_CONFIG[range];\n const hourKey = currentHourKey();\n\n const variables = useMemo(() => {\n // Round the window up to the end of the in-progress hour so the newest\n // bucket is included rather than clipped mid-way.\n const endDate = new Date(hourKey);\n endDate.setHours(endDate.getHours() + 1);\n const startDate = new Date(endDate);\n startDate.setHours(startDate.getHours() - hours);\n\n return {\n input: {\n startDate: startDate.toISOString(),\n endDate: endDate.toISOString(),\n granularity,\n entityTypes: [\n AnalyticsEntityType.Session,\n AnalyticsEntityType.AiEvent,\n AnalyticsEntityType.Action,\n ],\n },\n };\n }, [hourKey, hours, granularity]);\n\n const { data, loading, error, refetch } = useVibecontrolsAnalyticsQuery({\n variables,\n skip: !enabled,\n fetchPolicy: 'cache-and-network',\n nextFetchPolicy: 'cache-first',\n notifyOnNetworkStatusChange: true,\n });\n\n const handleRefetch = useCallback(() => {\n void refetch();\n }, [refetch]);\n\n const analytics = data?.vibecontrolsAnalytics;\n\n return {\n sessions: analytics?.sessions?.createdOverTime ?? [],\n aiEvents: analytics?.aiEvents?.eventsOverTime ?? [],\n actionRuns: analytics?.actions?.executionsOverTime ?? [],\n granularity,\n loading,\n error,\n refetch: handleRefetch,\n };\n}\n\nexport interface AiRunsTodayResult {\n /** Null until the first result lands (or when the caller is not permitted). */\n total: number | null;\n loading: boolean;\n error?: Error;\n refetch: () => void;\n}\n\n/**\n * Count of AI tool events recorded since local midnight — the \"AI Runs Today\"\n * KPI. Scoped server-side to the AiEvent entity only.\n */\nexport function useAiRunsToday(enabled: boolean): AiRunsTodayResult {\n const dayKey = currentDayKey();\n\n const variables = useMemo(() => {\n const startDate = new Date(dayKey);\n const endDate = new Date(startDate);\n endDate.setDate(endDate.getDate() + 1);\n\n return {\n input: {\n startDate: startDate.toISOString(),\n endDate: endDate.toISOString(),\n granularity: 'HOUR',\n entityTypes: [AnalyticsEntityType.AiEvent],\n },\n };\n }, [dayKey]);\n\n const { data, loading, error, refetch } = useVibecontrolsAnalyticsQuery({\n variables,\n skip: !enabled,\n fetchPolicy: 'cache-and-network',\n nextFetchPolicy: 'cache-first',\n notifyOnNetworkStatusChange: true,\n });\n\n const handleRefetch = useCallback(() => {\n void refetch();\n }, [refetch]);\n\n const total = data?.vibecontrolsAnalytics?.aiEvents?.total;\n\n return {\n total: typeof total === 'number' ? total : null,\n loading,\n error,\n refetch: handleRefetch,\n };\n}\n"],"mappings":";;;;AAuBA,IAAM,IAAwD;CAC5D,UAAU;EAAE,OAAO;EAAI,aAAa;EAAQ;CAC5C,SAAS;EAAE,OAAO;EAAQ,aAAa;EAAO;CAC9C,UAAU;EAAE,OAAO;EAAS,aAAa;EAAO;CACjD;AAGD,SAAS,IAAyB;CAChC,IAAM,oBAAI,IAAI,MAAM;AAEpB,QADA,EAAE,WAAW,GAAG,GAAG,EAAE,EACd,EAAE,aAAa;;AAIxB,SAAS,IAAwB;CAC/B,IAAM,oBAAI,IAAI,MAAM;AAEpB,QADA,EAAE,SAAS,GAAG,GAAG,GAAG,EAAE,EACf,EAAE,aAAa;;AAiBxB,SAAgB,EAAiB,GAA2B,GAAuC;CACjG,IAAM,EAAE,UAAO,mBAAgB,EAAa,IACtC,IAAU,GAAgB,EAwB1B,EAAE,SAAM,YAAS,UAAO,eAAY,EAA8B;EACtE,WAvBgB,QAAc;GAG9B,IAAM,IAAU,IAAI,KAAK,EAAQ;AACjC,KAAQ,SAAS,EAAQ,UAAU,GAAG,EAAE;GACxC,IAAM,IAAY,IAAI,KAAK,EAAQ;AAGnC,UAFA,EAAU,SAAS,EAAU,UAAU,GAAG,EAAM,EAEzC,EACL,OAAO;IACL,WAAW,EAAU,aAAa;IAClC,SAAS,EAAQ,aAAa;IAC9B;IACA,aAAa;KACX,EAAoB;KACpB,EAAoB;KACpB,EAAoB;KACrB;IACF,EACF;KACA;GAAC;GAAS;GAAO;GAAY,CAAC;EAI/B,MAAM,CAAC;EACP,aAAa;EACb,iBAAiB;EACjB,6BAA6B;EAC9B,CAAC,EAEI,IAAgB,QAAkB;AACjC,KAAS;IACb,CAAC,EAAQ,CAAC,EAEP,IAAY,GAAM;AAExB,QAAO;EACL,UAAU,GAAW,UAAU,mBAAmB,EAAE;EACpD,UAAU,GAAW,UAAU,kBAAkB,EAAE;EACnD,YAAY,GAAW,SAAS,sBAAsB,EAAE;EACxD;EACA;EACA;EACA,SAAS;EACV;;AAeH,SAAgB,EAAe,GAAqC;CAClE,IAAM,IAAS,GAAe,EAiBxB,EAAE,SAAM,YAAS,UAAO,eAAY,EAA8B;EACtE,WAhBgB,QAAc;GAC9B,IAAM,IAAY,IAAI,KAAK,EAAO,EAC5B,IAAU,IAAI,KAAK,EAAU;AAGnC,UAFA,EAAQ,QAAQ,EAAQ,SAAS,GAAG,EAAE,EAE/B,EACL,OAAO;IACL,WAAW,EAAU,aAAa;IAClC,SAAS,EAAQ,aAAa;IAC9B,aAAa;IACb,aAAa,CAAC,EAAoB,QAAQ;IAC3C,EACF;KACA,CAAC,EAAO,CAAC;EAIV,MAAM,CAAC;EACP,aAAa;EACb,iBAAiB;EACjB,6BAA6B;EAC9B,CAAC,EAEI,IAAgB,QAAkB;AACjC,KAAS;IACb,CAAC,EAAQ,CAAC,EAEP,IAAQ,GAAM,uBAAuB,UAAU;AAErD,QAAO;EACL,OAAO,OAAO,KAAU,WAAW,IAAQ;EAC3C;EACA;EACA,SAAS;EACV"}