@taskforcehq/taskforce 0.3.326 → 0.3.327
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.
- package/LICENSE.md +68 -0
- package/README.md +19 -0
- package/dist/Taskforce.module.css +2173 -561
- package/dist/TaskforceCore.d.ts +1 -0
- package/dist/TaskforceCore.js +65 -22
- package/dist/annotatedAttachments/AnnotatedAttachmentSessionStore.d.ts +1 -0
- package/dist/annotatedAttachments/AnnotatedAttachmentSessionStore.js +3 -2
- package/dist/annotatedAttachments/commandService.d.ts +68 -0
- package/dist/annotatedAttachments/commandService.js +348 -0
- package/dist/annotatedAttachments/service.d.ts +2 -0
- package/dist/annotatedAttachments/service.js +13 -12
- package/dist/cli.js +158 -9
- package/dist/cliOpenPort.d.ts +1 -0
- package/dist/cliOpenPort.js +4 -0
- package/dist/compat/taskforceAgentDefinitionCompat.d.ts +12 -0
- package/dist/compat/taskforceAgentDefinitionCompat.js +25 -0
- package/dist/compat/workspaceSyncCompat.js +6 -2
- package/dist/compat/workspaceSyncV3CombinedCoverageCompat.d.ts +6 -0
- package/dist/compat/workspaceSyncV3CombinedCoverageCompat.js +22 -0
- package/dist/compat/workspaceSyncV3OperationCompat.d.ts +7 -0
- package/dist/compat/workspaceSyncV3OperationCompat.js +30 -0
- package/dist/components/activity/EntityActivityTimeline.d.ts +10 -2
- package/dist/components/activity/EntityActivityTimeline.js +73 -35
- package/dist/components/context/AttachmentPreviewHost.d.ts +6 -0
- package/dist/components/context/AttachmentPreviewHost.js +222 -0
- package/dist/components/context/ContextAttachmentManager.d.ts +4 -0
- package/dist/components/context/ContextAttachmentManager.js +418 -208
- package/dist/components/features/AiProfilesModule.d.ts +24 -0
- package/dist/components/features/AiProfilesModule.js +744 -0
- package/dist/components/features/AnnotatedAttachmentWorkspace.d.ts +4 -1
- package/dist/components/features/AnnotatedAttachmentWorkspace.js +351 -79
- package/dist/components/features/DocumentGenerateModal.js +23 -5
- package/dist/components/features/DocumentIndex.d.ts +19 -1
- package/dist/components/features/DocumentIndex.js +104 -15
- package/dist/components/features/DocumentViewer.d.ts +9 -1
- package/dist/components/features/DocumentViewer.js +721 -100
- package/dist/components/features/DocumentWorkspace.d.ts +37 -2
- package/dist/components/features/DocumentWorkspace.js +21 -6
- package/dist/components/features/TaskSettings.d.ts +6 -27
- package/dist/components/features/TaskSettings.js +232 -143
- package/dist/components/features/TaskforceAgentsModule.d.ts +36 -0
- package/dist/components/features/TaskforceAgentsModule.js +1782 -0
- package/dist/components/features/agentBehavior/AgentBehaviorManagerShared.d.ts +94 -0
- package/dist/components/features/agentBehavior/AgentBehaviorManagerShared.js +70 -0
- package/dist/components/features/agentCapabilities/AgentCapabilitiesPrototype.d.ts +65 -0
- package/dist/components/features/agentCapabilities/AgentCapabilitiesPrototype.js +115 -0
- package/dist/components/features/agentRoles/RoleManagerPanel.d.ts +4 -0
- package/dist/components/features/agentRoles/RoleManagerPanel.js +382 -0
- package/dist/components/features/agentSkills/SkillManagerPanel.d.ts +5 -0
- package/dist/components/features/agentSkills/SkillManagerPanel.js +355 -0
- package/dist/components/features/documentWorkspaceModel.d.ts +16 -4
- package/dist/components/features/documentWorkspaceModel.js +30 -5
- package/dist/components/features/planning/PlanningArchiveConfirmation.d.ts +9 -0
- package/dist/components/features/planning/PlanningArchiveConfirmation.js +19 -0
- package/dist/components/features/planning/PlanningCardIdentity.d.ts +12 -0
- package/dist/components/features/planning/PlanningCardIdentity.js +44 -0
- package/dist/components/features/planning/PlanningEntityDetails.d.ts +36 -0
- package/dist/components/features/planning/PlanningEntityDetails.js +131 -0
- package/dist/components/features/planning/PlanningEntitySummary.d.ts +44 -0
- package/dist/components/features/planning/PlanningEntitySummary.js +97 -0
- package/dist/components/features/planning/PlanningLinkPicker.d.ts +9 -0
- package/dist/components/features/planning/PlanningLinkPicker.js +26 -0
- package/dist/components/features/planning/PlanningModule.d.ts +6 -0
- package/dist/components/features/planning/PlanningModule.js +571 -0
- package/dist/components/features/planning/PlanningOwnerDropdown.d.ts +27 -0
- package/dist/components/features/planning/PlanningOwnerDropdown.js +80 -0
- package/dist/components/features/planning/PlanningTaskArrangeControl.d.ts +5 -0
- package/dist/components/features/planning/PlanningTaskArrangeControl.js +11 -0
- package/dist/components/features/planning/PlanningTaskCard.d.ts +20 -0
- package/dist/components/features/planning/PlanningTaskCard.js +26 -0
- package/dist/components/features/planning/PlanningTaskOrderList.d.ts +10 -0
- package/dist/components/features/planning/PlanningTaskOrderList.js +52 -0
- package/dist/components/features/planning/PlanningUnlinkConfirmation.d.ts +15 -0
- package/dist/components/features/planning/PlanningUnlinkConfirmation.js +7 -0
- package/dist/components/features/planning/planningCreateIntent.d.ts +10 -0
- package/dist/components/features/planning/planningCreateIntent.js +16 -0
- package/dist/components/features/planning/planningNavigator.d.ts +33 -0
- package/dist/components/features/planning/planningNavigator.js +96 -0
- package/dist/components/features/planning/planningTaskArrangement.d.ts +18 -0
- package/dist/components/features/planning/planningTaskArrangement.js +106 -0
- package/dist/components/features/planning/planningWorkspaceModel.d.ts +121 -0
- package/dist/components/features/planning/planningWorkspaceModel.js +5 -0
- package/dist/components/features/settings/CategoryManager.js +2 -2
- package/dist/components/features/settings/TaxonomyEditor.js +1 -1
- package/dist/components/features/settings/TaxonomyManager.js +1 -1
- package/dist/components/features/settings/TypeManager.js +1 -1
- package/dist/components/features/taskforceAgentAssignments/AgentBehaviorAssignments.d.ts +10 -0
- package/dist/components/features/taskforceAgentAssignments/AgentBehaviorAssignments.js +175 -0
- package/dist/components/features/taskforceAgentAssignments/agentBehaviorCatalogApi.d.ts +27 -0
- package/dist/components/features/taskforceAgentAssignments/agentBehaviorCatalogApi.js +24 -0
- package/dist/components/features/taskforceAgentEditorModel.d.ts +109 -0
- package/dist/components/features/taskforceAgentEditorModel.js +145 -0
- package/dist/components/features/useDocumentWorkspaceController.d.ts +20 -1
- package/dist/components/features/useDocumentWorkspaceController.js +106 -21
- package/dist/components/features/workflowManager/WorkflowManagerModule.d.ts +11 -0
- package/dist/components/features/workflowManager/WorkflowManagerModule.js +313 -0
- package/dist/components/features/workflowManager/WorkflowPublishDialog.d.ts +11 -0
- package/dist/components/features/workflowManager/WorkflowPublishDialog.js +8 -0
- package/dist/components/features/workflowManager/types.d.ts +74 -0
- package/dist/components/features/workflowManager/types.js +1 -0
- package/dist/components/features/workflowManager/useWorkflowManager.d.ts +30 -0
- package/dist/components/features/workflowManager/useWorkflowManager.js +213 -0
- package/dist/components/features/workflowManager/workflowManagerApi.d.ts +52 -0
- package/dist/components/features/workflowManager/workflowManagerApi.js +142 -0
- package/dist/components/task/TaskActionHeader.d.ts +6 -3
- package/dist/components/task/TaskActionHeader.js +46 -53
- package/dist/components/task/TaskCard.d.ts +10 -2
- package/dist/components/task/TaskCard.js +103 -54
- package/dist/components/task/TaskContextUpload.d.ts +1 -0
- package/dist/components/task/TaskContextUpload.js +3 -2
- package/dist/components/task/TaskForm.d.ts +12 -17
- package/dist/components/task/TaskForm.js +544 -199
- package/dist/components/task/TaskImageReviews.d.ts +8 -0
- package/dist/components/task/TaskImageReviews.js +47 -0
- package/dist/components/task/TaskKanban.d.ts +9 -10
- package/dist/components/task/TaskKanban.js +70 -18
- package/dist/components/task/TaskList.d.ts +9 -8
- package/dist/components/task/TaskList.js +46 -32
- package/dist/components/task/TaskReferenceBadge.d.ts +2 -1
- package/dist/components/task/TaskReferenceBadge.js +3 -2
- package/dist/components/task/TaskStatusActions.d.ts +3 -1
- package/dist/components/task/TaskStatusActions.js +17 -6
- package/dist/components/task/TaskWorkflowAssignmentField.d.ts +18 -0
- package/dist/components/task/TaskWorkflowAssignmentField.js +362 -0
- package/dist/components/task/TaskWorkstreamPicker.d.ts +8 -0
- package/dist/components/task/TaskWorkstreamPicker.js +24 -0
- package/dist/components/task/TrashRestoreControls.d.ts +18 -0
- package/dist/components/task/TrashRestoreControls.js +71 -0
- package/dist/components/ui/AiIdentityRosterCard.d.ts +20 -0
- package/dist/components/ui/AiIdentityRosterCard.js +5 -0
- package/dist/components/ui/AssetTraySortControl.d.ts +10 -0
- package/dist/components/ui/AssetTraySortControl.js +38 -0
- package/dist/components/ui/AssigneeIdentity.d.ts +12 -0
- package/dist/components/ui/AssigneeIdentity.js +41 -0
- package/dist/components/ui/DiscardChangesDialog.d.ts +10 -0
- package/dist/components/ui/DiscardChangesDialog.js +7 -0
- package/dist/components/ui/DisclosureSectionHeader.d.ts +4 -1
- package/dist/components/ui/DisclosureSectionHeader.js +2 -2
- package/dist/components/ui/EditableAvatarButton.d.ts +6 -1
- package/dist/components/ui/EditableAvatarButton.js +6 -5
- package/dist/components/ui/HierarchyActionBadge.d.ts +2 -1
- package/dist/components/ui/HierarchyActionBadge.js +2 -2
- package/dist/components/ui/Markdown.d.ts +13 -3
- package/dist/components/ui/Markdown.fixture.d.ts +1 -0
- package/dist/components/ui/Markdown.fixture.js +23 -0
- package/dist/components/ui/Markdown.js +158 -68
- package/dist/components/ui/Modal.d.ts +3 -1
- package/dist/components/ui/Modal.js +85 -19
- package/dist/components/ui/MultiSelectFilter.d.ts +9 -2
- package/dist/components/ui/MultiSelectFilter.js +26 -5
- package/dist/components/ui/ReferenceBadgeButton.js +2 -3
- package/dist/components/ui/TaxonomyDropdown.d.ts +10 -1
- package/dist/components/ui/TaxonomyDropdown.js +149 -58
- package/dist/components/ui/TopNoticeLayer.d.ts +2 -1
- package/dist/components/ui/TopNoticeLayer.js +5 -2
- package/dist/components/ui/useFallbackImageUrl.d.ts +4 -0
- package/dist/components/ui/useFallbackImageUrl.js +20 -0
- package/dist/components/views/AppShellHeader.js +2 -2
- package/dist/components/views/StandaloneLayout.d.ts +1 -0
- package/dist/components/views/StandaloneLayout.js +1662 -598
- package/dist/components/views/WidgetView.d.ts +1 -0
- package/dist/components/views/WidgetView.js +95 -30
- package/dist/components/views/chrome/WorkspaceChromeSections.d.ts +4 -2
- package/dist/components/views/chrome/WorkspaceChromeSections.js +3 -6
- package/dist/components/views/chrome/workspaceChrome.d.ts +5 -8
- package/dist/components/views/chrome/workspaceChrome.js +62 -27
- package/dist/components/views/panels/FilterToolbar.d.ts +4 -3
- package/dist/components/views/panels/FilterToolbar.js +8 -5
- package/dist/components/views/panels/FilterToolbarControls.d.ts +11 -2
- package/dist/components/views/panels/FilterToolbarControls.js +35 -20
- package/dist/components/views/panels/PlanningDrawer.d.ts +60 -49
- package/dist/components/views/panels/PlanningDrawer.js +978 -313
- package/dist/components/views/planningScope.js +7 -1
- package/dist/components/views/standalone/modals/AccountSettingsModal.d.ts +62 -0
- package/dist/components/views/standalone/modals/AccountSettingsModal.js +197 -0
- package/dist/components/views/standalone/modals/AvatarImageManagerModal.d.ts +7 -2
- package/dist/components/views/standalone/modals/AvatarImageManagerModal.js +56 -9
- package/dist/components/views/standalone/modals/HelpModal.d.ts +1 -2
- package/dist/components/views/standalone/modals/HelpModal.js +3 -4
- package/dist/components/views/standalone/modals/SyncStatusModal.d.ts +8 -9
- package/dist/components/views/standalone/modals/SyncStatusModal.js +85 -25
- package/dist/components/views/standalone/modals/TeamManagementModal.js +1 -1
- package/dist/config/applicationBaseUrl.d.ts +2 -0
- package/dist/config/applicationBaseUrl.js +23 -0
- package/dist/config/envSchema.d.ts +1 -1
- package/dist/config/envSchema.js +166 -5
- package/dist/core/AdminAuditRetentionService.d.ts +43 -0
- package/dist/core/AdminAuditRetentionService.js +126 -0
- package/dist/core/AiProfileService.d.ts +34 -0
- package/dist/core/AiProfileService.js +510 -251
- package/dist/core/AttachmentLinkService.d.ts +10 -2
- package/dist/core/AttachmentLinkService.js +44 -12
- package/dist/core/AuthIdentityService.d.ts +6 -0
- package/dist/core/AuthIdentityService.js +38 -0
- package/dist/core/AuthTokenService.d.ts +1 -0
- package/dist/core/AuthTokenService.js +13 -0
- package/dist/core/DeletedTaskLifecycleService.d.ts +4 -2
- package/dist/core/DeletedTaskLifecycleService.js +124 -38
- package/dist/core/GlobalSettingsService.d.ts +3 -1
- package/dist/core/GlobalSettingsService.js +30 -4
- package/dist/core/InitiativeDurableMutationService.d.ts +89 -0
- package/dist/core/InitiativeDurableMutationService.js +187 -0
- package/dist/core/McpTokenService.d.ts +1 -0
- package/dist/core/McpTokenService.js +39 -13
- package/dist/core/PlanningCommandPreparationService.d.ts +60 -0
- package/dist/core/PlanningCommandPreparationService.js +149 -0
- package/dist/core/ScheduleCommandService.d.ts +76 -0
- package/dist/core/ScheduleCommandService.js +165 -0
- package/dist/core/SyncReconciliationService.d.ts +29 -6
- package/dist/core/SyncReconciliationService.js +256 -84
- package/dist/core/TaskActivityService.d.ts +22 -2
- package/dist/core/TaskActivityService.js +177 -29
- package/dist/core/TaskAttachmentLinksDurableMutationService.d.ts +31 -0
- package/dist/core/TaskAttachmentLinksDurableMutationService.js +231 -0
- package/dist/core/TaskChecklistCommandService.d.ts +50 -0
- package/dist/core/TaskChecklistCommandService.js +111 -0
- package/dist/core/TaskDurableCreateMutationService.d.ts +38 -0
- package/dist/core/TaskDurableCreateMutationService.js +85 -0
- package/dist/core/TaskDurableDeleteMutationService.d.ts +47 -0
- package/dist/core/TaskDurableDeleteMutationService.js +54 -0
- package/dist/core/TaskDurableLifecycleMutationService.d.ts +38 -0
- package/dist/core/TaskDurableLifecycleMutationService.js +42 -0
- package/dist/core/TaskDurableRelationshipMutationService.d.ts +58 -0
- package/dist/core/TaskDurableRelationshipMutationService.js +66 -0
- package/dist/core/TaskDurableRestoreMutationService.d.ts +31 -0
- package/dist/core/TaskDurableRestoreMutationService.js +33 -0
- package/dist/core/TaskDurableStatusMutationService.d.ts +74 -0
- package/dist/core/TaskDurableStatusMutationService.js +247 -0
- package/dist/core/TaskDurableSyncMutationService.d.ts +34 -0
- package/dist/core/TaskDurableSyncMutationService.js +70 -0
- package/dist/core/TaskDurableWorkflowMutationService.d.ts +48 -0
- package/dist/core/TaskDurableWorkflowMutationService.js +59 -0
- package/dist/core/TaskLifecycleCommandService.d.ts +101 -0
- package/dist/core/TaskLifecycleCommandService.js +161 -0
- package/dist/core/TaskRootCommandPreparationService.d.ts +35 -0
- package/dist/core/TaskRootCommandPreparationService.js +103 -0
- package/dist/core/Taskforce.d.ts +479 -59
- package/dist/core/Taskforce.js +3671 -841
- package/dist/core/WorkflowAssignmentService.d.ts +40 -0
- package/dist/core/WorkflowAssignmentService.js +158 -0
- package/dist/core/WorkflowExecutionService.d.ts +69 -0
- package/dist/core/WorkflowExecutionService.js +342 -0
- package/dist/core/WorkflowTaskActivationService.d.ts +32 -0
- package/dist/core/WorkflowTaskActivationService.js +63 -0
- package/dist/core/WorkflowTemplateService.d.ts +64 -0
- package/dist/core/WorkflowTemplateService.js +223 -0
- package/dist/core/WorkspaceLifecycleService.d.ts +1 -0
- package/dist/core/WorkspaceLifecycleService.js +18 -0
- package/dist/core/WorkstreamDurableMutationService.d.ts +90 -0
- package/dist/core/WorkstreamDurableMutationService.js +184 -0
- package/dist/core/planningReferencePolicy.d.ts +14 -0
- package/dist/core/planningReferencePolicy.js +53 -0
- package/dist/core/taskReferencePolicy.js +24 -3
- package/dist/core/types.d.ts +10 -10
- package/dist/documentReviews/DocumentReviewCommentStore.d.ts +22 -2
- package/dist/documentReviews/DocumentReviewCommentStore.js +92 -8
- package/dist/documentReviews/commandService.d.ts +51 -0
- package/dist/documentReviews/commandService.js +63 -0
- package/dist/documentReviews/service.d.ts +20 -1
- package/dist/documentReviews/service.js +234 -24
- package/dist/documentReviews/types.d.ts +18 -1
- package/dist/hooks/sync/bootstrap.d.ts +3 -7
- package/dist/hooks/sync/bootstrap.js +6 -14
- package/dist/hooks/sync/browserSyncAuthority.d.ts +21 -0
- package/dist/hooks/sync/browserSyncAuthority.js +70 -0
- package/dist/hooks/sync/browserSyncRemoteServices.d.ts +29 -0
- package/dist/hooks/sync/browserSyncRemoteServices.js +58 -0
- package/dist/hooks/sync/controlPlane.d.ts +1 -37
- package/dist/hooks/sync/controlPlane.js +1 -78
- package/dist/hooks/sync/lifecyclePolicy.d.ts +1 -45
- package/dist/hooks/sync/lifecyclePolicy.js +1 -93
- package/dist/hooks/sync/orchestratorShared.d.ts +9 -3
- package/dist/hooks/sync/orchestratorShared.js +70 -96
- package/dist/hooks/sync/pullLifecycle.d.ts +1 -31
- package/dist/hooks/sync/pullLifecycle.js +1 -24
- package/dist/hooks/sync/realtime.d.ts +4 -1
- package/dist/hooks/sync/realtime.js +103 -3
- package/dist/hooks/sync/recovery.d.ts +1 -84
- package/dist/hooks/sync/recovery.js +1 -245
- package/dist/hooks/sync/transfers.d.ts +8 -129
- package/dist/hooks/sync/transfers.js +19 -581
- package/dist/hooks/sync/useDataVersionRefresh.d.ts +6 -1
- package/dist/hooks/sync/useDataVersionRefresh.js +127 -12
- package/dist/hooks/sync/useDurableLocalOutboxDrain.d.ts +14 -0
- package/dist/hooks/sync/useDurableLocalOutboxDrain.js +208 -0
- package/dist/hooks/sync/useDurableTaskCreateMutation.d.ts +15 -0
- package/dist/hooks/sync/useDurableTaskCreateMutation.js +152 -0
- package/dist/hooks/sync/useDurableTaskDeleteMutation.d.ts +11 -0
- package/dist/hooks/sync/useDurableTaskDeleteMutation.js +21 -0
- package/dist/hooks/sync/useDurableTaskLifecycleMutation.d.ts +12 -0
- package/dist/hooks/sync/useDurableTaskLifecycleMutation.js +22 -0
- package/dist/hooks/sync/useDurableTaskMetadataMutation.d.ts +14 -0
- package/dist/hooks/sync/useDurableTaskMetadataMutation.js +24 -0
- package/dist/hooks/sync/useDurableTaskRestoreMutation.d.ts +12 -0
- package/dist/hooks/sync/useDurableTaskRestoreMutation.js +24 -0
- package/dist/hooks/sync/useDurableTaskStatusMutation.d.ts +18 -0
- package/dist/hooks/sync/useDurableTaskStatusMutation.js +23 -0
- package/dist/hooks/sync/useLocalSyncCoordinatorSnapshot.d.ts +23 -0
- package/dist/hooks/sync/useLocalSyncCoordinatorSnapshot.js +414 -0
- package/dist/hooks/sync/useSyncStatusActions.d.ts +2 -1
- package/dist/hooks/sync/useSyncStatusActions.js +8 -3
- package/dist/hooks/tasks/taskHttpMutation.d.ts +25 -0
- package/dist/hooks/tasks/taskHttpMutation.js +134 -0
- package/dist/hooks/tasks/useCurrentTaskRelations.d.ts +6 -1
- package/dist/hooks/tasks/useCurrentTaskRelations.js +32 -6
- package/dist/hooks/tasks/useTaskEditorNavigation.d.ts +4 -3
- package/dist/hooks/tasks/useTaskEditorNavigation.js +9 -13
- package/dist/hooks/tasks/useTaskFormActions.d.ts +17 -2
- package/dist/hooks/tasks/useTaskFormActions.js +309 -55
- package/dist/hooks/tasks/useTaskReferenceContract.d.ts +5 -0
- package/dist/hooks/tasks/useTaskReferenceContract.js +17 -0
- package/dist/hooks/tasks/useTaskRelationships.d.ts +1 -3
- package/dist/hooks/tasks/useTaskRelationships.js +5 -25
- package/dist/hooks/tasks/useTrashSelection.d.ts +12 -0
- package/dist/hooks/tasks/useTrashSelection.js +49 -0
- package/dist/hooks/ui/useInitiativeTemplates.d.ts +24 -0
- package/dist/hooks/ui/useInitiativeTemplates.js +22 -0
- package/dist/hooks/ui/useSettingsModel.d.ts +5 -29
- package/dist/hooks/ui/useSettingsModel.js +31 -15
- package/dist/hooks/ui/useSettingsPersistence.d.ts +0 -1
- package/dist/hooks/ui/useSettingsPersistence.js +4 -8
- package/dist/hooks/ui/useSettingsTaxonomyManagement.js +31 -0
- package/dist/hooks/useFilterSort.d.ts +2 -2
- package/dist/hooks/useFilterSort.js +19 -15
- package/dist/hooks/useRealtimeSync.d.ts +10 -0
- package/dist/hooks/useRealtimeSync.js +57 -4
- package/dist/hooks/useSyncOrchestrator.d.ts +32 -1
- package/dist/hooks/useSyncOrchestrator.js +963 -287
- package/dist/hooks/useTaskData.d.ts +11 -2
- package/dist/hooks/useTaskData.js +59 -26
- package/dist/hooks/useTaskMutations.d.ts +42 -5
- package/dist/hooks/useTaskMutations.js +750 -125
- package/dist/hooks/useTaskforce.d.ts +114 -118
- package/dist/hooks/useTaskforce.js +1102 -449
- package/dist/hooks/useUiNotice.d.ts +5 -1
- package/dist/hooks/useUiNotice.js +13 -2
- package/dist/hooks/useWorkspaceSyncController.d.ts +9 -0
- package/dist/hooks/useWorkspaceSyncController.js +159 -17
- package/dist/hooks/workspace/usePersistedAppUiState.d.ts +74 -0
- package/dist/hooks/workspace/usePersistedAppUiState.js +325 -0
- package/dist/hooks/workspace/usePersistedLayoutUiState.d.ts +76 -0
- package/dist/hooks/workspace/usePersistedLayoutUiState.js +479 -0
- package/dist/hooks/workspace/useTaskforceWorkspaceBootstrap.d.ts +2 -7
- package/dist/hooks/workspace/useTaskforceWorkspaceBootstrap.js +42 -31
- package/dist/hooks/workspace/workspaceLocalState.d.ts +17 -6
- package/dist/hooks/workspace/workspaceLocalState.js +175 -5
- package/dist/hooks/workstreams/workstreamHttpMutation.d.ts +23 -0
- package/dist/hooks/workstreams/workstreamHttpMutation.js +134 -0
- package/dist/localization/locales/en-US.d.ts +3 -3
- package/dist/localization/locales/en-US.js +3 -3
- package/dist/localization/locales/es-419.js +3 -3
- package/dist/localization/locales/pt-BR.js +3 -3
- package/dist/mcp/adminWorkspaceRegistrar.js +2 -30
- package/dist/mcp/aiProfileBootstrap.d.ts +3 -0
- package/dist/mcp/aiProfileBootstrap.js +4 -0
- package/dist/mcp/canonicalAssetHelpers.d.ts +16 -4
- package/dist/mcp/canonicalAssetHelpers.js +104 -35
- package/dist/mcp/clientIntegrations.d.ts +4 -2
- package/dist/mcp/clientIntegrations.js +58 -57
- package/dist/mcp/clientRegistry.d.ts +30 -0
- package/dist/mcp/clientRegistry.js +134 -0
- package/dist/mcp/collaborationRegistrar.js +20 -6
- package/dist/mcp/documentAssetRegistrar.js +220 -52
- package/dist/mcp/documentContentCommand.d.ts +94 -0
- package/dist/mcp/documentContentCommand.js +226 -0
- package/dist/mcp/documentHelpers.d.ts +13 -65
- package/dist/mcp/documentHelpers.js +49 -62
- package/dist/mcp/durableTaskMutationRouter.d.ts +65 -0
- package/dist/mcp/durableTaskMutationRouter.js +217 -0
- package/dist/mcp/durableTaskRelationshipMutationRouter.d.ts +38 -0
- package/dist/mcp/durableTaskRelationshipMutationRouter.js +168 -0
- package/dist/mcp/durableTaskRootMutationRouter.d.ts +64 -0
- package/dist/mcp/durableTaskRootMutationRouter.js +226 -0
- package/dist/mcp/gitWorktreeRoots.d.ts +2 -0
- package/dist/mcp/gitWorktreeRoots.js +19 -0
- package/dist/mcp/legacyServer.d.ts +1 -0
- package/dist/mcp/legacyServer.js +42 -0
- package/dist/mcp/localCliHealth.d.ts +56 -0
- package/dist/mcp/localCliHealth.js +170 -0
- package/dist/mcp/localServiceProxy.d.ts +23 -0
- package/dist/mcp/localServiceProxy.js +255 -0
- package/dist/mcp/mcpInputValidator.d.ts +17 -0
- package/dist/mcp/mcpInputValidator.js +58 -0
- package/dist/mcp/planningAttachmentCommandAdapter.d.ts +127 -0
- package/dist/mcp/planningAttachmentCommandAdapter.js +188 -0
- package/dist/mcp/programScaffoldCommandAdapter.d.ts +6 -0
- package/dist/mcp/programScaffoldCommandAdapter.js +39 -0
- package/dist/mcp/proxyServer.d.ts +1 -0
- package/dist/mcp/proxyServer.js +2 -0
- package/dist/mcp/runtime.d.ts +82 -1
- package/dist/mcp/runtime.js +4285 -1925
- package/dist/mcp/server.js +29 -2
- package/dist/mcp/sharedLocalServiceGateD.d.ts +115 -0
- package/dist/mcp/sharedLocalServiceGateD.js +344 -0
- package/dist/mcp/stdioLifecycle.d.ts +22 -0
- package/dist/mcp/stdioLifecycle.js +54 -0
- package/dist/mcp/taskAttachmentCommandAdapter.d.ts +190 -0
- package/dist/mcp/taskAttachmentCommandAdapter.js +464 -0
- package/dist/mcp/taskAttachmentHelpers.d.ts +8 -6
- package/dist/mcp/taskAttachmentHelpers.js +74 -2
- package/dist/mcp/taskAttachmentTypes.d.ts +26 -5
- package/dist/mcp/taskPlanCommand.d.ts +64 -0
- package/dist/mcp/taskPlanCommand.js +98 -0
- package/dist/mcp/taskPlanningRegistrar.js +215 -27
- package/dist/mcp/toolCallCompatibility.d.ts +6 -0
- package/dist/mcp/toolCallCompatibility.js +16 -0
- package/dist/mcp/toolCatalog.d.ts +3 -1
- package/dist/mcp/toolProfiles.d.ts +12 -1
- package/dist/mcp/toolProfiles.js +43 -0
- package/dist/mcp/toolRegistry.d.ts +17 -2
- package/dist/mcp/toolRegistry.js +24 -9
- package/dist/mcp/workflowExecutionRegistrar.d.ts +2 -0
- package/dist/mcp/workflowExecutionRegistrar.js +51 -0
- package/dist/migrations/taskSchemaMigrations.d.ts +35 -0
- package/dist/migrations/taskSchemaMigrations.js +1797 -4
- package/dist/migrations/taskUpdatedAtSyncDriftMigration.d.ts +20 -0
- package/dist/migrations/taskUpdatedAtSyncDriftMigration.js +153 -0
- package/dist/migrations/taskforceAgentDefinitionMigration.d.ts +26 -0
- package/dist/migrations/taskforceAgentDefinitionMigration.js +116 -0
- package/dist/plugins/vite.js +48 -17
- package/dist/public/Taskforce_Van.webp +0 -0
- package/dist/runtime/appGateDefinitions.d.ts +16 -10
- package/dist/runtime/appGateDefinitions.js +16 -10
- package/dist/runtime/appGates.d.ts +5 -4
- package/dist/runtime/appGates.js +4 -3
- package/dist/server/aiProfileAvatarAssets.d.ts +11 -8
- package/dist/server/aiProfileAvatarAssets.js +159 -70
- package/dist/server/auth.js +15 -1
- package/dist/server/cors.d.ts +2 -1
- package/dist/server/cors.js +45 -8
- package/dist/server/email.d.ts +3 -1
- package/dist/server/email.js +46 -8
- package/dist/server/index.d.ts +24 -1
- package/dist/server/index.js +342 -46
- package/dist/server/localDataOwnerPermit.d.ts +18 -0
- package/dist/server/localDataOwnerPermit.js +58 -0
- package/dist/server/localDatabaseIdentity.d.ts +14 -0
- package/dist/server/localDatabaseIdentity.js +69 -0
- package/dist/server/localRealtimeFileInvalidation.d.ts +1 -0
- package/dist/server/localRealtimeFileInvalidation.js +7 -0
- package/dist/server/localServiceLease.d.ts +62 -0
- package/dist/server/localServiceLease.js +477 -0
- package/dist/server/localServiceOwnershipBootstrap.d.ts +19 -0
- package/dist/server/localServiceOwnershipBootstrap.js +84 -0
- package/dist/server/localServiceSessions.d.ts +87 -0
- package/dist/server/localServiceSessions.js +309 -0
- package/dist/server/localServiceWindowsAcl.d.ts +8 -0
- package/dist/server/localServiceWindowsAcl.js +60 -0
- package/dist/server/localSyncProcessLockBootstrap.d.ts +3 -0
- package/dist/server/localSyncProcessLockBootstrap.js +16 -0
- package/dist/server/localWorkspaceSyncServerComposition.d.ts +59 -0
- package/dist/server/localWorkspaceSyncServerComposition.js +91 -0
- package/dist/server/localWorkspaceSyncServerRuntime.d.ts +119 -0
- package/dist/server/localWorkspaceSyncServerRuntime.js +1163 -0
- package/dist/server/rateLimit.d.ts +1 -0
- package/dist/server/rateLimit.js +16 -0
- package/dist/server/routes/admin.d.ts +2 -4
- package/dist/server/routes/admin.js +199 -337
- package/dist/server/routes/agentRoles.d.ts +13 -0
- package/dist/server/routes/agentRoles.js +273 -0
- package/dist/server/routes/agentSkills.d.ts +16 -0
- package/dist/server/routes/agentSkills.js +291 -0
- package/dist/server/routes/agents.d.ts +49 -0
- package/dist/server/routes/agents.js +1455 -0
- package/dist/server/routes/annotatedAttachments.js +46 -9
- package/dist/server/routes/assetAccess.d.ts +36 -0
- package/dist/server/routes/assetAccess.js +93 -0
- package/dist/server/routes/auth.d.ts +4 -3
- package/dist/server/routes/auth.js +236 -21
- package/dist/server/routes/authSupport.d.ts +3 -1
- package/dist/server/routes/authSupport.js +22 -8
- package/dist/server/routes/documentReviews.d.ts +2 -0
- package/dist/server/routes/documentReviews.js +155 -15
- package/dist/server/routes/documents.d.ts +1 -0
- package/dist/server/routes/documents.js +335 -141
- package/dist/server/routes/durableTaskHttpRouters.d.ts +165 -0
- package/dist/server/routes/durableTaskHttpRouters.js +89 -0
- package/dist/server/routes/localMcpHealth.d.ts +11 -0
- package/dist/server/routes/localMcpHealth.js +29 -0
- package/dist/server/routes/localService.d.ts +13 -0
- package/dist/server/routes/localService.js +444 -0
- package/dist/server/routes/localUpdate.d.ts +11 -0
- package/dist/server/routes/localUpdate.js +154 -0
- package/dist/server/routes/primitives.d.ts +27 -0
- package/dist/server/routes/primitives.js +18 -0
- package/dist/server/routes/resources.d.ts +1 -10
- package/dist/server/routes/resources.js +1 -153
- package/dist/server/routes/shared.d.ts +31 -2
- package/dist/server/routes/shared.js +394 -0
- package/dist/server/routes/sync.d.ts +2 -0
- package/dist/server/routes/sync.js +184 -272
- package/dist/server/routes/syncAuxRoutes.d.ts +3 -1
- package/dist/server/routes/syncAuxRoutes.js +9 -4
- package/dist/server/routes/syncCoordinatorLocalRoutes.d.ts +6 -0
- package/dist/server/routes/syncCoordinatorLocalRoutes.js +867 -0
- package/dist/server/routes/syncPullApplyRoutes.d.ts +29 -1
- package/dist/server/routes/syncPullApplyRoutes.js +520 -17
- package/dist/server/routes/syncPushRoutes.d.ts +33 -4
- package/dist/server/routes/syncPushRoutes.js +251 -62
- package/dist/server/routes/syncRouteTypes.d.ts +1 -1
- package/dist/server/routes/syncSnapshotRoutes.d.ts +15 -7
- package/dist/server/routes/syncSnapshotRoutes.js +95 -17
- package/dist/server/routes/syncV3DiagnosticsRoutes.d.ts +14 -0
- package/dist/server/routes/syncV3DiagnosticsRoutes.js +72 -0
- package/dist/server/routes/syncV3FeedRoutes.d.ts +20 -0
- package/dist/server/routes/syncV3FeedRoutes.js +462 -0
- package/dist/server/routes/syncV3LocalCaptureRoutes.d.ts +37 -0
- package/dist/server/routes/syncV3LocalCaptureRoutes.js +897 -0
- package/dist/server/routes/syncV3LocalDispatchRoutes.d.ts +17 -0
- package/dist/server/routes/syncV3LocalDispatchRoutes.js +280 -0
- package/dist/server/routes/syncV3LocalFeedApplyRoutes.d.ts +17 -0
- package/dist/server/routes/syncV3LocalFeedApplyRoutes.js +493 -0
- package/dist/server/routes/syncV3LocalOwnershipRoutes.d.ts +10 -0
- package/dist/server/routes/syncV3LocalOwnershipRoutes.js +51 -0
- package/dist/server/routes/syncV3LocalRecoveryRoutes.d.ts +12 -0
- package/dist/server/routes/syncV3LocalRecoveryRoutes.js +78 -0
- package/dist/server/routes/syncV3OperationRoutes.d.ts +35 -0
- package/dist/server/routes/syncV3OperationRoutes.js +1136 -0
- package/dist/server/routes/tasks.d.ts +0 -2
- package/dist/server/routes/tasks.js +932 -195
- package/dist/server/routes/workflows.d.ts +26 -0
- package/dist/server/routes/workflows.js +500 -0
- package/dist/server/routes.d.ts +1 -6
- package/dist/server/routes.js +148 -339
- package/dist/server/smtpTransport.d.ts +11 -3
- package/dist/server/smtpTransport.js +9 -2
- package/dist/server/start.js +42 -10
- package/dist/service/localServiceCli.d.ts +33 -0
- package/dist/service/localServiceCli.js +365 -0
- package/dist/service/localServiceClientLifecycle.d.ts +25 -0
- package/dist/service/localServiceClientLifecycle.js +128 -0
- package/dist/service/localServiceOpen.d.ts +17 -0
- package/dist/service/localServiceOpen.js +27 -0
- package/dist/services/agentRoleResolver.d.ts +4 -0
- package/dist/services/agentRoleResolver.js +7 -0
- package/dist/services/aiProfileAvatarGenerationService.d.ts +41 -0
- package/dist/services/aiProfileAvatarGenerationService.js +158 -0
- package/dist/services/avatarImageProvider.d.ts +33 -0
- package/dist/services/avatarImageProvider.js +140 -0
- package/dist/services/bedrockAnthropicMessagesModelGateway.d.ts +24 -0
- package/dist/services/bedrockAnthropicMessagesModelGateway.js +95 -0
- package/dist/services/bedrockMantleModelGateway.d.ts +43 -0
- package/dist/services/bedrockMantleModelGateway.js +81 -0
- package/dist/services/bedrockModelGateway.d.ts +26 -0
- package/dist/services/bedrockModelGateway.js +94 -0
- package/dist/services/modelGateway.d.ts +82 -0
- package/dist/services/modelGateway.js +61 -0
- package/dist/services/taskforceAgentAvatarImageProvider.d.ts +8 -0
- package/dist/services/taskforceAgentAvatarImageProvider.js +24 -0
- package/dist/services/taskforceAgentMcpBridge.d.ts +77 -0
- package/dist/services/taskforceAgentMcpBridge.js +527 -0
- package/dist/shared/agentRoleDefinition.d.ts +34 -0
- package/dist/shared/agentRoleDefinition.js +207 -0
- package/dist/shared/aiProfileAvatarEligibility.d.ts +10 -0
- package/dist/shared/aiProfileAvatarEligibility.js +27 -0
- package/dist/shared/aiProfileColors.d.ts +7 -0
- package/dist/shared/aiProfileColors.js +33 -0
- package/dist/shared/colorPalette.d.ts +3 -0
- package/dist/shared/colorPalette.js +20 -0
- package/dist/shared/commentProvenance.d.ts +4 -0
- package/dist/shared/commentProvenance.js +6 -0
- package/dist/shared/deletedTaskRetention.d.ts +2 -0
- package/dist/shared/deletedTaskRetention.js +7 -0
- package/dist/shared/passwordPolicy.d.ts +2 -1
- package/dist/shared/passwordPolicy.js +9 -0
- package/dist/shared/taskDeepLinks.d.ts +28 -0
- package/dist/shared/taskDeepLinks.js +48 -0
- package/dist/shared/taskRestoreDestination.d.ts +2 -0
- package/dist/shared/taskRestoreDestination.js +5 -0
- package/dist/shared/taskforceAgentDefinition.d.ts +88 -0
- package/dist/shared/taskforceAgentDefinition.js +434 -0
- package/dist/shared/taskforceAgentExecutionSnapshot.d.ts +50 -0
- package/dist/shared/taskforceAgentExecutionSnapshot.js +68 -0
- package/dist/shared/taskforceAgentModels.d.ts +56 -0
- package/dist/shared/taskforceAgentModels.js +314 -0
- package/dist/shared/taskforceAgentRunContext.d.ts +23 -0
- package/dist/shared/taskforceAgentRunContext.js +21 -0
- package/dist/shared/taskforceAgentRuntimeResolution.d.ts +31 -0
- package/dist/shared/taskforceAgentRuntimeResolution.js +72 -0
- package/dist/shared/taskforceAgentSkill.d.ts +33 -0
- package/dist/shared/taskforceAgentSkill.js +149 -0
- package/dist/storage/agentRoleStore.d.ts +91 -0
- package/dist/storage/agentRoleStore.js +385 -0
- package/dist/storage/databaseAdapter.d.ts +1 -0
- package/dist/storage/databaseAdapter.js +7 -1
- package/dist/storage/documentIntegrity.d.ts +12 -3
- package/dist/storage/documentIntegrity.js +105 -27
- package/dist/storage/objectStorageClient.d.ts +10 -4
- package/dist/storage/objectStorageClient.js +73 -43
- package/dist/storage/postgresAdapter.d.ts +2 -1
- package/dist/storage/postgresAdapter.js +38 -6
- package/dist/storage/postgresWorker.js +65 -1
- package/dist/storage/sqliteAdapter.d.ts +1 -1
- package/dist/storage/sqliteAdapter.js +7 -1
- package/dist/storage/sqliteWalHealth.d.ts +71 -0
- package/dist/storage/sqliteWalHealth.js +176 -0
- package/dist/storage/taskDataPath.d.ts +1 -0
- package/dist/storage/taskDataPath.js +20 -0
- package/dist/storage/taskforceAgentConversationStore.d.ts +66 -0
- package/dist/storage/taskforceAgentConversationStore.js +264 -0
- package/dist/storage/taskforceAgentSkillStore.d.ts +93 -0
- package/dist/storage/taskforceAgentSkillStore.js +355 -0
- package/dist/storage/taskforceAgentStore.d.ts +105 -0
- package/dist/storage/taskforceAgentStore.js +549 -0
- package/dist/storage/workflowStore.d.ts +223 -0
- package/dist/storage/workflowStore.js +1032 -0
- package/dist/storage/workspaceAssetStore.d.ts +70 -0
- package/dist/storage/workspaceAssetStore.js +418 -25
- package/dist/sync/aiProfileAvatarSyncPaths.d.ts +14 -0
- package/dist/sync/aiProfileAvatarSyncPaths.js +56 -0
- package/dist/sync/cloudSyncApi.d.ts +329 -0
- package/dist/sync/cloudSyncApi.js +574 -1
- package/dist/sync/collaborationSyncPayload.d.ts +5 -1
- package/dist/sync/collaborationSyncPayload.js +213 -1
- package/dist/sync/collaborationSyncState.d.ts +23 -3
- package/dist/sync/collaborationSyncState.js +92 -3
- package/dist/sync/contentSyncPayload.d.ts +9 -0
- package/dist/sync/contentSyncPayload.js +29 -0
- package/dist/sync/contentSyncState.d.ts +79 -4
- package/dist/sync/contentSyncState.js +1113 -313
- package/dist/sync/coordinator/localSyncBrowserApplyPermitContext.d.ts +39 -0
- package/dist/sync/coordinator/localSyncBrowserApplyPermitContext.js +234 -0
- package/dist/sync/coordinator/localSyncBrowserAuthorityCapability.d.ts +7 -0
- package/dist/sync/coordinator/localSyncBrowserAuthorityCapability.js +10 -0
- package/dist/sync/coordinator/localSyncCommittedApplyPolicy.d.ts +7 -0
- package/dist/sync/coordinator/localSyncCommittedApplyPolicy.js +41 -0
- package/dist/sync/coordinator/localSyncCoordinatorBrowserClient.d.ts +178 -0
- package/dist/sync/coordinator/localSyncCoordinatorBrowserClient.js +131 -0
- package/dist/sync/coordinator/localSyncCoordinatorCommandLifecycle.d.ts +25 -0
- package/dist/sync/coordinator/localSyncCoordinatorCommandLifecycle.js +200 -0
- package/dist/sync/coordinator/localSyncCoordinatorHost.d.ts +84 -0
- package/dist/sync/coordinator/localSyncCoordinatorHost.js +435 -0
- package/dist/sync/coordinator/localSyncCoordinatorRouteServices.d.ts +33 -0
- package/dist/sync/coordinator/localSyncCoordinatorRouteServices.js +1 -0
- package/dist/sync/coordinator/localSyncCoordinatorStore.d.ts +122 -0
- package/dist/sync/coordinator/localSyncCoordinatorStore.js +1039 -0
- package/dist/sync/coordinator/localSyncCoordinatorTypes.d.ts +82 -0
- package/dist/sync/coordinator/localSyncCoordinatorTypes.js +9 -0
- package/dist/sync/coordinator/localSyncDispatchTracker.d.ts +15 -0
- package/dist/sync/coordinator/localSyncDispatchTracker.js +68 -0
- package/dist/sync/coordinator/localSyncExecutionPermitStore.d.ts +200 -0
- package/dist/sync/coordinator/localSyncExecutionPermitStore.js +1388 -0
- package/dist/sync/coordinator/localSyncExecutionPermitTypes.d.ts +52 -0
- package/dist/sync/coordinator/localSyncExecutionPermitTypes.js +8 -0
- package/dist/sync/coordinator/localSyncOwnershipDrainBarrier.d.ts +33 -0
- package/dist/sync/coordinator/localSyncOwnershipDrainBarrier.js +83 -0
- package/dist/sync/coordinator/localSyncPermitTransactionHooks.d.ts +9 -0
- package/dist/sync/coordinator/localSyncPermitTransactionHooks.js +27 -0
- package/dist/sync/coordinator/localSyncProcessLock.d.ts +12 -0
- package/dist/sync/coordinator/localSyncProcessLock.js +212 -0
- package/dist/sync/coordinator/localSyncV3DispatchRecoveryReconciler.d.ts +17 -0
- package/dist/sync/coordinator/localSyncV3DispatchRecoveryReconciler.js +82 -0
- package/dist/sync/coordinator/localWorkspaceSyncRunner.d.ts +134 -0
- package/dist/sync/coordinator/localWorkspaceSyncRunner.js +981 -0
- package/dist/sync/coordinator/localWorkspaceSyncRunnerState.d.ts +189 -0
- package/dist/sync/coordinator/localWorkspaceSyncRunnerState.js +961 -0
- package/dist/sync/coordinator/workspaceSyncCloudCredentialValidator.d.ts +19 -0
- package/dist/sync/coordinator/workspaceSyncCloudCredentialValidator.js +83 -0
- package/dist/sync/coordinator/workspaceSyncCredentialBroker.d.ts +117 -0
- package/dist/sync/coordinator/workspaceSyncCredentialBroker.js +323 -0
- package/dist/sync/coordinator/workspaceSyncLocalAccessBootstrap.d.ts +11 -0
- package/dist/sync/coordinator/workspaceSyncLocalAccessBootstrap.js +51 -0
- package/dist/sync/coordinator/workspaceSyncTransportGateway.d.ts +139 -0
- package/dist/sync/coordinator/workspaceSyncTransportGateway.js +738 -0
- package/dist/sync/engine/localWorkspaceContentManifestService.d.ts +21 -0
- package/dist/sync/engine/localWorkspaceContentManifestService.js +44 -0
- package/dist/sync/engine/workspaceSyncAtomicLocalPublisher.d.ts +36 -0
- package/dist/sync/engine/workspaceSyncAtomicLocalPublisher.js +203 -0
- package/dist/sync/engine/workspaceSyncContentLifecycleAdapter.d.ts +21 -0
- package/dist/sync/engine/workspaceSyncContentLifecycleAdapter.js +13 -0
- package/dist/sync/engine/workspaceSyncContentPullObligationStore.d.ts +65 -0
- package/dist/sync/engine/workspaceSyncContentPullObligationStore.js +160 -0
- package/dist/sync/engine/workspaceSyncContentVersionStore.d.ts +216 -0
- package/dist/sync/engine/workspaceSyncContentVersionStore.js +1068 -0
- package/dist/sync/engine/workspaceSyncEngineBrowserGatewayRemoteServices.d.ts +28 -0
- package/dist/sync/engine/workspaceSyncEngineBrowserGatewayRemoteServices.js +543 -0
- package/dist/sync/engine/workspaceSyncEngineContracts.d.ts +78 -0
- package/dist/sync/engine/workspaceSyncEngineContracts.js +1 -0
- package/dist/sync/engine/workspaceSyncEngineControlPlane.d.ts +37 -0
- package/dist/sync/engine/workspaceSyncEngineControlPlane.js +79 -0
- package/dist/sync/engine/workspaceSyncEngineIdentity.d.ts +1 -0
- package/dist/sync/engine/workspaceSyncEngineIdentity.js +4 -0
- package/dist/sync/engine/workspaceSyncEngineLifecyclePolicy.d.ts +68 -0
- package/dist/sync/engine/workspaceSyncEngineLifecyclePolicy.js +180 -0
- package/dist/sync/engine/workspaceSyncEngineLocalApply.d.ts +72 -0
- package/dist/sync/engine/workspaceSyncEngineLocalApply.js +132 -0
- package/dist/sync/engine/workspaceSyncEngineLocalServices.d.ts +70 -0
- package/dist/sync/engine/workspaceSyncEngineLocalServices.js +25 -0
- package/dist/sync/engine/workspaceSyncEngineParity.d.ts +8 -0
- package/dist/sync/engine/workspaceSyncEngineParity.js +7 -0
- package/dist/sync/engine/workspaceSyncEnginePullPolicy.d.ts +32 -0
- package/dist/sync/engine/workspaceSyncEnginePullPolicy.js +27 -0
- package/dist/sync/engine/workspaceSyncEnginePushCompletion.d.ts +20 -0
- package/dist/sync/engine/workspaceSyncEnginePushCompletion.js +87 -0
- package/dist/sync/engine/workspaceSyncEngineRecovery.d.ts +56 -0
- package/dist/sync/engine/workspaceSyncEngineRecovery.js +288 -0
- package/dist/sync/engine/workspaceSyncEngineRemoteServices.d.ts +104 -0
- package/dist/sync/engine/workspaceSyncEngineRemoteServices.js +21 -0
- package/dist/sync/engine/workspaceSyncEngineRuntime.d.ts +61 -0
- package/dist/sync/engine/workspaceSyncEngineRuntime.js +59 -0
- package/dist/sync/engine/workspaceSyncEngineServerApplyBoundary.d.ts +28 -0
- package/dist/sync/engine/workspaceSyncEngineServerApplyBoundary.js +86 -0
- package/dist/sync/engine/workspaceSyncEngineServerLocalServices.d.ts +73 -0
- package/dist/sync/engine/workspaceSyncEngineServerLocalServices.js +452 -0
- package/dist/sync/engine/workspaceSyncEngineServerRemoteServices.d.ts +23 -0
- package/dist/sync/engine/workspaceSyncEngineServerRemoteServices.js +451 -0
- package/dist/sync/engine/workspaceSyncEngineServerRunnerOperations.d.ts +125 -0
- package/dist/sync/engine/workspaceSyncEngineServerRunnerOperations.js +1124 -0
- package/dist/sync/engine/workspaceSyncEngineServerSnapshotReader.d.ts +63 -0
- package/dist/sync/engine/workspaceSyncEngineServerSnapshotReader.js +276 -0
- package/dist/sync/engine/workspaceSyncEngineTransferCompletion.d.ts +20 -0
- package/dist/sync/engine/workspaceSyncEngineTransferCompletion.js +37 -0
- package/dist/sync/engine/workspaceSyncEngineTransferTypes.d.ts +7 -0
- package/dist/sync/engine/workspaceSyncEngineTransferTypes.js +1 -0
- package/dist/sync/engine/workspaceSyncEngineTransfers.d.ts +240 -0
- package/dist/sync/engine/workspaceSyncEngineTransfers.js +1184 -0
- package/dist/sync/engine/workspaceSyncEngineV3LocalFeedApply.d.ts +39 -0
- package/dist/sync/engine/workspaceSyncEngineV3LocalFeedApply.js +39 -0
- package/dist/sync/engine/workspaceSyncImmutableContentGcRunner.d.ts +25 -0
- package/dist/sync/engine/workspaceSyncImmutableContentGcRunner.js +83 -0
- package/dist/sync/engine/workspaceSyncImmutableContentProvider.d.ts +71 -0
- package/dist/sync/engine/workspaceSyncImmutableContentProvider.js +209 -0
- package/dist/sync/engine/workspaceSyncImmutableContentStager.d.ts +32 -0
- package/dist/sync/engine/workspaceSyncImmutableContentStager.js +202 -0
- package/dist/sync/engine/workspaceSyncPublishedContentResolver.d.ts +43 -0
- package/dist/sync/engine/workspaceSyncPublishedContentResolver.js +142 -0
- package/dist/sync/engine/workspaceSyncServerContentRuntime.d.ts +26 -0
- package/dist/sync/engine/workspaceSyncServerContentRuntime.js +41 -0
- package/dist/sync/engine/workspaceSyncServerDataServices.d.ts +44 -0
- package/dist/sync/engine/workspaceSyncServerDataServices.js +143 -0
- package/dist/sync/engine/workspaceSyncTransferEvidence.d.ts +39 -0
- package/dist/sync/engine/workspaceSyncTransferEvidence.js +45 -0
- package/dist/sync/engine/workspaceSyncV2ChangeDispatcher.d.ts +44 -0
- package/dist/sync/engine/workspaceSyncV2ChangeDispatcher.js +990 -0
- package/dist/sync/engine/workspaceSyncV2PreparedContent.d.ts +82 -0
- package/dist/sync/engine/workspaceSyncV2PreparedContent.js +219 -0
- package/dist/sync/planningCanonicalFields.d.ts +41 -0
- package/dist/sync/planningCanonicalFields.js +211 -0
- package/dist/sync/planningSyncPayload.d.ts +5 -1
- package/dist/sync/planningSyncPayload.js +88 -4
- package/dist/sync/syncApplyHandlers.d.ts +98 -8
- package/dist/sync/syncApplyHandlers.js +816 -78
- package/dist/sync/syncResourceAdapters.d.ts +10 -0
- package/dist/sync/syncResourceAdapters.js +21 -1
- package/dist/sync/syncService.d.ts +57 -1
- package/dist/sync/syncService.js +1085 -138
- package/dist/sync/taskNestedContent.d.ts +2 -0
- package/dist/sync/taskNestedContent.js +8 -0
- package/dist/sync/taskSyncChangeKey.js +0 -1
- package/dist/sync/taskSyncPayload.d.ts +0 -1
- package/dist/sync/taskSyncPayload.js +14 -3
- package/dist/sync/v3/canonicalWorkspaceSyncJson.d.ts +2 -0
- package/dist/sync/v3/canonicalWorkspaceSyncJson.js +26 -0
- package/dist/sync/v3/combinedFeedCapability.d.ts +21 -0
- package/dist/sync/v3/combinedFeedCapability.js +80 -0
- package/dist/sync/v3/combinedFeedPrerequisites.d.ts +18 -0
- package/dist/sync/v3/combinedFeedPrerequisites.js +184 -0
- package/dist/sync/v3/durableInitiativeMutationRouter.d.ts +61 -0
- package/dist/sync/v3/durableInitiativeMutationRouter.js +287 -0
- package/dist/sync/v3/durableOperationReplay.d.ts +36 -0
- package/dist/sync/v3/durableOperationReplay.js +103 -0
- package/dist/sync/v3/durableTaskAttachmentLinksMutationRouter.d.ts +49 -0
- package/dist/sync/v3/durableTaskAttachmentLinksMutationRouter.js +198 -0
- package/dist/sync/v3/durableTaskChecklistMutationRouter.d.ts +47 -0
- package/dist/sync/v3/durableTaskChecklistMutationRouter.js +182 -0
- package/dist/sync/v3/durableTaskCommentMutationRouter.d.ts +47 -0
- package/dist/sync/v3/durableTaskCommentMutationRouter.js +191 -0
- package/dist/sync/v3/durableTaskHttpBulkMutationRouter.d.ts +60 -0
- package/dist/sync/v3/durableTaskHttpBulkMutationRouter.js +320 -0
- package/dist/sync/v3/durableTaskHttpRootMutationRouter.d.ts +40 -0
- package/dist/sync/v3/durableTaskHttpRootMutationRouter.js +518 -0
- package/dist/sync/v3/durableTaxonomyMutationRouter.d.ts +63 -0
- package/dist/sync/v3/durableTaxonomyMutationRouter.js +289 -0
- package/dist/sync/v3/durableWorkflowRuntimeMutationRouter.d.ts +77 -0
- package/dist/sync/v3/durableWorkflowRuntimeMutationRouter.js +361 -0
- package/dist/sync/v3/durableWorkstreamMutationRouter.d.ts +61 -0
- package/dist/sync/v3/durableWorkstreamMutationRouter.js +287 -0
- package/dist/sync/v3/durableWorkstreamTaskOrderMutationRouter.d.ts +42 -0
- package/dist/sync/v3/durableWorkstreamTaskOrderMutationRouter.js +122 -0
- package/dist/sync/v3/entityEventLegacyAdoptionContract.d.ts +6 -0
- package/dist/sync/v3/entityEventLegacyAdoptionContract.js +6 -0
- package/dist/sync/v3/entityEventLegacyAdoptionService.d.ts +62 -0
- package/dist/sync/v3/entityEventLegacyAdoptionService.js +180 -0
- package/dist/sync/v3/initiativeActivityAuthoritativeRevision.d.ts +11 -0
- package/dist/sync/v3/initiativeActivityAuthoritativeRevision.js +23 -0
- package/dist/sync/v3/initiativeActivityIdentity.d.ts +8 -0
- package/dist/sync/v3/initiativeActivityIdentity.js +14 -0
- package/dist/sync/v3/initiativeCoexistence.d.ts +26 -0
- package/dist/sync/v3/initiativeCoexistence.js +148 -0
- package/dist/sync/v3/initiativeFeedActivationCapability.d.ts +6 -0
- package/dist/sync/v3/initiativeFeedActivationCapability.js +16 -0
- package/dist/sync/v3/initiativeMutationPayload.d.ts +26 -0
- package/dist/sync/v3/initiativeMutationPayload.js +144 -0
- package/dist/sync/v3/initiativeMutationService.d.ts +62 -0
- package/dist/sync/v3/initiativeMutationService.js +206 -0
- package/dist/sync/v3/localEntityEventLegacyAdoption.d.ts +31 -0
- package/dist/sync/v3/localEntityEventLegacyAdoption.js +607 -0
- package/dist/sync/v3/localInitiativeOutboxHandler.d.ts +8 -0
- package/dist/sync/v3/localInitiativeOutboxHandler.js +88 -0
- package/dist/sync/v3/localInitiativeOutboxService.d.ts +50 -0
- package/dist/sync/v3/localInitiativeOutboxService.js +495 -0
- package/dist/sync/v3/localOperationIdentityStore.d.ts +81 -0
- package/dist/sync/v3/localOperationIdentityStore.js +388 -0
- package/dist/sync/v3/localOutboxDispatchCapability.d.ts +7 -0
- package/dist/sync/v3/localOutboxDispatchCapability.js +13 -0
- package/dist/sync/v3/localOutboxDispatchRuntime.d.ts +16 -0
- package/dist/sync/v3/localOutboxDispatchRuntime.js +269 -0
- package/dist/sync/v3/localOutboxDispatcher.d.ts +53 -0
- package/dist/sync/v3/localOutboxDispatcher.js +362 -0
- package/dist/sync/v3/localOutboxDrainClient.d.ts +50 -0
- package/dist/sync/v3/localOutboxDrainClient.js +250 -0
- package/dist/sync/v3/localOutboxOperationHandler.d.ts +31 -0
- package/dist/sync/v3/localOutboxOperationHandler.js +10 -0
- package/dist/sync/v3/localOutboxRecoveryClient.d.ts +14 -0
- package/dist/sync/v3/localOutboxRecoveryClient.js +45 -0
- package/dist/sync/v3/localOutboxRecoveryPreparationService.d.ts +12 -0
- package/dist/sync/v3/localOutboxRecoveryPreparationService.js +151 -0
- package/dist/sync/v3/localSyncIdentityStore.d.ts +9 -0
- package/dist/sync/v3/localSyncIdentityStore.js +43 -0
- package/dist/sync/v3/localTaskAttachmentLinksOutboxHandler.d.ts +10 -0
- package/dist/sync/v3/localTaskAttachmentLinksOutboxHandler.js +70 -0
- package/dist/sync/v3/localTaskAttachmentLinksOutboxService.d.ts +45 -0
- package/dist/sync/v3/localTaskAttachmentLinksOutboxService.js +291 -0
- package/dist/sync/v3/localTaskChecklistOutboxHandler.d.ts +10 -0
- package/dist/sync/v3/localTaskChecklistOutboxHandler.js +54 -0
- package/dist/sync/v3/localTaskChecklistOutboxService.d.ts +47 -0
- package/dist/sync/v3/localTaskChecklistOutboxService.js +221 -0
- package/dist/sync/v3/localTaskCommentOutboxHandler.d.ts +10 -0
- package/dist/sync/v3/localTaskCommentOutboxHandler.js +94 -0
- package/dist/sync/v3/localTaskCommentOutboxService.d.ts +75 -0
- package/dist/sync/v3/localTaskCommentOutboxService.js +391 -0
- package/dist/sync/v3/localTaskCreateClient.d.ts +27 -0
- package/dist/sync/v3/localTaskCreateClient.js +209 -0
- package/dist/sync/v3/localTaskCreateOutboxHandler.d.ts +8 -0
- package/dist/sync/v3/localTaskCreateOutboxHandler.js +147 -0
- package/dist/sync/v3/localTaskCreateOutboxService.d.ts +77 -0
- package/dist/sync/v3/localTaskCreateOutboxService.js +397 -0
- package/dist/sync/v3/localTaskDeleteClient.d.ts +10 -0
- package/dist/sync/v3/localTaskDeleteClient.js +23 -0
- package/dist/sync/v3/localTaskDeleteOutboxHandler.d.ts +8 -0
- package/dist/sync/v3/localTaskDeleteOutboxHandler.js +54 -0
- package/dist/sync/v3/localTaskDeleteOutboxService.d.ts +38 -0
- package/dist/sync/v3/localTaskDeleteOutboxService.js +235 -0
- package/dist/sync/v3/localTaskLegacyRootAdoption.d.ts +28 -0
- package/dist/sync/v3/localTaskLegacyRootAdoption.js +219 -0
- package/dist/sync/v3/localTaskLifecycleClient.d.ts +49 -0
- package/dist/sync/v3/localTaskLifecycleClient.js +57 -0
- package/dist/sync/v3/localTaskLifecycleOutboxHandler.d.ts +8 -0
- package/dist/sync/v3/localTaskLifecycleOutboxHandler.js +94 -0
- package/dist/sync/v3/localTaskLifecycleOutboxService.d.ts +60 -0
- package/dist/sync/v3/localTaskLifecycleOutboxService.js +304 -0
- package/dist/sync/v3/localTaskMetadataClient.d.ts +13 -0
- package/dist/sync/v3/localTaskMetadataClient.js +30 -0
- package/dist/sync/v3/localTaskMetadataOutboxHandler.d.ts +8 -0
- package/dist/sync/v3/localTaskMetadataOutboxHandler.js +70 -0
- package/dist/sync/v3/localTaskMetadataOutboxService.d.ts +48 -0
- package/dist/sync/v3/localTaskMetadataOutboxService.js +229 -0
- package/dist/sync/v3/localTaskOperationClient.d.ts +72 -0
- package/dist/sync/v3/localTaskOperationClient.js +195 -0
- package/dist/sync/v3/localTaskRelationshipOutboxHandler.d.ts +8 -0
- package/dist/sync/v3/localTaskRelationshipOutboxHandler.js +114 -0
- package/dist/sync/v3/localTaskRelationshipOutboxService.d.ts +45 -0
- package/dist/sync/v3/localTaskRelationshipOutboxService.js +192 -0
- package/dist/sync/v3/localTaskRestoreClient.d.ts +13 -0
- package/dist/sync/v3/localTaskRestoreClient.js +32 -0
- package/dist/sync/v3/localTaskRestoreOutboxHandler.d.ts +8 -0
- package/dist/sync/v3/localTaskRestoreOutboxHandler.js +41 -0
- package/dist/sync/v3/localTaskRestoreOutboxService.d.ts +56 -0
- package/dist/sync/v3/localTaskRestoreOutboxService.js +323 -0
- package/dist/sync/v3/localTaskStatusClient.d.ts +17 -0
- package/dist/sync/v3/localTaskStatusClient.js +35 -0
- package/dist/sync/v3/localTaskStatusOutboxHandler.d.ts +8 -0
- package/dist/sync/v3/localTaskStatusOutboxHandler.js +75 -0
- package/dist/sync/v3/localTaskStatusOutboxService.d.ts +53 -0
- package/dist/sync/v3/localTaskStatusOutboxService.js +422 -0
- package/dist/sync/v3/localTaxonomyCompositeOutboxService.d.ts +34 -0
- package/dist/sync/v3/localTaxonomyCompositeOutboxService.js +290 -0
- package/dist/sync/v3/localTaxonomyOutboxHandler.d.ts +9 -0
- package/dist/sync/v3/localTaxonomyOutboxHandler.js +106 -0
- package/dist/sync/v3/localTaxonomyOutboxService.d.ts +30 -0
- package/dist/sync/v3/localTaxonomyOutboxService.js +181 -0
- package/dist/sync/v3/localWorkflowRuntimeOutboxHandler.d.ts +8 -0
- package/dist/sync/v3/localWorkflowRuntimeOutboxHandler.js +113 -0
- package/dist/sync/v3/localWorkflowRuntimeOutboxService.d.ts +37 -0
- package/dist/sync/v3/localWorkflowRuntimeOutboxService.js +330 -0
- package/dist/sync/v3/localWorkspaceSyncServerOutboxDispatcher.d.ts +63 -0
- package/dist/sync/v3/localWorkspaceSyncServerOutboxDispatcher.js +264 -0
- package/dist/sync/v3/localWorkstreamOutboxHandler.d.ts +8 -0
- package/dist/sync/v3/localWorkstreamOutboxHandler.js +102 -0
- package/dist/sync/v3/localWorkstreamOutboxService.d.ts +52 -0
- package/dist/sync/v3/localWorkstreamOutboxService.js +579 -0
- package/dist/sync/v3/localWorkstreamTaskOrderOutboxHandler.d.ts +10 -0
- package/dist/sync/v3/localWorkstreamTaskOrderOutboxHandler.js +57 -0
- package/dist/sync/v3/localWorkstreamTaskOrderOutboxService.d.ts +30 -0
- package/dist/sync/v3/localWorkstreamTaskOrderOutboxService.js +128 -0
- package/dist/sync/v3/planningActivation.d.ts +13 -0
- package/dist/sync/v3/planningActivation.js +33 -0
- package/dist/sync/v3/planningAttachmentActivityValidation.d.ts +9 -0
- package/dist/sync/v3/planningAttachmentActivityValidation.js +87 -0
- package/dist/sync/v3/programScaffoldService.d.ts +143 -0
- package/dist/sync/v3/programScaffoldService.js +478 -0
- package/dist/sync/v3/syncDurabilityStore.d.ts +773 -0
- package/dist/sync/v3/syncDurabilityStore.js +4635 -0
- package/dist/sync/v3/taskActivityAuthoritativeRevision.d.ts +16 -0
- package/dist/sync/v3/taskActivityAuthoritativeRevision.js +67 -0
- package/dist/sync/v3/taskActivityJournal.d.ts +20 -0
- package/dist/sync/v3/taskActivityJournal.js +195 -0
- package/dist/sync/v3/taskAttachmentLinksActivityIdentity.d.ts +6 -0
- package/dist/sync/v3/taskAttachmentLinksActivityIdentity.js +14 -0
- package/dist/sync/v3/taskAttachmentLinksMutationService.d.ts +111 -0
- package/dist/sync/v3/taskAttachmentLinksMutationService.js +202 -0
- package/dist/sync/v3/taskChecklistActivityIdentity.d.ts +6 -0
- package/dist/sync/v3/taskChecklistActivityIdentity.js +14 -0
- package/dist/sync/v3/taskChecklistMutationService.d.ts +92 -0
- package/dist/sync/v3/taskChecklistMutationService.js +156 -0
- package/dist/sync/v3/taskCommentActivityIdentity.d.ts +7 -0
- package/dist/sync/v3/taskCommentActivityIdentity.js +15 -0
- package/dist/sync/v3/taskCommentMutationService.d.ts +150 -0
- package/dist/sync/v3/taskCommentMutationService.js +392 -0
- package/dist/sync/v3/taskCommentReconcileProvenance.d.ts +58 -0
- package/dist/sync/v3/taskCommentReconcileProvenance.js +170 -0
- package/dist/sync/v3/taskCreateActivation.d.ts +19 -0
- package/dist/sync/v3/taskCreateActivation.js +84 -0
- package/dist/sync/v3/taskCreateActivityIdentity.d.ts +7 -0
- package/dist/sync/v3/taskCreateActivityIdentity.js +18 -0
- package/dist/sync/v3/taskCreateMutationService.d.ts +103 -0
- package/dist/sync/v3/taskCreateMutationService.js +283 -0
- package/dist/sync/v3/taskDeleteActivation.d.ts +7 -0
- package/dist/sync/v3/taskDeleteActivation.js +14 -0
- package/dist/sync/v3/taskDeleteMutationService.d.ts +35 -0
- package/dist/sync/v3/taskDeleteMutationService.js +133 -0
- package/dist/sync/v3/taskLegacyRootAdoptionService.d.ts +78 -0
- package/dist/sync/v3/taskLegacyRootAdoptionService.js +175 -0
- package/dist/sync/v3/taskLifecycleActivityIdentity.d.ts +9 -0
- package/dist/sync/v3/taskLifecycleActivityIdentity.js +18 -0
- package/dist/sync/v3/taskLifecycleMutationPayload.d.ts +5 -0
- package/dist/sync/v3/taskLifecycleMutationPayload.js +28 -0
- package/dist/sync/v3/taskLifecycleMutationService.d.ts +66 -0
- package/dist/sync/v3/taskLifecycleMutationService.js +92 -0
- package/dist/sync/v3/taskMetadataActivation.d.ts +12 -0
- package/dist/sync/v3/taskMetadataActivation.js +38 -0
- package/dist/sync/v3/taskMetadataActivityIdentity.d.ts +7 -0
- package/dist/sync/v3/taskMetadataActivityIdentity.js +18 -0
- package/dist/sync/v3/taskMetadataCoexistence.d.ts +37 -0
- package/dist/sync/v3/taskMetadataCoexistence.js +134 -0
- package/dist/sync/v3/taskMetadataMutationService.d.ts +71 -0
- package/dist/sync/v3/taskMetadataMutationService.js +199 -0
- package/dist/sync/v3/taskRelationshipLegacyAdoptionService.d.ts +48 -0
- package/dist/sync/v3/taskRelationshipLegacyAdoptionService.js +164 -0
- package/dist/sync/v3/taskRelationshipMutationService.d.ts +50 -0
- package/dist/sync/v3/taskRelationshipMutationService.js +148 -0
- package/dist/sync/v3/taskRestoreMutationService.d.ts +90 -0
- package/dist/sync/v3/taskRestoreMutationService.js +179 -0
- package/dist/sync/v3/taskStatusActivation.d.ts +7 -0
- package/dist/sync/v3/taskStatusActivation.js +15 -0
- package/dist/sync/v3/taskStatusMutationService.d.ts +76 -0
- package/dist/sync/v3/taskStatusMutationService.js +308 -0
- package/dist/sync/v3/taskWorkflowMutationPayload.d.ts +4 -0
- package/dist/sync/v3/taskWorkflowMutationPayload.js +22 -0
- package/dist/sync/v3/taskWorkflowMutationService.d.ts +64 -0
- package/dist/sync/v3/taskWorkflowMutationService.js +102 -0
- package/dist/sync/v3/taxonomyCoexistence.d.ts +10 -0
- package/dist/sync/v3/taxonomyCoexistence.js +19 -0
- package/dist/sync/v3/taxonomyCompositeMutationService.d.ts +110 -0
- package/dist/sync/v3/taxonomyCompositeMutationService.js +304 -0
- package/dist/sync/v3/taxonomyMutationService.d.ts +57 -0
- package/dist/sync/v3/taxonomyMutationService.js +106 -0
- package/dist/sync/v3/taxonomyStateMutation.d.ts +22 -0
- package/dist/sync/v3/taxonomyStateMutation.js +49 -0
- package/dist/sync/v3/taxonomySyncPayload.d.ts +9 -0
- package/dist/sync/v3/taxonomySyncPayload.js +199 -0
- package/dist/sync/v3/workflowAssignmentSync.d.ts +22 -0
- package/dist/sync/v3/workflowAssignmentSync.js +213 -0
- package/dist/sync/v3/workflowRuntimeMutationService.d.ts +89 -0
- package/dist/sync/v3/workflowRuntimeMutationService.js +359 -0
- package/dist/sync/v3/workflowRuntimeOperationIdentity.d.ts +13 -0
- package/dist/sync/v3/workflowRuntimeOperationIdentity.js +35 -0
- package/dist/sync/v3/workflowRuntimeSync.d.ts +141 -0
- package/dist/sync/v3/workflowRuntimeSync.js +485 -0
- package/dist/sync/v3/workspaceSyncJournalReader.d.ts +43 -0
- package/dist/sync/v3/workspaceSyncJournalReader.js +45 -0
- package/dist/sync/v3/workspaceSyncLocalOwnershipSnapshot.d.ts +28 -0
- package/dist/sync/v3/workspaceSyncLocalOwnershipSnapshot.js +81 -0
- package/dist/sync/v3/workspaceSyncPayloadFingerprint.d.ts +1 -0
- package/dist/sync/v3/workspaceSyncPayloadFingerprint.js +5 -0
- package/dist/sync/v3/workspaceSyncV2ProjectionExclusions.d.ts +16 -0
- package/dist/sync/v3/workspaceSyncV2ProjectionExclusions.js +161 -0
- package/dist/sync/v3/workspaceSyncV3AttachmentApplyObligationStore.d.ts +83 -0
- package/dist/sync/v3/workspaceSyncV3AttachmentApplyObligationStore.js +161 -0
- package/dist/sync/v3/workspaceSyncV3AttachmentAssetHydration.d.ts +16 -0
- package/dist/sync/v3/workspaceSyncV3AttachmentAssetHydration.js +90 -0
- package/dist/sync/v3/workspaceSyncV3CloudOperationHandler.d.ts +65 -0
- package/dist/sync/v3/workspaceSyncV3CloudOperationHandler.js +356 -0
- package/dist/sync/v3/workspaceSyncV3CombinedCoverage.d.ts +51 -0
- package/dist/sync/v3/workspaceSyncV3CombinedCoverage.js +171 -0
- package/dist/sync/v3/workspaceSyncV3CombinedFeedOrchestrator.d.ts +43 -0
- package/dist/sync/v3/workspaceSyncV3CombinedFeedOrchestrator.js +535 -0
- package/dist/sync/v3/workspaceSyncV3CombinedLocalApply.d.ts +50 -0
- package/dist/sync/v3/workspaceSyncV3CombinedLocalApply.js +1149 -0
- package/dist/sync/v3/workspaceSyncV3CombinedProjectionState.d.ts +96 -0
- package/dist/sync/v3/workspaceSyncV3CombinedProjectionState.js +672 -0
- package/dist/sync/v3/workspaceSyncV3CombinedRepairBaseline.d.ts +42 -0
- package/dist/sync/v3/workspaceSyncV3CombinedRepairBaseline.js +598 -0
- package/dist/sync/v3/workspaceSyncV3CombinedRepairMaterialization.d.ts +65 -0
- package/dist/sync/v3/workspaceSyncV3CombinedRepairMaterialization.js +505 -0
- package/dist/sync/v3/workspaceSyncV3CombinedRepairSnapshot.d.ts +78 -0
- package/dist/sync/v3/workspaceSyncV3CombinedRepairSnapshot.js +511 -0
- package/dist/sync/v3/workspaceSyncV3CombinedWireContract.d.ts +45 -0
- package/dist/sync/v3/workspaceSyncV3CombinedWireContract.js +125 -0
- package/dist/sync/v3/workspaceSyncV3CoverageRegistry.d.ts +13 -0
- package/dist/sync/v3/workspaceSyncV3CoverageRegistry.js +34 -0
- package/dist/sync/v3/workspaceSyncV3CursorEncoding.d.ts +1 -0
- package/dist/sync/v3/workspaceSyncV3CursorEncoding.js +6 -0
- package/dist/sync/v3/workspaceSyncV3DomainAdmission.d.ts +43 -0
- package/dist/sync/v3/workspaceSyncV3DomainAdmission.js +118 -0
- package/dist/sync/v3/workspaceSyncV3Feed.d.ts +95 -0
- package/dist/sync/v3/workspaceSyncV3Feed.js +243 -0
- package/dist/sync/v3/workspaceSyncV3FeedApply.d.ts +13 -0
- package/dist/sync/v3/workspaceSyncV3FeedApply.js +67 -0
- package/dist/sync/v3/workspaceSyncV3FeedClientContract.d.ts +3 -0
- package/dist/sync/v3/workspaceSyncV3FeedClientContract.js +46 -0
- package/dist/sync/v3/workspaceSyncV3FeedCursorKeys.d.ts +10 -0
- package/dist/sync/v3/workspaceSyncV3FeedCursorKeys.js +58 -0
- package/dist/sync/v3/workspaceSyncV3FeedOrchestrator.d.ts +31 -0
- package/dist/sync/v3/workspaceSyncV3FeedOrchestrator.js +228 -0
- package/dist/sync/v3/workspaceSyncV3FeedProfile.d.ts +32 -0
- package/dist/sync/v3/workspaceSyncV3FeedProfile.js +21 -0
- package/dist/sync/v3/workspaceSyncV3InitiativeLocalApply.d.ts +36 -0
- package/dist/sync/v3/workspaceSyncV3InitiativeLocalApply.js +163 -0
- package/dist/sync/v3/workspaceSyncV3InitiativeRepair.d.ts +33 -0
- package/dist/sync/v3/workspaceSyncV3InitiativeRepair.js +118 -0
- package/dist/sync/v3/workspaceSyncV3LegacyBoundaryAttestation.d.ts +10 -0
- package/dist/sync/v3/workspaceSyncV3LegacyBoundaryAttestation.js +45 -0
- package/dist/sync/v3/workspaceSyncV3LocalOutboxStatus.d.ts +27 -0
- package/dist/sync/v3/workspaceSyncV3LocalOutboxStatus.js +83 -0
- package/dist/sync/v3/workspaceSyncV3NestedCoverage.d.ts +10 -0
- package/dist/sync/v3/workspaceSyncV3NestedCoverage.js +40 -0
- package/dist/sync/v3/workspaceSyncV3NestedTaskApply.d.ts +83 -0
- package/dist/sync/v3/workspaceSyncV3NestedTaskApply.js +325 -0
- package/dist/sync/v3/workspaceSyncV3NestedTaskCodecs.d.ts +59 -0
- package/dist/sync/v3/workspaceSyncV3NestedTaskCodecs.js +302 -0
- package/dist/sync/v3/workspaceSyncV3NestedTaskProjection.d.ts +47 -0
- package/dist/sync/v3/workspaceSyncV3NestedTaskProjection.js +329 -0
- package/dist/sync/v3/workspaceSyncV3NestedTaskRepairSnapshot.d.ts +19 -0
- package/dist/sync/v3/workspaceSyncV3NestedTaskRepairSnapshot.js +41 -0
- package/dist/sync/v3/workspaceSyncV3NestedWireContract.d.ts +6 -0
- package/dist/sync/v3/workspaceSyncV3NestedWireContract.js +16 -0
- package/dist/sync/v3/workspaceSyncV3OperationProjection.d.ts +8 -0
- package/dist/sync/v3/workspaceSyncV3OperationProjection.js +52 -0
- package/dist/sync/v3/workspaceSyncV3OperationProtocol.d.ts +229 -0
- package/dist/sync/v3/workspaceSyncV3OperationProtocol.js +1 -0
- package/dist/sync/v3/workspaceSyncV3OperatorDiagnostics.d.ts +165 -0
- package/dist/sync/v3/workspaceSyncV3OperatorDiagnostics.js +414 -0
- package/dist/sync/v3/workspaceSyncV3OriginActor.d.ts +36 -0
- package/dist/sync/v3/workspaceSyncV3OriginActor.js +61 -0
- package/dist/sync/v3/workspaceSyncV3OriginAssertion.d.ts +46 -0
- package/dist/sync/v3/workspaceSyncV3OriginAssertion.js +121 -0
- package/dist/sync/v3/workspaceSyncV3OriginAssertionHeader.d.ts +1 -0
- package/dist/sync/v3/workspaceSyncV3OriginAssertionHeader.js +1 -0
- package/dist/sync/v3/workspaceSyncV3PlanningOrderCoverage.d.ts +10 -0
- package/dist/sync/v3/workspaceSyncV3PlanningOrderCoverage.js +34 -0
- package/dist/sync/v3/workspaceSyncV3PlanningOrderWireContract.d.ts +6 -0
- package/dist/sync/v3/workspaceSyncV3PlanningOrderWireContract.js +10 -0
- package/dist/sync/v3/workspaceSyncV3ProjectionState.d.ts +105 -0
- package/dist/sync/v3/workspaceSyncV3ProjectionState.js +467 -0
- package/dist/sync/v3/workspaceSyncV3TaskCommentAudit.d.ts +56 -0
- package/dist/sync/v3/workspaceSyncV3TaskCommentAudit.js +250 -0
- package/dist/sync/v3/workspaceSyncV3TaskRelationshipProjection.d.ts +30 -0
- package/dist/sync/v3/workspaceSyncV3TaskRelationshipProjection.js +142 -0
- package/dist/sync/v3/workspaceSyncV3TaskRootProjection.d.ts +40 -0
- package/dist/sync/v3/workspaceSyncV3TaskRootProjection.js +246 -0
- package/dist/sync/v3/workspaceSyncV3TaxonomyFeedProjection.d.ts +39 -0
- package/dist/sync/v3/workspaceSyncV3TaxonomyFeedProjection.js +185 -0
- package/dist/sync/v3/workspaceSyncV3WorkflowCoverage.d.ts +10 -0
- package/dist/sync/v3/workspaceSyncV3WorkflowCoverage.js +36 -0
- package/dist/sync/v3/workspaceSyncV3WorkflowRuntimeApply.d.ts +17 -0
- package/dist/sync/v3/workspaceSyncV3WorkflowRuntimeApply.js +143 -0
- package/dist/sync/v3/workspaceSyncV3WorkflowRuntimeProjection.d.ts +9 -0
- package/dist/sync/v3/workspaceSyncV3WorkflowRuntimeProjection.js +195 -0
- package/dist/sync/v3/workspaceSyncV3WorkflowWireContract.d.ts +11 -0
- package/dist/sync/v3/workspaceSyncV3WorkflowWireContract.js +12 -0
- package/dist/sync/v3/workspaceSyncV3WorkstreamProjection.d.ts +4 -0
- package/dist/sync/v3/workspaceSyncV3WorkstreamProjection.js +98 -0
- package/dist/sync/v3/workspaceSyncV3WorkstreamTaskOrderProjection.d.ts +9 -0
- package/dist/sync/v3/workspaceSyncV3WorkstreamTaskOrderProjection.js +72 -0
- package/dist/sync/v3/workstreamActivityAuthoritativeRevision.d.ts +11 -0
- package/dist/sync/v3/workstreamActivityAuthoritativeRevision.js +23 -0
- package/dist/sync/v3/workstreamActivityIdentity.d.ts +8 -0
- package/dist/sync/v3/workstreamActivityIdentity.js +14 -0
- package/dist/sync/v3/workstreamCoexistence.d.ts +19 -0
- package/dist/sync/v3/workstreamCoexistence.js +64 -0
- package/dist/sync/v3/workstreamMutationPayload.d.ts +27 -0
- package/dist/sync/v3/workstreamMutationPayload.js +147 -0
- package/dist/sync/v3/workstreamMutationService.d.ts +72 -0
- package/dist/sync/v3/workstreamMutationService.js +256 -0
- package/dist/sync/v3/workstreamTaskOrderMutationService.d.ts +55 -0
- package/dist/sync/v3/workstreamTaskOrderMutationService.js +110 -0
- package/dist/sync/v3/workstreamTaskOrderSync.d.ts +14 -0
- package/dist/sync/v3/workstreamTaskOrderSync.js +25 -0
- package/dist/sync/workspaceContentManifest.d.ts +86 -0
- package/dist/sync/workspaceContentManifest.js +123 -0
- package/dist/sync/workspacePullFeed.d.ts +186 -2
- package/dist/sync/workspacePullFeed.js +513 -136
- package/dist/sync/workspacePushPreparedPlan.d.ts +21 -0
- package/dist/sync/workspacePushPreparedPlan.js +1 -0
- package/dist/sync/workspaceRepair.d.ts +17 -25
- package/dist/sync/workspaceRepair.js +348 -25
- package/dist/sync/workspaceSyncContentDecryption.d.ts +6 -0
- package/dist/sync/workspaceSyncContentDecryption.js +11 -0
- package/dist/sync/workspaceSyncModel.d.ts +216 -5
- package/dist/sync/workspaceSyncModel.js +371 -35
- package/dist/sync/workspaceSyncSnapshotProjection.d.ts +11 -0
- package/dist/sync/workspaceSyncSnapshotProjection.js +101 -0
- package/dist/sync/workspaceSyncState.d.ts +13 -0
- package/dist/sync/workspaceSyncState.js +36 -0
- package/dist/sync/workspaceSyncV2SnapshotBuilder.d.ts +106 -0
- package/dist/sync/workspaceSyncV2SnapshotBuilder.js +193 -0
- package/dist/types.d.ts +23 -15
- package/dist/types.js +1 -3
- package/dist/ui/ai-profile-clients/amazon-nova.svg +1 -0
- package/dist/ui/ai-profile-clients/antigravity.png +0 -0
- package/dist/ui/ai-profile-clients/chatgpt.svg +10 -0
- package/dist/ui/ai-profile-clients/claude-chat.svg +1 -0
- package/dist/ui/ai-profile-clients/claude-code.svg +15 -0
- package/dist/ui/ai-profile-clients/cline-app-icon-light.png +0 -0
- package/dist/ui/ai-profile-clients/cline.svg +16 -0
- package/dist/ui/ai-profile-clients/codex.svg +1 -0
- package/dist/ui/ai-profile-clients/copilot.png +0 -0
- package/dist/ui/ai-profile-clients/cursor.svg +1 -0
- package/dist/ui/ai-profile-clients/deepseek.svg +1 -0
- package/dist/ui/ai-profile-clients/gemini-cli-icon.png +0 -0
- package/dist/ui/ai-profile-clients/gemini.svg +10 -0
- package/dist/ui/ai-profile-clients/grok.svg +31 -0
- package/dist/ui/ai-profile-clients/kiro.svg +11 -0
- package/dist/ui/ai-profile-clients/llama.svg +1 -0
- package/dist/ui/ai-profile-clients/mistral.svg +1 -0
- package/dist/ui/ai-profile-clients/ms_copilot.jpeg +0 -0
- package/dist/ui/ai-profile-clients/openclaw.png +0 -0
- package/dist/ui/ai-profile-clients/perplexity.svg +1 -0
- package/dist/ui/ai-profile-clients/vscode.svg +41 -0
- package/dist/ui/ai-profile-clients/windsurf.svg +11 -0
- package/dist/ui/assets/AiIdentityRosterCard-DB1BLO_j.js +1 -0
- package/dist/ui/assets/AiProfilesModule-DPxQeF9N.js +1 -0
- package/dist/ui/assets/AnnotatedAttachmentWorkspace-CBRZ8rca.css +1 -0
- package/dist/ui/assets/AnnotatedAttachmentWorkspace-DHNYaNg6.js +3 -0
- package/dist/ui/assets/AssetTraySortControl-B9k5caQW.css +1 -0
- package/dist/ui/assets/AssetTraySortControl-DphbyHVc.js +1 -0
- package/dist/ui/assets/ContextAttachmentManager-CMxSzHqc.js +3 -0
- package/dist/ui/assets/DocumentWorkspace-BC7sy5TG.js +261 -0
- package/dist/ui/assets/DocumentWorkspace-BIBGBfd7.css +1 -0
- package/dist/ui/assets/EntityActivityTimeline-BfJbZRdl.css +1 -0
- package/dist/ui/assets/EntityActivityTimeline-pJ2ZjZ-k.js +1 -0
- package/dist/ui/assets/PlanningModule-CeTqXMMz.css +1 -0
- package/dist/ui/assets/PlanningModule-t5GbvVR9.js +1 -0
- package/dist/ui/assets/PlansPage-BVH_NfgT.js +1 -0
- package/dist/ui/assets/PlansPage-C2nkK2Bp.css +1 -0
- package/dist/ui/assets/TaskContextUpload-Ds4LnDzV.css +1 -0
- package/dist/ui/assets/TaskContextUpload-bl4fOOUz.js +1 -0
- package/dist/ui/assets/TaskSettings-xVsxSa0g.js +12 -0
- package/dist/ui/assets/TaskforceAgentsModule-CkAxW19K.js +21 -0
- package/dist/ui/assets/TaskforceAgentsModule-D6IC0S7Q.css +1 -0
- package/dist/ui/assets/WorkflowManagerModule-BKqIGVnF.js +1 -0
- package/dist/ui/assets/WorkflowManagerModule-DF10XENz.css +1 -0
- package/dist/ui/assets/antigravity-DRKQga2U.png +0 -0
- package/dist/ui/assets/cursor-BM_3k4Y4.svg +1 -0
- package/dist/ui/assets/gemini-cli-icon-dBAVjCcn.png +0 -0
- package/dist/ui/assets/grok-BuodbWaG.svg +31 -0
- package/dist/ui/assets/index-BzJlVnNS.css +1 -0
- package/dist/ui/assets/index-Cx7vZJHL.js +7 -0
- package/dist/ui/assets/{vendor-dnd-DRzYolkg.js → vendor-dnd-CJ-AjP-Y.js} +1 -1
- package/dist/ui/assets/{vendor-icons-CLnehDTw.js → vendor-icons-B8ZNsH1g.js} +1 -1
- package/dist/ui/assets/{vendor-markdown-BUxTU7dS.js → vendor-markdown-_lhNCyq-.js} +9 -9
- package/dist/ui/assets/vendor-router-AqJMU8Lz.js +3 -0
- package/dist/ui/assets/vscode-C_7wk1WI.svg +41 -0
- package/dist/ui/branding/logos/logo_dark_bg.png +0 -0
- package/dist/ui/branding/logos/logo_favicon_dark.png +0 -0
- package/dist/ui/branding/logos/logo_favicon_dark.svg +56 -0
- package/dist/ui/branding/logos/logo_favicon_light.png +0 -0
- package/dist/ui/branding/logos/logo_light_bg.png +0 -0
- package/dist/ui/images/Taskforce_Van.webp +0 -0
- package/dist/ui/index.html +6 -6
- package/dist/update/uiUpdateService.d.ts +43 -0
- package/dist/update/uiUpdateService.js +149 -0
- package/dist/update/updateCli.d.ts +15 -0
- package/dist/update/updateCli.js +76 -0
- package/dist/update/updateExecutor.d.ts +40 -0
- package/dist/update/updateExecutor.js +474 -0
- package/dist/update/updateStatus.d.ts +83 -0
- package/dist/update/updateStatus.js +703 -0
- package/dist/utils/aiProfileAvatarPaths.d.ts +14 -0
- package/dist/utils/aiProfileAvatarPaths.js +52 -0
- package/dist/utils/aiProfileDefaultLogo.d.ts +7 -0
- package/dist/utils/aiProfileDefaultLogo.js +84 -0
- package/dist/utils/aiProfileEvents.d.ts +9 -1
- package/dist/utils/annotatedAttachments.d.ts +8 -0
- package/dist/utils/annotatedAttachments.js +17 -1
- package/dist/utils/assetTraySorting.d.ts +25 -0
- package/dist/utils/assetTraySorting.js +83 -0
- package/dist/utils/assignees.d.ts +5 -0
- package/dist/utils/assignees.js +14 -9
- package/dist/utils/authLogin.d.ts +10 -0
- package/dist/utils/authLogin.js +8 -0
- package/dist/utils/authSessionEvents.d.ts +2 -0
- package/dist/utils/authSessionEvents.js +6 -0
- package/dist/utils/avatarUpload.js +5 -5
- package/dist/utils/canonicalReferenceAttachments.d.ts +12 -0
- package/dist/utils/canonicalReferenceAttachments.js +42 -0
- package/dist/utils/cloudAssetDisplay.d.ts +2 -0
- package/dist/utils/cloudAssetDisplay.js +8 -0
- package/dist/utils/constants.d.ts +4 -11
- package/dist/utils/constants.js +5 -64
- package/dist/utils/contextAttachmentPreview.d.ts +11 -0
- package/dist/utils/contextAttachmentPreview.js +8 -0
- package/dist/utils/contextAttachmentUpload.d.ts +8 -0
- package/dist/utils/contextAttachmentUpload.js +144 -0
- package/dist/utils/documentNames.js +6 -4
- package/dist/utils/entityReferences.d.ts +14 -0
- package/dist/utils/entityReferences.js +21 -0
- package/dist/utils/httpSetCookie.d.ts +3 -0
- package/dist/utils/httpSetCookie.js +22 -0
- package/dist/utils/imageNoteStoragePaths.d.ts +3 -0
- package/dist/utils/imageNoteStoragePaths.js +19 -0
- package/dist/utils/imageReferences.d.ts +6 -0
- package/dist/utils/imageReferences.js +1 -0
- package/dist/utils/planningArchiveOrchestrator.d.ts +23 -0
- package/dist/utils/planningArchiveOrchestrator.js +37 -0
- package/dist/utils/planningArchivePresentation.d.ts +20 -0
- package/dist/utils/planningArchivePresentation.js +23 -0
- package/dist/utils/planningArchiveReadiness.d.ts +26 -0
- package/dist/utils/planningArchiveReadiness.js +30 -0
- package/dist/utils/planningFavorites.d.ts +7 -0
- package/dist/utils/planningFavorites.js +34 -0
- package/dist/utils/syncEventPresentation.js +53 -0
- package/dist/utils/syncStatusPresentation.d.ts +25 -0
- package/dist/utils/syncStatusPresentation.js +86 -5
- package/dist/utils/taskActivity.d.ts +9 -2
- package/dist/utils/taskActivity.js +61 -0
- package/dist/utils/taskDraftDefaults.d.ts +0 -8
- package/dist/utils/taskDraftDefaults.js +0 -4
- package/dist/utils/taskEvents.d.ts +11 -0
- package/dist/utils/taskEvents.js +6 -0
- package/dist/utils/taskHeaderQuickFilter.d.ts +14 -0
- package/dist/utils/taskHeaderQuickFilter.js +32 -0
- package/dist/utils/taskInvalidation.d.ts +23 -0
- package/dist/utils/taskInvalidation.js +67 -0
- package/dist/utils/taskNormalization.d.ts +2 -1
- package/dist/utils/taskNormalization.js +44 -18
- package/dist/utils/taskReferences.d.ts +16 -0
- package/dist/utils/taskReferences.js +63 -0
- package/dist/utils/taskforceAgentEvents.d.ts +8 -0
- package/dist/utils/taskforceAgentEvents.js +6 -0
- package/dist/utils/taskforceAgentSkillEvents.d.ts +7 -0
- package/dist/utils/taskforceAgentSkillEvents.js +8 -0
- package/dist/utils/uiNotice.d.ts +3 -0
- package/dist/utils/uiNotice.js +1 -1
- package/dist/utils/workspaceResourceEvents.d.ts +7 -0
- package/dist/utils/workspaceResourceEvents.js +6 -0
- package/dist/utils/workspaceSyncPresentation.d.ts +24 -0
- package/dist/utils/workspaceSyncPresentation.js +243 -6
- package/package.json +69 -21
- package/dist/components/features/AgentsModule.d.ts +0 -18
- package/dist/components/features/AgentsModule.js +0 -479
- package/dist/components/features/InitiativesModule.d.ts +0 -22
- package/dist/components/features/InitiativesModule.js +0 -33
- package/dist/components/features/WorkflowsModule.d.ts +0 -27
- package/dist/components/features/WorkflowsModule.js +0 -21
- package/dist/components/features/settings/WorkflowEditor.d.ts +0 -15
- package/dist/components/features/settings/WorkflowEditor.js +0 -245
- package/dist/components/views/panels/DocumentFilterToolbar.d.ts +0 -10
- package/dist/components/views/panels/DocumentFilterToolbar.js +0 -7
- package/dist/components/views/standalone/modals/AccountHubModal.d.ts +0 -61
- package/dist/components/views/standalone/modals/AccountHubModal.js +0 -108
- package/dist/components/views/standalone/modals/EditProfileModal.d.ts +0 -19
- package/dist/components/views/standalone/modals/EditProfileModal.js +0 -11
- package/dist/hooks/ui/useResourceExport.d.ts +0 -21
- package/dist/hooks/ui/useResourceExport.js +0 -87
- package/dist/hooks/ui/useWorkflowTemplates.d.ts +0 -37
- package/dist/hooks/ui/useWorkflowTemplates.js +0 -116
- package/dist/mcp/clientProfileDefaults.d.ts +0 -12
- package/dist/mcp/clientProfileDefaults.js +0 -41
- package/dist/resources/templates/WORKFLOW_V2_POLICY.md +0 -55
- package/dist/resources/templates/environments/aider.yaml +0 -14
- package/dist/resources/templates/environments/antigravity.yaml +0 -10
- package/dist/resources/templates/environments/claude.yaml +0 -10
- package/dist/resources/templates/environments/cline.yaml +0 -10
- package/dist/resources/templates/environments/codex.yaml +0 -13
- package/dist/resources/templates/environments/copilot.yaml +0 -10
- package/dist/resources/templates/environments/cursor.yaml +0 -9
- package/dist/resources/templates/environments/gemini.yaml +0 -9
- package/dist/resources/templates/environments/windsurf.yaml +0 -10
- package/dist/resources/templates/workflow-sources/README.md +0 -9
- package/dist/resources/templates/workflow-sources/workflowDocs.mjs +0 -530
- package/dist/resources/templates/workflow-sources/workflowEditorOverrides.json +0 -1
- package/dist/resources/templates/workflows/collaborate.yaml +0 -109
- package/dist/resources/templates/workflows/do.yaml +0 -87
- package/dist/resources/templates/workflows/evaluate.yaml +0 -116
- package/dist/resources/templates/workflows/execute.yaml +0 -156
- package/dist/resources/templates/workflows/plan.yaml +0 -118
- package/dist/resources/templates/workflows/review.yaml +0 -114
- package/dist/services/formatTransformers.d.ts +0 -29
- package/dist/services/formatTransformers.js +0 -56
- package/dist/services/templateEngine.d.ts +0 -46
- package/dist/services/templateEngine.js +0 -148
- package/dist/shared/workflowDefaults.d.ts +0 -9
- package/dist/shared/workflowDefaults.js +0 -11
- package/dist/ui/agent-logos/Gemini CLI.jpeg +0 -0
- package/dist/ui/agent-logos/antigravity.jpeg +0 -0
- package/dist/ui/agent-logos/chatgpt.png +0 -0
- package/dist/ui/agent-logos/claude-code.jpeg +0 -0
- package/dist/ui/agent-logos/codex.jpeg +0 -0
- package/dist/ui/agent-logos/cursor.png +0 -0
- package/dist/ui/agent-logos/openclaw.jpeg +0 -0
- package/dist/ui/agent-logos/windsurf.png +0 -0
- package/dist/ui/assets/AgentsModule-C4LcqhcZ.js +0 -1
- package/dist/ui/assets/AnnotatedAttachmentWorkspace-B-Dq22d2.js +0 -3
- package/dist/ui/assets/AnnotatedAttachmentWorkspace-BVKew-mH.css +0 -1
- package/dist/ui/assets/ContextAttachmentManager-DsXPTvi-.js +0 -3
- package/dist/ui/assets/DocumentWorkspace-CxA1wO3U.js +0 -252
- package/dist/ui/assets/DocumentWorkspace-D4rJKXzd.css +0 -1
- package/dist/ui/assets/EntityActivityTimeline-B8nSe8l3.js +0 -1
- package/dist/ui/assets/EntityActivityTimeline-DyqvvhuF.css +0 -1
- package/dist/ui/assets/InitiativesModule-VY95v38E.js +0 -1
- package/dist/ui/assets/PlansPage-CQbKDv1a.js +0 -1
- package/dist/ui/assets/PlansPage-DeAzWYTb.css +0 -1
- package/dist/ui/assets/TaskContextUpload-DvDlNpHC.js +0 -1
- package/dist/ui/assets/TaskSettings-CUWbYYtP.js +0 -12
- package/dist/ui/assets/WorkflowsModule-CgM3Jako.js +0 -5
- package/dist/ui/assets/documentReferences-Do9YjrS3.js +0 -1
- package/dist/ui/assets/index--mh3pktj.js +0 -5
- package/dist/ui/assets/index-BawaaEXS.css +0 -1
- package/dist/ui/assets/vendor-router-BbWMxlnO.js +0 -3
- package/dist/ui/branding/logos/logo_black_01.png +0 -0
- package/dist/ui/branding/logos/logo_black_02.png +0 -0
- package/dist/ui/branding/logos/logo_white_01.png +0 -0
- package/dist/ui/branding/logos/logo_white_02.png +0 -0
- package/scripts/generate-workflow-templates.mjs +0 -134
- package/src/resources/templates/WORKFLOW_V2_POLICY.md +0 -55
- package/src/resources/templates/environments/aider.yaml +0 -14
- package/src/resources/templates/environments/antigravity.yaml +0 -10
- package/src/resources/templates/environments/claude.yaml +0 -10
- package/src/resources/templates/environments/cline.yaml +0 -10
- package/src/resources/templates/environments/codex.yaml +0 -13
- package/src/resources/templates/environments/copilot.yaml +0 -10
- package/src/resources/templates/environments/cursor.yaml +0 -9
- package/src/resources/templates/environments/gemini.yaml +0 -9
- package/src/resources/templates/environments/windsurf.yaml +0 -10
- package/src/resources/templates/workflow-sources/README.md +0 -9
- package/src/resources/templates/workflow-sources/workflowDocs.mjs +0 -530
- package/src/resources/templates/workflow-sources/workflowEditorOverrides.json +0 -1
- package/src/resources/templates/workflows/collaborate.yaml +0 -109
- package/src/resources/templates/workflows/do.yaml +0 -87
- package/src/resources/templates/workflows/evaluate.yaml +0 -116
- package/src/resources/templates/workflows/execute.yaml +0 -156
- package/src/resources/templates/workflows/plan.yaml +0 -118
- package/src/resources/templates/workflows/review.yaml +0 -114
- /package/dist/ui/branding/logos/{logo_dark.svg → logo_dark_no_bg.svg} +0 -0
- /package/dist/ui/branding/logos/{logo_favicon.svg → logo_favicon_light.svg} +0 -0
- /package/dist/ui/branding/logos/{logo_light.svg → logo_light_no_bg.svg} +0 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg width="92px" height="96px" viewBox="0 0 92 96" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
3
|
+
<title>Group Copy 2</title>
|
|
4
|
+
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
|
5
|
+
<g id="icon-copy" transform="translate(-34, -40)" fill="#24292F">
|
|
6
|
+
<g id="Group-Copy-2" transform="translate(34, 40.5)">
|
|
7
|
+
<g id="Group-3-Copy-4" transform="translate(0, 0)">
|
|
8
|
+
<path d="M65.4492701,16.3 C76.3374701,16.3 85.1635558,25.16479 85.1635558,36.1 L85.1635558,42.7 L90.9027661,54.1647464 C91.4694141,55.2966923 91.4668177,56.6300535 90.8957658,57.7597839 L85.1635558,69.1 L85.1635558,75.7 C85.1635558,86.63554 76.3374701,95.5 65.4492701,95.5 L26.0206986,95.5 C15.1328272,95.5 6.30641291,86.63554 6.30641291,75.7 L6.30641291,69.1 L0.448507752,57.7954874 C-0.14693501,56.6464093 -0.149634367,55.2802504 0.441262896,54.1288283 L6.30641291,42.7 L6.30641291,36.1 C6.30641291,25.16479 15.1328272,16.3 26.0206986,16.3 L65.4492701,16.3 Z M62.9301895,22 L29.189529,22 C19.8723267,22 12.3191987,29.5552188 12.3191987,38.875 L12.3191987,44.5 L7.44288578,53.9634655 C6.84794449,55.1180686 6.85066096,56.4896598 7.45017099,57.6418974 L12.3191987,67 L12.3191987,72.625 C12.3191987,81.9450625 19.8723267,89.5 29.189529,89.5 L62.9301895,89.5 C72.2476729,89.5 79.8005198,81.9450625 79.8005198,72.625 L79.8005198,67 L84.5682187,57.6061395 C85.1432011,56.473244 85.1458141,55.1345713 84.5752587,53.9994398 L79.8005198,44.5 L79.8005198,38.875 C79.8005198,29.5552188 72.2476729,22 62.9301895,22 Z" id="Combined-Shape" fill-rule="nonzero"></path>
|
|
9
|
+
<circle id="Oval" cx="45.7349843" cy="11" r="11"></circle>
|
|
10
|
+
</g>
|
|
11
|
+
<rect id="Rectangle-Copy" stroke="#24292F" stroke-width="8" x="31" y="44.5" width="5" height="22" rx="2.5"></rect>
|
|
12
|
+
<rect id="Rectangle-Copy-2" stroke="#24292F" stroke-width="8" x="55" y="44.5" width="5" height="22" rx="2.5"></rect>
|
|
13
|
+
</g>
|
|
14
|
+
</g>
|
|
15
|
+
</g>
|
|
16
|
+
</svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg height="1em" style="flex:none;line-height:1" viewBox="0 0 24 24" width="1em" xmlns="http://www.w3.org/2000/svg"><title>Codex</title><path d="M19.503 0H4.496A4.496 4.496 0 000 4.496v15.007A4.496 4.496 0 004.496 24h15.007A4.496 4.496 0 0024 19.503V4.496A4.496 4.496 0 0019.503 0z" fill="#fff"></path><path d="M9.064 3.344a4.578 4.578 0 012.285-.312c1 .115 1.891.54 2.673 1.275.01.01.024.017.037.021a.09.09 0 00.043 0 4.55 4.55 0 013.046.275l.047.022.116.057a4.581 4.581 0 012.188 2.399c.209.51.313 1.041.315 1.595a4.24 4.24 0 01-.134 1.223.123.123 0 00.03.115c.594.607.988 1.33 1.183 2.17.289 1.425-.007 2.71-.887 3.854l-.136.166a4.548 4.548 0 01-2.201 1.388.123.123 0 00-.081.076c-.191.551-.383 1.023-.74 1.494-.9 1.187-2.222 1.846-3.711 1.838-1.187-.006-2.239-.44-3.157-1.302a.107.107 0 00-.105-.024c-.388.125-.78.143-1.204.138a4.441 4.441 0 01-1.945-.466 4.544 4.544 0 01-1.61-1.335c-.152-.202-.303-.392-.414-.617a5.81 5.81 0 01-.37-.961 4.582 4.582 0 01-.014-2.298.124.124 0 00.006-.056.085.085 0 00-.027-.048 4.467 4.467 0 01-1.034-1.651 3.896 3.896 0 01-.251-1.192 5.189 5.189 0 01.141-1.6c.337-1.112.982-1.985 1.933-2.618.212-.141.413-.251.601-.33.215-.089.43-.164.646-.227a.098.098 0 00.065-.066 4.51 4.51 0 01.829-1.615 4.535 4.535 0 011.837-1.388zm3.482 10.565a.637.637 0 000 1.272h3.636a.637.637 0 100-1.272h-3.636zM8.462 9.23a.637.637 0 00-1.106.631l1.272 2.224-1.266 2.136a.636.636 0 101.095.649l1.454-2.455a.636.636 0 00.005-.64L8.462 9.23z" fill="url(#lobe-icons-codex-_R_0_)"></path><defs><linearGradient gradientUnits="userSpaceOnUse" id="lobe-icons-codex-_R_0_" x1="12" x2="12" y1="3" y2="21"><stop stop-color="#B1A7FF"></stop><stop offset=".5" stop-color="#7A9DFF"></stop><stop offset="1" stop-color="#3941FF"></stop></linearGradient></defs></svg>
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg fill="none" height="512" viewBox="0 0 512 512" width="512" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><clipPath id="a"><path d="m96 73h320.735v365.65h-320.735z"/></clipPath><path d="m512.001 325.499c0 7.124 0 14.24-.041 21.364-.035 5.999-.103 11.998-.268 17.99-.356 13.068-1.124 26.245-3.448 39.169-2.359 13.109-6.205 25.306-12.266 37.222-5.958 11.703-13.746 22.419-23.029 31.709-9.29 9.291-20 17.072-31.71 23.03-11.909 6.061-24.113 9.907-37.222 12.266-12.923 2.324-26.101 3.092-39.169 3.448-5.999.165-11.991.233-17.99.268-7.123.048-14.24.041-21.364.041h-139c-7.124 0-14.24 0-21.364-.041-5.999-.035-11.998-.103-17.99-.268-13.068-.356-26.245-1.124-39.169-3.448-13.109-2.359-25.306-6.205-37.2219-12.266-11.7034-5.958-22.4195-13.746-31.7095-23.03-9.29-9.29-17.0717-19.999-23.0296-31.709-6.06082-11.909-9.90709-24.113-12.26559-37.222-2.32422-12.924-3.092104-26.101-3.448621-39.169-.164547-5.999-.2331075-11.991-.267388-17.99-.02742444-7.124-.02742444-14.24-.02742444-21.364v-139c0-7.124 0-14.24.04113664-21.364.0342805-5.999.1028418-11.998.2673878-17.99.356517-13.068 1.124399-26.245 3.448619-39.169 2.3585-13.1091 6.20477-25.3061 12.26558-37.222 5.9579-11.7034 13.7465-22.4195 23.0296-31.7095 9.2901-9.29 19.9993-17.0717 31.7095-23.0296 11.9091-6.06082 24.1129-9.90709 37.2222-12.26559 12.923-2.32422 26.101-3.092101 39.168-3.448618 6-.164547 11.992-.2331075 17.991-.2673881 7.117-.03428046 14.233-.03428046 21.357-.03428046h139c7.124 0 14.24 0 21.364.04113656 5.999.0342806 11.998.102842 17.99.267388 13.068.356517 26.245 1.124402 39.169 3.448622 13.109 2.3585 25.306 6.20477 37.222 12.26553 11.703 5.958 22.419 13.7465 31.709 23.0297 9.29 9.29 17.072 19.9992 23.03 31.7094 6.061 11.9091 9.907 24.113 12.266 37.2222 2.324 12.923 3.092 26.101 3.448 39.169.165 5.999.233 11.991.268 17.99.048 7.123.041 14.24.041 21.364v139z" fill="#14120b"/><path d="m186.501 3.99902h139c7.125 0 14.231-.00004 21.341.04102 5.985.0342 11.952.10221 17.903.26562h.001c13.003.35475 25.943 1.11709 38.569 3.3877 12.775 2.29828 24.592 6.03144 36.118 11.89354v-.001c10.973 5.5867 21.052 12.8384 29.848 21.4571l.847.8379c8.993 8.993 16.525 19.3593 22.292 30.6933l3.565-1.8135-3.565 1.8145c5.678 11.1575 9.36 22.6024 11.674 34.9208l.219 1.195c2.129 11.837 2.932 23.95 3.316 36.132l.072 2.438c.164 5.958.232 11.919.266 17.904v.004c.048 7.107.041 14.207.041 21.337v129.344l-.007-.007v9.656c0 7.125 0 14.231-.041 21.341-.034 5.985-.102 11.952-.266 17.903v.001c-.354 13.003-1.117 25.944-3.387 38.569-2.227 12.376-5.8 23.853-11.351 35.037l-.543 1.08c-5.767 11.327-13.306 21.701-22.293 30.695-8.993 8.993-19.361 16.526-30.695 22.293-11.518 5.861-23.342 9.595-36.116 11.894-11.837 2.128-23.95 2.931-36.132 3.315l-2.438.072c-5.958.164-11.919.232-17.904.266h-.004c-7.107.048-14.207.041-21.337.041h-139c-7.125 0-14.231 0-21.341-.041-5.985-.034-11.952-.102-17.903-.266h-.001c-13.003-.355-25.944-1.117-38.57-3.387-12.7742-2.299-24.5914-6.032-36.1165-11.894h.001c-10.974-5.587-21.0534-12.837-29.8496-21.456l-.8467-.838c-8.7118-8.712-16.0531-18.713-21.7461-29.634l-.5459-1.06-.544-1.081c-5.3709-10.816-8.8904-21.919-11.12983-33.84l-.21973-1.196c-2.27061-12.625-3.03294-25.566-3.38769-38.569v-.001c-.16342-5.958-.23143-11.918-.26563-17.903-.02736-7.112-.02734-14.219-.02734-21.341v-139c0-7.125-.00005-14.231.04101-21.341.0342-5.985.10222-11.952.26563-17.903v-.001c.35475-13.003 1.11699-25.944 3.38769-38.57 2.29829-12.7743 6.03159-24.5916 11.89359-36.1166l-.001-.001c5.7665-11.3269 13.3073-21.6999 22.2939-30.6934 8.9933-8.9932 19.36-16.5261 30.6944-22.2929h.0009c11.5174-5.8615 23.3407-9.59617 36.1149-11.89455 11.837-2.12878 23.951-2.93017 36.133-3.31446l2.438-.07226c5.958-.16342 11.919-.23142 17.904-.26563l-.001-.00097c7.104-.03422 14.211-.03321 21.335-.03321z" stroke="#edecec" stroke-opacity=".2" stroke-width="8"/><g clip-path="url(#a)"><path d="m410.344 159.545-146.38-84.5111c-4.7-2.7145-10.5-2.7145-15.2 0l-146.373 84.5111c-3.9515 2.282-6.391 6.501-6.391 11.071v170.418c0 4.569 2.4395 8.789 6.391 11.07l146.379 84.512c4.701 2.714 10.501 2.714 15.201 0l146.38-84.512c3.951-2.281 6.391-6.501 6.391-11.07v-170.418c0-4.57-2.44-8.789-6.391-11.071zm-9.195 17.902-141.308 244.751c-.955 1.65-3.477.976-3.477-.934v-160.261c0-3.203-1.711-6.164-4.487-7.772l-138.786-80.127c-1.65-.956-.976-3.478.934-3.478h282.616c4.013 0 6.522 4.35 4.515 7.828h-.007z" fill="#edecec"/></g></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg height="1em" style="flex:none;line-height:1" viewBox="0 0 24 24" width="1em" xmlns="http://www.w3.org/2000/svg"><title>DeepSeek</title><path d="M23.748 4.482c-.254-.124-.364.113-.512.234-.051.039-.094.09-.137.136-.372.397-.806.657-1.373.626-.829-.046-1.537.214-2.163.848-.133-.782-.575-1.248-1.247-1.548-.352-.156-.708-.311-.955-.65-.172-.241-.219-.51-.305-.774-.055-.16-.11-.323-.293-.35-.2-.031-.278.136-.356.276-.313.572-.434 1.202-.422 1.84.027 1.436.633 2.58 1.838 3.393.137.093.172.187.129.323-.082.28-.18.552-.266.833-.055.179-.137.217-.329.14a5.526 5.526 0 01-1.736-1.18c-.857-.828-1.631-1.742-2.597-2.458a11.365 11.365 0 00-.689-.471c-.985-.957.13-1.743.388-1.836.27-.098.093-.432-.779-.428-.872.004-1.67.295-2.687.684a3.055 3.055 0 01-.465.137 9.597 9.597 0 00-2.883-.102c-1.885.21-3.39 1.102-4.497 2.623C.082 8.606-.231 10.684.152 12.85c.403 2.284 1.569 4.175 3.36 5.653 1.858 1.533 3.997 2.284 6.438 2.14 1.482-.085 3.133-.284 4.994-1.86.47.234.962.327 1.78.397.63.059 1.236-.03 1.705-.128.735-.156.684-.837.419-.961-2.155-1.004-1.682-.595-2.113-.926 1.096-1.296 2.746-2.642 3.392-7.003.05-.347.007-.565 0-.845-.004-.17.035-.237.23-.256a4.173 4.173 0 001.545-.475c1.396-.763 1.96-2.015 2.093-3.517.02-.23-.004-.467-.247-.588zM11.581 18c-2.089-1.642-3.102-2.183-3.52-2.16-.392.024-.321.471-.235.763.09.288.207.486.371.739.114.167.192.416-.113.603-.673.416-1.842-.14-1.897-.167-1.361-.802-2.5-1.86-3.301-3.307-.774-1.393-1.224-2.887-1.298-4.482-.02-.386.093-.522.477-.592a4.696 4.696 0 011.529-.039c2.132.312 3.946 1.265 5.468 2.774.868.86 1.525 1.887 2.202 2.891.72 1.066 1.494 2.082 2.48 2.914.348.292.625.514.891.677-.802.09-2.14.11-3.054-.614zm1-6.44a.306.306 0 01.415-.287.302.302 0 01.2.288.306.306 0 01-.31.307.303.303 0 01-.304-.308zm3.11 1.596c-.2.081-.399.151-.59.16a1.245 1.245 0 01-.798-.254c-.274-.23-.47-.358-.552-.758a1.73 1.73 0 01.016-.588c.07-.327-.008-.537-.239-.727-.187-.156-.426-.199-.688-.199a.559.559 0 01-.254-.078c-.11-.054-.2-.19-.114-.358.028-.054.16-.186.192-.21.356-.202.767-.136 1.146.016.352.144.618.408 1.001.782.391.451.462.576.685.914.176.265.336.537.445.848.067.195-.019.354-.25.452z" fill="#4D6BFE"></path></svg>
|
|
Binary file
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
<svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M14 28C14 26.0633 13.6267 24.2433 12.88 22.54C12.1567 20.8367 11.165 19.355 9.905 18.095C8.645 16.835 7.16333 15.8433 5.46 15.12C3.75667 14.3733 1.93667 14 0 14C1.93667 14 3.75667 13.6383 5.46 12.915C7.16333 12.1683 8.645 11.165 9.905 9.905C11.165 8.645 12.1567 7.16333 12.88 5.46C13.6267 3.75667 14 1.93667 14 0C14 1.93667 14.3617 3.75667 15.085 5.46C15.8317 7.16333 16.835 8.645 18.095 9.905C19.355 11.165 20.8367 12.1683 22.54 12.915C24.2433 13.6383 26.0633 14 28 14C26.0633 14 24.2433 14.3733 22.54 15.12C20.8367 15.8433 19.355 16.835 18.095 18.095C16.835 19.355 15.8317 20.8367 15.085 22.54C14.3617 24.2433 14 26.0633 14 28Z" fill="url(#gemini-gradient)"/>
|
|
3
|
+
<defs>
|
|
4
|
+
<radialGradient id="gemini-gradient" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(2.77876 11.3795) rotate(18.6832) scale(29.8025 238.737)">
|
|
5
|
+
<stop offset="0.0671246" stop-color="#9168C0"/>
|
|
6
|
+
<stop offset="0.342551" stop-color="#5684D1"/>
|
|
7
|
+
<stop offset="0.672076" stop-color="#1BA1E3"/>
|
|
8
|
+
</radialGradient>
|
|
9
|
+
</defs>
|
|
10
|
+
</svg>
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
<svg width="512" height="512" viewBox="0 0 512 512" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<g clip-path="url(#clip0_304_111)">
|
|
3
|
+
<foreignObject x="-24" y="-22" width="560" height="560"><div xmlns="http://www.w3.org/1999/xhtml" style="backdrop-filter:blur(16px);clip-path:url(#bgblur_1_304_111_clip_path);height:100%;width:100%"></div></foreignObject><g filter="url(#filter0_d_304_111)" data-figma-bg-blur-radius="32">
|
|
4
|
+
<path d="M0 256C0 166.392 0 121.587 17.439 87.3615C32.7787 57.2556 57.2556 32.7787 87.3615 17.439C121.587 0 166.392 0 256 0C345.608 0 390.413 0 424.638 17.439C454.744 32.7787 479.221 57.2556 494.561 87.3615C512 121.587 512 166.392 512 256C512 345.608 512 390.413 494.561 424.638C479.221 454.744 454.744 479.221 424.638 494.561C390.413 512 345.608 512 256 512C166.392 512 121.587 512 87.3615 494.561C57.2556 479.221 32.7787 454.744 17.439 424.638C0 390.413 0 345.608 0 256Z" fill="#050505"/>
|
|
5
|
+
<path d="M256 2.5C300.845 2.5 334.329 2.50228 360.884 4.67188C387.41 6.83911 406.802 11.156 423.504 19.666C453.139 34.7661 477.234 58.8607 492.334 88.4961C500.844 105.198 505.161 124.59 507.328 151.116C509.498 177.671 509.5 211.155 509.5 256C509.5 300.845 509.498 334.329 507.328 360.884C505.161 387.41 500.844 406.802 492.334 423.504C477.234 453.139 453.139 477.234 423.504 492.334C406.802 500.844 387.41 505.161 360.884 507.328C334.329 509.498 300.845 509.5 256 509.5C211.155 509.5 177.671 509.498 151.116 507.328C124.59 505.161 105.198 500.844 88.4961 492.334C58.8607 477.234 34.7661 453.139 19.666 423.504C11.156 406.802 6.83911 387.41 4.67188 360.884C2.50228 334.329 2.5 300.845 2.5 256C2.5 211.155 2.50228 177.671 4.67188 151.116C6.83911 124.59 11.156 105.198 19.666 88.4961C34.7661 58.8607 58.8607 34.7661 88.4961 19.666C105.198 11.156 124.59 6.83911 151.116 4.67188C177.671 2.50228 211.155 2.5 256 2.5Z" stroke="black" stroke-opacity="0.05" stroke-width="5"/>
|
|
6
|
+
</g>
|
|
7
|
+
</g>
|
|
8
|
+
<mask id="path-3-inside-1_304_111" fill="white">
|
|
9
|
+
<path d="M210.484 312.759L343.465 210.383C349.984 205.364 359.302 207.322 362.408 215.117C378.758 256.231 371.454 305.64 338.925 339.563C306.397 373.487 261.137 380.927 219.768 363.983L174.577 385.803C239.394 432.008 318.104 420.581 367.289 369.251C406.303 328.564 418.386 273.104 407.088 223.091L407.19 223.198C390.807 149.726 411.218 120.359 453.03 60.3072C454.02 58.8833 455.01 57.4595 456 56L400.978 113.382V113.204L210.45 312.794"/>
|
|
10
|
+
<path d="M183.042 337.641C136.519 291.294 144.54 219.567 184.236 178.203C213.59 147.59 261.683 135.096 303.666 153.464L348.755 131.75C340.632 125.627 330.221 119.042 318.275 114.414C264.277 91.2407 199.63 102.774 155.735 148.516C113.513 192.549 100.236 260.254 123.036 318.027C140.069 361.206 112.148 391.748 84.0229 422.575C74.0561 433.503 64.0553 444.431 56 456L183.007 337.677"/>
|
|
11
|
+
</mask>
|
|
12
|
+
<path d="M210.484 312.759L343.465 210.383C349.984 205.364 359.302 207.322 362.408 215.117C378.758 256.231 371.454 305.64 338.925 339.563C306.397 373.487 261.137 380.927 219.768 363.983L174.577 385.803C239.394 432.008 318.104 420.581 367.289 369.251C406.303 328.564 418.386 273.104 407.088 223.091L407.19 223.198C390.807 149.726 411.218 120.359 453.03 60.3072C454.02 58.8833 455.01 57.4595 456 56L400.978 113.382V113.204L210.45 312.794" fill="#FCFCFC"/>
|
|
13
|
+
<path d="M183.042 337.641C136.519 291.294 144.54 219.567 184.236 178.203C213.59 147.59 261.683 135.096 303.666 153.464L348.755 131.75C340.632 125.627 330.221 119.042 318.275 114.414C264.277 91.2407 199.63 102.774 155.735 148.516C113.513 192.549 100.236 260.254 123.036 318.027C140.069 361.206 112.148 391.748 84.0229 422.575C74.0561 433.503 64.0553 444.431 56 456L183.007 337.677" fill="#FCFCFC"/>
|
|
14
|
+
<path d="M343.465 210.383L344.38 211.571L344.38 211.571L343.465 210.383ZM362.408 215.117L363.802 214.563L363.802 214.562L362.408 215.117ZM219.768 363.983L220.337 362.594L219.718 362.341L219.116 362.632L219.768 363.983ZM174.577 385.803L173.924 384.453L171.643 385.554L173.706 387.025L174.577 385.803ZM367.289 369.251L366.207 368.213L366.206 368.213L367.289 369.251ZM407.088 223.091L408.171 222.053L404.436 218.157L405.625 223.421L407.088 223.091ZM407.19 223.198L406.108 224.236L409.823 228.111L408.654 222.871L407.19 223.198ZM453.03 60.3072L454.262 61.1643L454.262 61.1634L453.03 60.3072ZM456 56L457.241 56.842L454.917 54.9618L456 56ZM400.978 113.382H399.478V117.113L402.061 114.42L400.978 113.382ZM400.978 113.204H402.478V109.46L399.893 112.168L400.978 113.204ZM184.236 178.203L185.318 179.242L185.319 179.242L184.236 178.203ZM303.666 153.464L303.065 154.838L303.696 155.114L304.317 154.815L303.666 153.464ZM348.755 131.75L349.406 133.101L351.624 132.033L349.658 130.552L348.755 131.75ZM318.275 114.414L317.683 115.793L317.708 115.803L317.733 115.813L318.275 114.414ZM155.735 148.516L154.653 147.477L154.653 147.478L155.735 148.516ZM123.036 318.027L124.432 317.477L124.432 317.477L123.036 318.027ZM84.0229 422.575L82.9148 421.564L82.9146 421.564L84.0229 422.575ZM56 456L54.769 455.143L57.0225 457.098L56 456ZM210.484 312.759L211.399 313.948L344.38 211.571L343.465 210.383L342.55 209.194L209.569 311.57L210.484 312.759ZM343.465 210.383L344.38 211.571C350.204 207.087 358.32 208.909 361.015 215.672L362.408 215.117L363.802 214.562C360.285 205.734 349.764 203.64 342.55 209.194L343.465 210.383ZM362.408 215.117L361.015 215.671C377.163 256.279 369.936 305.055 337.842 338.525L338.925 339.563L340.008 340.601C372.972 306.224 380.353 256.183 363.802 214.563L362.408 215.117ZM338.925 339.563L337.842 338.525C305.769 371.974 261.175 379.321 220.337 362.594L219.768 363.983L219.2 365.371C261.099 382.532 307.024 375 340.008 340.601L338.925 339.563ZM219.768 363.983L219.116 362.632L173.924 384.453L174.577 385.803L175.229 387.154L220.42 365.333L219.768 363.983ZM174.577 385.803L173.706 387.025C239.15 433.675 318.689 422.14 368.372 370.289L367.289 369.251L366.206 368.213C317.52 419.023 239.639 430.34 175.447 384.582L174.577 385.803ZM367.289 369.251L368.372 370.289C407.764 329.208 419.95 273.221 408.551 222.76L407.088 223.091L405.625 223.421C416.822 272.987 404.842 327.92 366.207 368.213L367.289 369.251ZM407.088 223.091L406.005 224.129L406.108 224.236L407.19 223.198L408.273 222.16L408.171 222.053L407.088 223.091ZM407.19 223.198L408.654 222.871C400.505 186.325 401.538 160.91 409.705 137.209C417.905 113.414 433.319 91.2421 454.262 61.1643L453.03 60.3072L451.799 59.4501C430.929 89.4239 415.232 111.961 406.869 136.231C398.473 160.594 397.492 186.599 405.726 223.524L407.19 223.198ZM453.03 60.3072L454.262 61.1634C455.251 59.7406 456.246 58.3097 457.241 56.842L456 56L454.759 55.158C453.774 56.6092 452.789 58.0261 451.799 59.451L453.03 60.3072ZM456 56L454.917 54.9618L399.896 112.344L400.978 113.382L402.061 114.42L457.083 57.0382L456 56ZM400.978 113.382H402.478V113.204H400.978H399.478V113.382H400.978ZM183.042 337.641L184.1 336.578C138.255 290.907 146.087 220.121 185.318 179.242L184.236 178.203L183.154 177.165C142.993 219.012 134.782 291.681 181.983 338.704L183.042 337.641ZM184.236 178.203L185.319 179.242C214.275 149.044 261.706 136.743 303.065 154.838L303.666 153.464L304.267 152.09C261.66 133.449 212.906 146.137 183.154 177.165L184.236 178.203ZM303.666 153.464L304.317 154.815L349.406 133.101L348.755 131.75L348.105 130.398L303.015 152.112L303.666 153.464ZM348.755 131.75L349.658 130.552C341.462 124.374 330.93 117.708 318.817 113.015L318.275 114.414L317.733 115.813C329.513 120.376 339.802 126.88 347.853 132.948L348.755 131.75ZM318.275 114.414L318.867 113.036C264.299 89.6178 198.984 101.281 154.653 147.477L155.735 148.516L156.818 149.554C200.276 104.267 264.255 92.8636 317.683 115.793L318.275 114.414ZM155.735 148.516L154.653 147.478C112.02 191.939 98.6279 260.265 121.641 318.578L123.036 318.027L124.432 317.477C101.844 260.242 115.006 193.159 156.818 149.554L155.735 148.516ZM123.036 318.027L121.641 318.578C129.98 339.717 127.326 357.704 119.12 374.267C110.865 390.928 97.0134 406.111 82.9148 421.564L84.0229 422.575L85.131 423.586C99.1576 408.212 113.329 392.711 121.808 375.599C130.335 358.389 133.125 339.516 124.432 317.477L123.036 318.027ZM84.0229 422.575L82.9146 421.564C72.9633 432.475 62.8911 443.478 54.769 455.143L56 456L57.231 456.857C65.2195 445.384 75.149 434.531 85.1312 423.586L84.0229 422.575ZM56 456L57.0225 457.098L184.03 338.774L183.007 337.677L181.985 336.579L54.9775 454.902L56 456ZM400.978 113.204L399.893 112.168L209.365 311.759L210.45 312.794L211.535 313.83L402.063 114.24L400.978 113.204Z" fill="#FCFCFC" mask="url(#path-3-inside-1_304_111)"/>
|
|
15
|
+
<defs>
|
|
16
|
+
<filter id="filter0_d_304_111" x="-24" y="-22" width="560" height="560" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
|
|
17
|
+
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
|
|
18
|
+
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
|
|
19
|
+
<feOffset dy="2"/>
|
|
20
|
+
<feGaussianBlur stdDeviation="12"/>
|
|
21
|
+
<feComposite in2="hardAlpha" operator="out"/>
|
|
22
|
+
<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.16 0"/>
|
|
23
|
+
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_304_111"/>
|
|
24
|
+
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_304_111" result="shape"/>
|
|
25
|
+
</filter>
|
|
26
|
+
<clipPath id="bgblur_1_304_111_clip_path" transform="translate(24 22)"><path d="M0 256C0 166.392 0 121.587 17.439 87.3615C32.7787 57.2556 57.2556 32.7787 87.3615 17.439C121.587 0 166.392 0 256 0C345.608 0 390.413 0 424.638 17.439C454.744 32.7787 479.221 57.2556 494.561 87.3615C512 121.587 512 166.392 512 256C512 345.608 512 390.413 494.561 424.638C479.221 454.744 454.744 479.221 424.638 494.561C390.413 512 345.608 512 256 512C166.392 512 121.587 512 87.3615 494.561C57.2556 479.221 32.7787 454.744 17.439 424.638C0 390.413 0 345.608 0 256Z"/>
|
|
27
|
+
</clipPath><clipPath id="clip0_304_111">
|
|
28
|
+
<rect width="512" height="512" fill="white"/>
|
|
29
|
+
</clipPath>
|
|
30
|
+
</defs>
|
|
31
|
+
</svg>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
<svg width="1200" height="1200" viewBox="0 0 1200 1200" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<rect width="1200" height="1200" rx="260" fill="#9046FF"/>
|
|
3
|
+
<mask id="mask0_1106_4856" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="272" y="202" width="655" height="796">
|
|
4
|
+
<path d="M926.578 202.793H272.637V997.857H926.578V202.793Z" fill="white"/>
|
|
5
|
+
</mask>
|
|
6
|
+
<g mask="url(#mask0_1106_4856)">
|
|
7
|
+
<path d="M398.554 818.914C316.315 1001.03 491.477 1046.74 620.672 940.156C658.687 1059.66 801.052 970.473 852.234 877.795C964.787 673.567 919.318 465.357 907.64 422.374C827.637 129.443 427.623 128.946 358.8 423.865C342.651 475.544 342.402 534.18 333.458 595.051C328.986 625.86 325.507 645.488 313.83 677.785C306.873 696.424 297.68 712.819 282.773 740.645C259.915 783.881 269.604 867.113 387.87 823.883L399.051 818.914H398.554Z" fill="white"/>
|
|
8
|
+
<path d="M636.123 549.353C603.328 549.353 598.359 510.097 598.359 486.742C598.359 465.623 602.086 448.977 609.293 438.293C615.504 428.852 624.697 424.131 636.123 424.131C647.555 424.131 657.492 428.852 664.447 438.541C672.398 449.474 676.623 466.12 676.623 486.742C676.623 525.998 661.471 549.353 636.375 549.353H636.123Z" fill="black"/>
|
|
9
|
+
<path d="M771.24 549.353C738.445 549.353 733.477 510.097 733.477 486.742C733.477 465.623 737.203 448.977 744.41 438.293C750.621 428.852 759.814 424.131 771.24 424.131C782.672 424.131 792.609 428.852 799.564 438.541C807.516 449.474 811.74 466.12 811.74 486.742C811.74 525.998 796.588 549.353 771.492 549.353H771.24Z" fill="black"/>
|
|
10
|
+
</g>
|
|
11
|
+
</svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg height="1em" style="flex:none;line-height:1" viewBox="0 0 24 24" width="1em" xmlns="http://www.w3.org/2000/svg"><title>Meta</title><path d="M6.897 4h-.024l-.031 2.615h.022c1.715 0 3.046 1.357 5.94 6.246l.175.297.012.02 1.62-2.438-.012-.019a48.763 48.763 0 00-1.098-1.716 28.01 28.01 0 00-1.175-1.629C10.413 4.932 8.812 4 6.896 4z" fill="url(#lobe-icons-meta-0-_R_0_)"></path><path d="M6.873 4C4.95 4.01 3.247 5.258 2.02 7.17a4.352 4.352 0 00-.01.017l2.254 1.231.011-.017c.718-1.083 1.61-1.774 2.568-1.785h.021L6.896 4h-.023z" fill="url(#lobe-icons-meta-1-_R_0_)"></path><path d="M2.019 7.17l-.011.017C1.2 8.447.598 9.995.274 11.664l-.005.022 2.534.6.004-.022c.27-1.467.786-2.828 1.456-3.845l.011-.017L2.02 7.17z" fill="url(#lobe-icons-meta-2-_R_0_)"></path><path d="M2.807 12.264l-2.533-.6-.005.022c-.177.918-.267 1.851-.269 2.786v.023l2.598.233v-.023a12.591 12.591 0 01.21-2.44z" fill="url(#lobe-icons-meta-3-_R_0_)"></path><path d="M2.677 15.537a5.462 5.462 0 01-.079-.813v-.022L0 14.468v.024a8.89 8.89 0 00.146 1.652l2.535-.585a4.106 4.106 0 01-.004-.022z" fill="url(#lobe-icons-meta-4-_R_0_)"></path><path d="M3.27 16.89c-.284-.31-.484-.756-.589-1.328l-.004-.021-2.535.585.004.021c.192 1.01.568 1.85 1.106 2.487l.014.017 2.018-1.745a2.106 2.106 0 01-.015-.016z" fill="url(#lobe-icons-meta-5-_R_0_)"></path><path d="M10.78 9.654c-1.528 2.35-2.454 3.825-2.454 3.825-2.035 3.2-2.739 3.917-3.871 3.917a1.545 1.545 0 01-1.186-.508l-2.017 1.744.014.017C2.01 19.518 3.058 20 4.356 20c1.963 0 3.374-.928 5.884-5.33l1.766-3.13a41.283 41.283 0 00-1.227-1.886z" fill="#0082FB"></path><path d="M13.502 5.946l-.016.016c-.4.43-.786.908-1.16 1.416.378.483.768 1.024 1.175 1.63.48-.743.928-1.345 1.367-1.807l.016-.016-1.382-1.24z" fill="url(#lobe-icons-meta-6-_R_0_)"></path><path d="M20.918 5.713C19.853 4.633 18.583 4 17.225 4c-1.432 0-2.637.787-3.723 1.944l-.016.016 1.382 1.24.016-.017c.715-.747 1.408-1.12 2.176-1.12.826 0 1.6.39 2.27 1.075l.015.016 1.589-1.425-.016-.016z" fill="#0082FB"></path><path d="M23.998 14.125c-.06-3.467-1.27-6.566-3.064-8.396l-.016-.016-1.588 1.424.015.016c1.35 1.392 2.277 3.98 2.361 6.971v.023h2.292v-.022z" fill="url(#lobe-icons-meta-7-_R_0_)"></path><path d="M23.998 14.15v-.023h-2.292v.022c.004.14.006.282.006.424 0 .815-.121 1.474-.368 1.95l-.011.022 1.708 1.782.013-.02c.62-.96.946-2.293.946-3.91 0-.083 0-.165-.002-.247z" fill="url(#lobe-icons-meta-8-_R_0_)"></path><path d="M21.344 16.52l-.011.02c-.214.402-.519.67-.917.787l.778 2.462a3.493 3.493 0 00.438-.182 3.558 3.558 0 001.366-1.218l.044-.065.012-.02-1.71-1.784z" fill="url(#lobe-icons-meta-9-_R_0_)"></path><path d="M19.92 17.393c-.262 0-.492-.039-.718-.14l-.798 2.522c.449.153.927.222 1.46.222.492 0 .943-.073 1.352-.215l-.78-2.462c-.167.05-.341.075-.517.073z" fill="url(#lobe-icons-meta-10-_R_0_)"></path><path d="M18.323 16.534l-.014-.017-1.836 1.914.016.017c.637.682 1.246 1.105 1.937 1.337l.797-2.52c-.291-.125-.573-.353-.9-.731z" fill="url(#lobe-icons-meta-11-_R_0_)"></path><path d="M18.309 16.515c-.55-.642-1.232-1.712-2.303-3.44l-1.396-2.336-.011-.02-1.62 2.438.012.02.989 1.668c.959 1.61 1.74 2.774 2.493 3.585l.016.016 1.834-1.914a2.353 2.353 0 01-.014-.017z" fill="url(#lobe-icons-meta-12-_R_0_)"></path><defs><linearGradient id="lobe-icons-meta-0-_R_0_" x1="75.897%" x2="26.312%" y1="89.199%" y2="12.194%"><stop offset=".06%" stop-color="#0867DF"></stop><stop offset="45.39%" stop-color="#0668E1"></stop><stop offset="85.91%" stop-color="#0064E0"></stop></linearGradient><linearGradient id="lobe-icons-meta-1-_R_0_" x1="21.67%" x2="97.068%" y1="75.874%" y2="23.985%"><stop offset="13.23%" stop-color="#0064DF"></stop><stop offset="99.88%" stop-color="#0064E0"></stop></linearGradient><linearGradient id="lobe-icons-meta-2-_R_0_" x1="38.263%" x2="60.895%" y1="89.127%" y2="16.131%"><stop offset="1.47%" stop-color="#0072EC"></stop><stop offset="68.81%" stop-color="#0064DF"></stop></linearGradient><linearGradient id="lobe-icons-meta-3-_R_0_" x1="47.032%" x2="52.15%" y1="90.19%" y2="15.745%"><stop offset="7.31%" stop-color="#007CF6"></stop><stop offset="99.43%" stop-color="#0072EC"></stop></linearGradient><linearGradient id="lobe-icons-meta-4-_R_0_" x1="52.155%" x2="47.591%" y1="58.301%" y2="37.004%"><stop offset="7.31%" stop-color="#007FF9"></stop><stop offset="100%" stop-color="#007CF6"></stop></linearGradient><linearGradient id="lobe-icons-meta-5-_R_0_" x1="37.689%" x2="61.961%" y1="12.502%" y2="63.624%"><stop offset="7.31%" stop-color="#007FF9"></stop><stop offset="100%" stop-color="#0082FB"></stop></linearGradient><linearGradient id="lobe-icons-meta-6-_R_0_" x1="34.808%" x2="62.313%" y1="68.859%" y2="23.174%"><stop offset="27.99%" stop-color="#007FF8"></stop><stop offset="91.41%" stop-color="#0082FB"></stop></linearGradient><linearGradient id="lobe-icons-meta-7-_R_0_" x1="43.762%" x2="57.602%" y1="6.235%" y2="98.514%"><stop offset="0%" stop-color="#0082FB"></stop><stop offset="99.95%" stop-color="#0081FA"></stop></linearGradient><linearGradient id="lobe-icons-meta-8-_R_0_" x1="60.055%" x2="39.88%" y1="4.661%" y2="69.077%"><stop offset="6.19%" stop-color="#0081FA"></stop><stop offset="100%" stop-color="#0080F9"></stop></linearGradient><linearGradient id="lobe-icons-meta-9-_R_0_" x1="30.282%" x2="61.081%" y1="59.32%" y2="33.244%"><stop offset="0%" stop-color="#027AF3"></stop><stop offset="100%" stop-color="#0080F9"></stop></linearGradient><linearGradient id="lobe-icons-meta-10-_R_0_" x1="20.433%" x2="82.112%" y1="50.001%" y2="50.001%"><stop offset="0%" stop-color="#0377EF"></stop><stop offset="99.94%" stop-color="#0279F1"></stop></linearGradient><linearGradient id="lobe-icons-meta-11-_R_0_" x1="40.303%" x2="72.394%" y1="35.298%" y2="57.811%"><stop offset=".19%" stop-color="#0471E9"></stop><stop offset="100%" stop-color="#0377EF"></stop></linearGradient><linearGradient id="lobe-icons-meta-12-_R_0_" x1="32.254%" x2="68.003%" y1="19.719%" y2="84.908%"><stop offset="27.65%" stop-color="#0867DF"></stop><stop offset="100%" stop-color="#0471E9"></stop></linearGradient></defs></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg height="1em" style="flex:none;line-height:1" viewBox="0 0 24 24" width="1em" xmlns="http://www.w3.org/2000/svg"><title>Mistral</title><path d="M3.428 3.4h3.429v3.428H3.428V3.4zm13.714 0h3.43v3.428h-3.43V3.4z" fill="gold"></path><path d="M3.428 6.828h6.857v3.429H3.429V6.828zm10.286 0h6.857v3.429h-6.857V6.828z" fill="#FFAF00"></path><path d="M3.428 10.258h17.144v3.428H3.428v-3.428z" fill="#FF8205"></path><path d="M3.428 13.686h3.429v3.428H3.428v-3.428zm6.858 0h3.429v3.428h-3.429v-3.428zm6.856 0h3.43v3.428h-3.43v-3.428z" fill="#FA500F"></path><path d="M0 17.114h10.286v3.429H0v-3.429zm13.714 0H24v3.429H13.714v-3.429z" fill="#E10500"></path></svg>
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg fill="#1FB8CD" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Perplexity</title><path d="M22.3977 7.0896h-2.3106V.0676l-7.5094 6.3542V.1577h-1.1554v6.1966L4.4904 0v7.0896H1.6023v10.3976h2.8882V24l6.932-6.3591v6.2005h1.1554v-6.0469l6.9318 6.1807v-6.4879h2.8882V7.0896zm-3.4657-4.531v4.531h-5.355l5.355-4.531zm-13.2862.0676 4.8691 4.4634H5.6458V2.6262zM2.7576 16.332V8.245h7.8476l-6.1149 6.1147v1.9723H2.7576zm2.8882 5.0404v-3.8852h.0001v-2.6488l5.7763-5.7764v7.0111l-5.7764 5.2993zm12.7086.0248-5.7766-5.1509V9.0618l5.7766 5.7766v6.5588zm2.8882-5.0652h-1.733v-1.9723L13.3948 8.245h7.8478v8.087z"/></svg>
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
<svg width="100" height="100" viewBox="0 0 100 100" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<mask id="mask0" mask-type="alpha" maskUnits="userSpaceOnUse" x="0" y="0" width="100" height="100">
|
|
3
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M70.9119 99.3171C72.4869 99.9307 74.2828 99.8914 75.8725 99.1264L96.4608 89.2197C98.6242 88.1787 100 85.9892 100 83.5872V16.4133C100 14.0113 98.6243 11.8218 96.4609 10.7808L75.8725 0.873756C73.7862 -0.130129 71.3446 0.11576 69.5135 1.44695C69.252 1.63711 69.0028 1.84943 68.769 2.08341L29.3551 38.0415L12.1872 25.0096C10.589 23.7965 8.35363 23.8959 6.86933 25.2461L1.36303 30.2549C-0.452552 31.9064 -0.454633 34.7627 1.35853 36.417L16.2471 50.0001L1.35853 63.5832C-0.454633 65.2374 -0.452552 68.0938 1.36303 69.7453L6.86933 74.7541C8.35363 76.1043 10.589 76.2037 12.1872 74.9905L29.3551 61.9587L68.769 97.9167C69.3925 98.5406 70.1246 99.0104 70.9119 99.3171ZM75.0152 27.2989L45.1091 50.0001L75.0152 72.7012V27.2989Z" fill="white"/>
|
|
4
|
+
</mask>
|
|
5
|
+
<g mask="url(#mask0)">
|
|
6
|
+
<path d="M96.4614 10.7962L75.8569 0.875542C73.4719 -0.272773 70.6217 0.211611 68.75 2.08333L1.29858 63.5832C-0.515693 65.2373 -0.513607 68.0937 1.30308 69.7452L6.81272 74.754C8.29793 76.1042 10.5347 76.2036 12.1338 74.9905L93.3609 13.3699C96.086 11.3026 100 13.2462 100 16.6667V16.4275C100 14.0265 98.6246 11.8378 96.4614 10.7962Z" fill="#0065A9"/>
|
|
7
|
+
<g filter="url(#filter0_d)">
|
|
8
|
+
<path d="M96.4614 89.2038L75.8569 99.1245C73.4719 100.273 70.6217 99.7884 68.75 97.9167L1.29858 36.4169C-0.515693 34.7627 -0.513607 31.9063 1.30308 30.2548L6.81272 25.246C8.29793 23.8958 10.5347 23.7964 12.1338 25.0095L93.3609 86.6301C96.086 88.6974 100 86.7538 100 83.3334V83.5726C100 85.9735 98.6246 88.1622 96.4614 89.2038Z" fill="#007ACC"/>
|
|
9
|
+
</g>
|
|
10
|
+
<g filter="url(#filter1_d)">
|
|
11
|
+
<path d="M75.8578 99.1263C73.4721 100.274 70.6219 99.7885 68.75 97.9166C71.0564 100.223 75 98.5895 75 95.3278V4.67213C75 1.41039 71.0564 -0.223106 68.75 2.08329C70.6219 0.211402 73.4721 -0.273666 75.8578 0.873633L96.4587 10.7807C98.6234 11.8217 100 14.0112 100 16.4132V83.5871C100 85.9891 98.6234 88.1786 96.4586 89.2196L75.8578 99.1263Z" fill="#1F9CF0"/>
|
|
12
|
+
</g>
|
|
13
|
+
<g style="mix-blend-mode:overlay" opacity="0.25">
|
|
14
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M70.8511 99.3171C72.4261 99.9306 74.2221 99.8913 75.8117 99.1264L96.4 89.2197C98.5634 88.1787 99.9392 85.9892 99.9392 83.5871V16.4133C99.9392 14.0112 98.5635 11.8217 96.4001 10.7807L75.8117 0.873695C73.7255 -0.13019 71.2838 0.115699 69.4527 1.44688C69.1912 1.63705 68.942 1.84937 68.7082 2.08335L29.2943 38.0414L12.1264 25.0096C10.5283 23.7964 8.29285 23.8959 6.80855 25.246L1.30225 30.2548C-0.513334 31.9064 -0.515415 34.7627 1.29775 36.4169L16.1863 50L1.29775 63.5832C-0.515415 65.2374 -0.513334 68.0937 1.30225 69.7452L6.80855 74.754C8.29285 76.1042 10.5283 76.2036 12.1264 74.9905L29.2943 61.9586L68.7082 97.9167C69.3317 98.5405 70.0638 99.0104 70.8511 99.3171ZM74.9544 27.2989L45.0483 50L74.9544 72.7012V27.2989Z" fill="url(#paint0_linear)"/>
|
|
15
|
+
</g>
|
|
16
|
+
</g>
|
|
17
|
+
<defs>
|
|
18
|
+
<filter id="filter0_d" x="-8.39411" y="15.8291" width="116.727" height="92.2456" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
|
|
19
|
+
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
|
|
20
|
+
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/>
|
|
21
|
+
<feOffset/>
|
|
22
|
+
<feGaussianBlur stdDeviation="4.16667"/>
|
|
23
|
+
<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0"/>
|
|
24
|
+
<feBlend mode="overlay" in2="BackgroundImageFix" result="effect1_dropShadow"/>
|
|
25
|
+
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow" result="shape"/>
|
|
26
|
+
</filter>
|
|
27
|
+
<filter id="filter1_d" x="60.4167" y="-8.07558" width="47.9167" height="116.151" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
|
|
28
|
+
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
|
|
29
|
+
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/>
|
|
30
|
+
<feOffset/>
|
|
31
|
+
<feGaussianBlur stdDeviation="4.16667"/>
|
|
32
|
+
<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0"/>
|
|
33
|
+
<feBlend mode="overlay" in2="BackgroundImageFix" result="effect1_dropShadow"/>
|
|
34
|
+
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow" result="shape"/>
|
|
35
|
+
</filter>
|
|
36
|
+
<linearGradient id="paint0_linear" x1="49.9392" y1="0.257812" x2="49.9392" y2="99.7423" gradientUnits="userSpaceOnUse">
|
|
37
|
+
<stop stop-color="white"/>
|
|
38
|
+
<stop offset="1" stop-color="white" stop-opacity="0"/>
|
|
39
|
+
</linearGradient>
|
|
40
|
+
</defs>
|
|
41
|
+
</svg>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
<svg width="1024" height="1024" viewBox="0 0 1024 1024" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<g clip-path="url(#clip0_109_63)">
|
|
3
|
+
<rect width="1024" height="1024" fill="#F9F3E9"/>
|
|
4
|
+
<path d="M897.246 286.869H889.819C850.735 286.808 819.017 318.46 819.017 357.539V515.589C819.017 547.15 792.93 572.716 761.882 572.716C743.436 572.716 725.02 563.433 714.093 547.85L552.673 317.304C539.28 298.16 517.486 286.747 493.895 286.747C457.094 286.747 423.976 318.034 423.976 356.657V515.619C423.976 547.181 398.103 572.746 366.842 572.746C348.335 572.746 329.949 563.463 319.021 547.881L138.395 289.882C134.316 284.038 125.154 286.93 125.154 294.052V431.892C125.154 438.862 127.285 445.619 131.272 451.34L309.037 705.2C319.539 720.204 335.033 731.344 352.9 735.392C397.616 745.557 438.77 711.135 438.77 667.278V508.406C438.77 476.845 464.339 451.279 495.904 451.279H495.995C515.02 451.279 532.857 460.562 543.785 476.145L705.235 706.661C718.659 725.835 739.327 737.218 763.983 737.218C801.606 737.218 833.841 705.9 833.841 667.308V508.376C833.841 476.815 859.41 451.249 890.975 451.249H897.276C901.233 451.249 904.43 448.053 904.43 444.097V294.021C904.43 290.065 901.233 286.869 897.276 286.869H897.246Z" fill="#0B100F"/>
|
|
5
|
+
</g>
|
|
6
|
+
<defs>
|
|
7
|
+
<clipPath id="clip0_109_63">
|
|
8
|
+
<rect width="1024" height="1024" rx="100" fill="white"/>
|
|
9
|
+
</clipPath>
|
|
10
|
+
</defs>
|
|
11
|
+
</svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{V as C,t as a}from"./index-Cx7vZJHL.js";import{j as i}from"./vendor-react-CKJs5o3c.js";const l=["red-500","orange-500","amber-500","green-700","teal-700","sky-500","sky-700","blue-500","indigo-700","violet-500"];function y(e){const r=String(e||"ai").trim().toLowerCase();let s=2166136261;for(let t=0;t<r.length;t+=1)s^=r.charCodeAt(t),s=Math.imul(s,16777619);const o=l[(s>>>0)%l.length];return C[o].toLowerCase()}function $(e){const[r,s=""]=e.split("#"),o=r.includes("?")?"&":"?";return`${r}${o}taskforceCloud=1${s?`#${s}`:""}`}function A(e){return/^https?:\/\//i.test(e)?e:$(e)}function N({name:e,username:r,subtitle:s,avatar:o,selected:t,disabled:n=!1,onSelect:c,ariaLabel:d,avatarVariant:u="portrait",avatarClassName:f="",avatarStyle:p,className:m="",topUtility:h,bottomUtility:P,footer:x}){return i.jsxs("button",{type:"button",className:`${a.aiProfileGroup} ${t?a.aiProfileGroupSelected:""} ${m}`.trim(),onClick:c,disabled:n,"aria-label":d,"aria-pressed":t,children:[h,P,i.jsxs("span",{className:a.aiProfileGroupHeader,children:[i.jsx("span",{className:`${a.aiProfileGroupAvatar} ${u==="logo"?a.aiProfileGroupAvatarLogo:""} ${f}`.trim(),style:p,"aria-hidden":"true",children:o}),i.jsxs("span",{className:a.aiProfileGroupIdentity,children:[i.jsx("span",{className:a.aiProfileName,children:e}),r?i.jsxs("span",{className:a.aiProfileHandle,children:["@",r]}):null,i.jsx("span",{className:a.aiProfileRole,children:s}),x]})]})]})}export{N as A,y as a,l as b,A as r,$ as w};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as f,j as a}from"./vendor-react-CKJs5o3c.js";import{ac as Qe,ad as re,O as Ue,ae as ea,af as W,t as r,U as aa,V as ra,ag as ta,ah as Re,W as ia,ai as oa,aj as te,ak as Me,al as la,Y as sa,X as Ee,$ as b,a0 as ke}from"./index-Cx7vZJHL.js";import{A as na,b as ca,r as Ce}from"./AiIdentityRosterCard-DB1BLO_j.js";import{ae as da,Z as fa,a4 as ua,h as pa,q as J,B as Le,ad as ma,ai as va}from"./vendor-icons-B8ZNsH1g.js";import"./vendor-markdown-_lhNCyq-.js";import"./vendor-dnd-CJ-AjP-Y.js";import"./vendor-router-AqJMU8Lz.js";const ga=["chat_app","ide","cli","coding_tool","taskforce_agent","agent","unclassified"];function L(o){return typeof o.avatarUrl=="string"&&o.avatarUrl.trim().length>0}function ie(o){return o?Ee(o.avatarUrl,o.avatarRevision,o.avatarUpdatedAt):""}function ha(o){return o?Ee(o.avatarSourceUrl,o.avatarRevision,o.avatarUpdatedAt):""}function ya(o){return o.find(L)||o[0]}function Pa({profile:o,className:g=""}){const A=ie(o),$=W(o),{activeImageUrl:T,handleImageError:Y}=sa(A,$);return T?a.jsx("img",{src:T,alt:"",className:g,onError:Y}):a.jsx(Le,{size:22})}function K(o){const g=te(o);return g?`taskforce-agent:${g}`:`${o.seatScope||"unknown"}:${o.name.trim().toLowerCase()}`}function oe(o){const g=o.providerMetadata?.taskforce;return!!(g&&typeof g=="object"&&!Array.isArray(g)&&String(g.taskforceAgentId||"").trim())}function Aa(o){return oe(o)?"taskforce_agent":Me(o.surfaceType)}function Te(o){return o==="taskforce_agent"?"Taskforce Agents":la(o)}function Sa(o){return oe(o)?"Taskforce Agent":o.surfaceType?Re(o.surfaceType):""}function xa(o){const g=Math.max(0,o-1);return`${g} duplicate${g===1?"":"s"}`}function we(o){return!o||typeof o!="object"?null:{used:Math.max(0,Number(o.used||0)),limit:o.limit===null||o.limit===void 0?null:Math.max(0,Number(o.limit||0)),remaining:o.remaining===null||o.remaining===void 0?null:Math.max(0,Number(o.remaining||0))}}function De(o,g){const A=g?.variant==="inline"?`${r.aiProfileSeatScopeIcon} ${r.aiProfileSeatScopeIconInline}`:g?.variant==="detail"?`${r.aiProfileSeatScopeIcon} ${r.aiProfileSeatScopeIconDetail}`:r.aiProfileSeatScopeIcon;return o==="cloud_metered"?a.jsx("span",{className:`${A} ${r.aiProfileSeatScopeIconCloud}`,title:"Cloud MCP","aria-label":"Cloud MCP",children:a.jsx(ma,{size:20})}):o==="local_unmetered"?a.jsx("span",{className:`${A} ${r.aiProfileSeatScopeIconLocal}`,title:"Local MCP","aria-label":"Local MCP",children:a.jsx(va,{size:20})}):null}function Ta({workspaceId:o,runtimeMode:g="local",cloudAuthConfigured:A=!1,authSessionResolved:$=!1,isAuthenticated:T=!1,cloudAiProfileSeatUsage:Y=null,agentTrayOpen:q=!1,onCloseAgentTray:$e,mcpSettingsNode:le=null,resolveCloudAuthUrl:B,theme:Be="dark",onNotice:w}){const[N,O]=f.useState([]),[Oe,Fe]=f.useState(null),[Ge,se]=f.useState(!1),[S,F]=f.useState(null),[G,D]=f.useState(null),[ne,X]=f.useState(null),[_e,ce]=f.useState(!1),[U,_]=f.useState(null),[de,fe]=f.useState(null),[ue,z]=f.useState(!1),[ze,P]=f.useState(null),[He,x]=f.useState(null),[R,pe]=f.useState(null),[me,k]=f.useState({}),[ve,ge]=f.useState(!1),[Z,he]=f.useState(!1),[ye,Pe]=f.useState(null),C=f.useCallback(async()=>{if(o){se(!0);try{const e=`/api/taskforce/workspace/assignee-options?workspaceId=${encodeURIComponent(o)}&kind=agent`,t=await fetch(e,{credentials:"include"}),l=t.ok?await t.json().catch(()=>({})):{},s=we(l?.aiProfileSeatUsage),d=Array.isArray(l?.assignees)?l.assignees.filter(i=>i.kind==="agent").map(i=>({id:String(i.value||""),name:String(i.label||i.value||"Unknown Agent"),username:String(i.username||i.value||""),icon:String(i.icon||"Bot"),color:String(i.color||"#6B7280"),colorSource:typeof i.colorSource=="string"?i.colorSource:null,colorUpdatedAt:typeof i.colorUpdatedAt=="string"?i.colorUpdatedAt:null,avatarUrl:typeof i.avatarUrl=="string"?i.avatarUrl:null,avatarSourceUrl:typeof i.avatarSourceUrl=="string"?i.avatarSourceUrl:null,avatarRevision:Number.isFinite(Number(i.avatarRevision))?Math.max(0,Math.floor(Number(i.avatarRevision))):0,avatarUpdatedAt:typeof i.avatarUpdatedAt=="string"?i.avatarUpdatedAt:null,kind:String(i.kind||"agent"),description:typeof i.description=="string"?i.description:null,role:typeof i.role=="string"?i.role:null,provider:typeof i.provider=="string"?i.provider:null,model:typeof i.model=="string"?i.model:null,surfaceType:re(i.surfaceType),seatScope:Qe(i.seatScope),providerMetadata:i.providerMetadata&&typeof i.providerMetadata=="object"&&!Array.isArray(i.providerMetadata)?i.providerMetadata:null,archivedAt:typeof i.archivedAt=="string"?i.archivedAt:null,createdAt:String(i.createdAt||""),updatedAt:String(i.updatedAt||i.createdAt||""),lastActiveAt:typeof i.lastActiveAt=="string"?i.lastActiveAt:null})):[];O(d),Fe(s),D(i=>i&&!d.some(u=>u.id===i.profileId)?null:i),X(i=>i&&!d.some(u=>u.id===i.profileId)?null:i)}finally{se(!1)}}},[o]);f.useEffect(()=>{C()},[C]),f.useEffect(()=>{const e=t=>{const l=t.detail;(String(l?.workspaceId||"").trim()||"default")===o&&l?.origin!=="ai-profiles-module"&&C()};return window.addEventListener(Ue,e),()=>window.removeEventListener(Ue,e)},[C,o]);const H=f.useMemo(()=>{const e=new Map;for(const t of N){const l=Aa(t);e.has(l)||e.set(l,new Map);const s=e.get(l),d=K(t);s.has(d)||s.set(d,[]),s.get(d).push(t)}return ga.map(t=>({section:t,label:Te(t),groups:Array.from(e.get(t)?.entries()||[]).map(([l,s])=>({groupId:`${t}:${l}`,section:t,sectionLabel:Te(t),profiles:s,primaryProfile:ya(s)}))})).filter(t=>t.groups.length>0)},[N]),j=f.useMemo(()=>H.flatMap(e=>e.groups),[H]),n=f.useMemo(()=>j.find(e=>e.groupId===U)||j[0]||null,[j,U]),p=f.useMemo(()=>N.find(e=>e.id===de)||null,[N,de]),Ae=p&&me[p.id]||null,Se=n&&me[n.primaryProfile.id]||null;f.useEffect(()=>{if(!j.length){U!==null&&_(null);return}(!U||!j.some(e=>e.groupId===U))&&_(j[0].groupId)},[j,U]);const Ve=async(e,t)=>{D(null);try{const l=await fetch("/api/taskforce/workspace/ai-profiles/merge",{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({keepId:e,mergeId:t})}),s=await l.json().catch(()=>({}));if(!l.ok){w?.(String(s?.error||"Failed to merge AI profiles."),"error");return}F(null),w?.("AI profiles merged.","success"),await C(),b({workspaceId:o,profileId:e,reason:"merge",origin:"ai-profiles-module"})}catch{w?.("Failed to merge AI profiles.","error")}},xe=async e=>{if(window.confirm(`Remove ${e.name} from the active roster? This frees an AI profile seat and preserves task and comment history.`)){D(null);try{const l=await fetch("/api/taskforce/workspace/ai-profiles/archive",{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({profileId:e.id,reason:"manual_archive"})}),s=await l.json().catch(()=>({}));if(!l.ok){D({profileId:e.id,message:String(s?.error||"Failed to remove AI profile from roster.")});return}(S?.keepId===e.id||S?.mergeId===e.id)&&F(null),w?.("AI profile removed from active roster.","success"),await C(),b({workspaceId:o,profileId:e.id,reason:"archive",origin:"ai-profiles-module"})}catch{D({profileId:e.id,message:"Failed to remove AI profile from roster."})}}},Je=async(e,t)=>{const l=re(t),s=new Set(e.profiles.map(u=>u.surfaceType??"")),d=l??"";if(s.size===1&&s.has(d))return;ce(!0),X(null);const i=[];try{for(const c of e.profiles){const m=await fetch("/api/taskforce/workspace/ai-profiles/surface-type",{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({profileId:c.id,surfaceType:l})}),v=await m.json().catch(()=>({}));if(!m.ok||!v?.profile)throw new Error(String(v?.error||"Failed to update AI profile category."));const I=v.profile;i.push({...c,surfaceType:re(I.surfaceType),updatedAt:typeof I.updatedAt=="string"?I.updatedAt:c.updatedAt})}const u=new Map(i.map(c=>[c.id,c]));O(c=>c.map(m=>u.get(m.id)||m));const h=u.get(e.primaryProfile.id)||{...e.primaryProfile,surfaceType:l},y=Me(h.surfaceType);_(`${y}:${K(h)}`),w?.("AI profile category updated.","success");for(const c of i)b({workspaceId:o,profileId:c.id,reason:"update",origin:"ai-profiles-module"})}catch(u){X({profileId:e.primaryProfile.id,message:String(u?.message||"Failed to update AI profile category.")})}finally{ce(!1)}},je=async(e,t,l=!1)=>{he(!0),Pe(null);try{const s=K(e.primaryProfile),d=N.filter(c=>K(c)===s),i=await fetch("/api/taskforce/workspace/ai-profiles/color",{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({profileIds:d.map(c=>c.id),color:t,reset:l})}),u=await i.text();let h={};try{h=u?JSON.parse(u):{}}catch{h={}}if(!i.ok){const c=i.status===404?"Color updates are unavailable in the running Taskforce server. Restart Taskforce and try again.":`Failed to update AI profile color (HTTP ${i.status}).`;throw new Error(String(h.error||c))}if(!Array.isArray(h.profiles))throw new Error("Taskforce returned an invalid response while updating the AI profile color.");const y=new Map(h.profiles.map(c=>[String(c.id),c]));O(c=>c.map(m=>{const v=y.get(m.id);return v?{...m,color:String(v.color||m.color),colorSource:v.colorSource??m.colorSource,colorUpdatedAt:v.colorUpdatedAt??m.colorUpdatedAt,updatedAt:v.updatedAt??m.updatedAt}:m})),ge(!1);for(const c of d)b({workspaceId:o,profileId:c.id,reason:"update",origin:"ai-profiles-module"})}catch(s){Pe(String(s?.message||"Failed to update AI profile color."))}finally{he(!1)}},Ie=e=>new Promise((t,l)=>{const s=new FileReader;s.onload=()=>t(String(s.result||"")),s.onerror=()=>l(new Error("Failed to read image file.")),s.readAsDataURL(e)}),Q=e=>{const t=String(e?.id||"").trim();t&&O(l=>l.map(s=>s.id===t?{...s,avatarUrl:typeof e.avatarUrl=="string"?e.avatarUrl:null,avatarSourceUrl:typeof e.avatarSourceUrl=="string"?e.avatarSourceUrl:null,avatarRevision:Number.isFinite(Number(e.avatarRevision))?Math.max(0,Math.floor(Number(e.avatarRevision))):s.avatarRevision,avatarUpdatedAt:typeof e.avatarUpdatedAt=="string"?e.avatarUpdatedAt:s.avatarUpdatedAt,updatedAt:typeof e.updatedAt=="string"?e.updatedAt:s.updatedAt}:s))},Ke=async(e,t,l,s=!1)=>{const d=await Ie(t),i=l?await Ie(l):null,u={profileId:e,preserveExistingSource:s,displayImage:{dataUrl:d,mimeType:t.type||"application/octet-stream",originalName:t.name||"display-avatar"}};l&&i&&(u.sourceImage={dataUrl:i,mimeType:l.type||"application/octet-stream",originalName:l.name||"source-avatar"});const h=await fetch("/api/taskforce/workspace/ai-profiles/avatar/upload",{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify(u)}),y=await h.json().catch(()=>({}));if(!h.ok||!y?.profile)throw new Error(String(y?.error||"Failed to update AI profile avatar."));Q(y.profile),b({workspaceId:o,profileId:e,reason:"avatar",origin:"ai-profiles-module"})},We=async e=>{const t=await fetch("/api/taskforce/workspace/ai-profiles/avatar",{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({profileId:e,avatarUrl:null,avatarSourceUrl:null})}),l=await t.json().catch(()=>({}));if(!t.ok||!l?.profile)throw new Error(String(l?.error||"Failed to update AI profile avatar."));Q(l.profile),b({workspaceId:o,profileId:e,reason:"avatar",origin:"ai-profiles-module"})},Ye=async e=>{if(R)return!1;const t=te(e),l=L(e);if(l&&!window.confirm(`Replace the existing avatar for ${e.name}?`))return!1;const s=t?"":window.prompt("Optional visual direction (300 characters maximum). Leave blank to use the profile details.","");if(s===null)return!1;const d=g==="local";if(d&&(!A||!$||!T||!B))return P("Sign in to Taskforce Cloud to generate profile avatars."),x(null),!1;pe(e.id),P(null),x(null),k(i=>({...i,[e.id]:{error:null,notice:null}}));try{const i=t?`/api/taskforce/agents/${encodeURIComponent(t)}/avatar/generate`:"/api/taskforce/workspace/ai-profiles/avatar/generate",u=d&&B?B(i):i,h=await fetch(u,{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify(t?{workspaceId:o}:{workspaceId:o,profileId:e.id,visualDirection:s.slice(0,300),replaceExisting:l})}),y=await h.text().catch(()=>"");let c={};if(y&&!/^\s*(?:<!doctype\s+html|<html\b)/i.test(y))try{c=JSON.parse(y)}catch{c={}}if(!h.ok||!c?.profile&&!c?.agent)throw new Error(String(c?.error||(h.status?`Unable to generate avatar. HTTP ${h.status}.`:"Unable to generate avatar.")));const m=c.profile||{id:e.id,avatarUrl:c.agent?.avatarUrl??null,avatarSourceUrl:c.agent?.avatarSourceUrl??null,avatarRevision:c.agent?.avatarRevision??0,avatarUpdatedAt:c.agent?.avatarUpdatedAt??null},v=d&&B?{...m,avatarUrl:m.avatarUrl?Ce(m.avatarUrl):m.avatarUrl,avatarSourceUrl:m.avatarSourceUrl?Ce(m.avatarSourceUrl):m.avatarSourceUrl}:m;return Q(v),k(d?I=>({...I,[e.id]:{error:null,notice:`Generated photo for ${e.name} was saved in Taskforce Cloud. The local copy will be retained when sync runs.`}}):I=>({...I,[e.id]:{error:null,notice:`Generated photo for ${e.name} was saved.`}})),b({workspaceId:o,profileId:e.id,reason:"avatar",origin:"ai-profiles-module",...t?{taskforceAgentAvatar:{agentId:t,avatarUrl:typeof v.avatarUrl=="string"?v.avatarUrl:null,avatarSourceUrl:typeof v.avatarSourceUrl=="string"?v.avatarSourceUrl:null,avatarRevision:Number.isFinite(Number(v.avatarRevision))?Math.max(0,Math.floor(Number(v.avatarRevision))):0,avatarUpdatedAt:typeof v.avatarUpdatedAt=="string"?v.avatarUpdatedAt:null}}:{}}),!0}catch(i){return k(u=>({...u,[e.id]:{error:String(i?.message||"Unable to generate profile avatar."),notice:null}})),!1}finally{pe(null)}},qe=async(e,t,l)=>{if(!p)return!1;if(!e.type.startsWith("image/"))return P("AI profile photo must be an image file."),!1;z(!0),P(null),x(null),k(s=>{const d={...s};return delete d[p.id],d});try{const s=await ke(e,{maxBytes:5242880});if(s.exceededLimit)throw new Error(e.type==="image/gif"?"Animated GIF AI profile photos must be 5 MB or smaller.":"AI profile photo must be 5 MB or smaller.");const d=s.file;let i=null;if(t){const u=await ke(t,{maxBytes:5242880});if(u.exceededLimit)throw new Error(t.type==="image/gif"?"Animated GIF AI profile photos must be 5 MB or smaller.":"AI profile source photo must be 5 MB or smaller.");i=u.file}return await Ke(p.id,d,i,l?.preserveExistingSource===!0),!0}catch(s){return P(String(s?.message||"Failed to update AI profile photo.")),!1}finally{z(!1)}},Xe=async()=>{if(p){z(!0),P(null),x(null),k(e=>{const t={...e};return delete t[p.id],t});try{await We(p.id),x("Profile photo removed.")}catch(e){P(String(e?.message||"Failed to remove AI profile photo."))}finally{z(!1)}}},M=e=>{const t=String(e||"").trim();if(!t)return"Unknown";const l=Date.parse(t);return Number.isFinite(l)?new Date(l).toLocaleString(void 0,{dateStyle:"medium",timeStyle:"short"}):t},be=f.useMemo(()=>{if(!n)return{attributes:[],dates:[]};const e=n.primaryProfile,t=l=>l||"Not set";return{attributes:[{label:"Category",value:Sa(e)},{label:"Connection",value:e.seatScope?ea(e.seatScope):""},{label:"Provider",value:e.provider||""},{label:"Model",value:e.model||""}].map(l=>({...l,value:t(l.value)})),dates:[{label:"Status",value:e.archivedAt?"Retired":"Active"},{label:"Recruited",value:M(e.createdAt)},{label:"Last updated",value:M(e.updatedAt)},{label:"Last active",value:M(e.lastActiveAt)}].map(l=>({...l,value:t(l.value)}))}},[n]),Ze=!!n&&n.profiles.length>1,E=!!n&&!L(n.primaryProfile)&&!!W(n.primaryProfile),Ne=A&&$&&!T,V=A?we(Y):Oe,ee=Ne?"Log into account for Cloud AI Profiles":V?`${V.used}/${V.limit===null?"Unlimited":V.limit}`:null,ae=!!le;return a.jsxs("section",{className:`${r.agentsModuleRoot} ${ae?r.agentsModuleWithTray:""} ${ae&&q?r.agentsModuleTrayOpen:""}`.trim(),children:[ae&&a.jsxs("aside",{className:`${r.agentTrayPanel} ${q?r.agentTrayPanelOpen:""}`.trim(),"aria-label":"AI Profile MCP settings tray","aria-hidden":!q,children:[a.jsxs("div",{className:r.agentTrayHeader,children:[a.jsxs("span",{className:r.agentTrayTitle,children:[a.jsx(da,{size:14}),"MCP Settings"]}),a.jsx("button",{type:"button",className:"tf-control-icon",onClick:$e,title:"Collapse AI Profile tray","aria-label":"Collapse AI Profile tray",children:a.jsx(fa,{size:16})})]}),a.jsx("div",{className:`${r.agentTrayContent} tf-scrollbar tf-scrollbar--track-transparent`,children:a.jsx("div",{className:r.agentTrayContentInner,children:le})})]}),a.jsx("div",{className:r.agentsModuleContent,children:a.jsxs("div",{className:r.aiProfilesExplorer,children:[a.jsxs("aside",{className:r.aiProfilesRosterPanel,"aria-label":"AI profile roster",children:[a.jsx("div",{className:r.taskforceAgentRosterHeader,children:a.jsxs("span",{className:r.taskforceAgentRosterTitle,children:[a.jsx(ua,{size:14}),"AI Profiles"]})}),ee&&a.jsx("div",{className:r.aiProfilesRosterSummary,children:a.jsx("div",{className:r.aiProfileSeatSummary,children:Ne?ee:`Registered Cloud AI Profiles: ${ee}`})}),Ge?a.jsxs("div",{className:r.aiProfilesRosterState,role:"status","aria-live":"polite",children:[a.jsx(pa,{size:13,className:r.spinner})," Loading profiles…"]}):N.length===0?a.jsx("div",{className:r.aiProfilesRosterState,children:"No AI profiles registered yet."}):H.length>0?a.jsx("div",{className:`${r.aiProfilesListPane} tf-scrollbar tf-scrollbar--track-transparent tf-tray-scroll-viewport`,children:a.jsx("div",{className:r.aiProfilesList,children:H.map(e=>a.jsxs("div",{className:r.aiProfilesSection,children:[a.jsx("div",{className:r.aiProfilesSectionHeader,children:e.label}),e.groups.map(t=>{const l=n?.groupId===t.groupId,s=t.primaryProfile,d=!L(s)&&!!W(s);return a.jsx(na,{name:s.name,username:s.username,subtitle:s.role||"Role not set",selected:l,onSelect:()=>_(t.groupId),avatarVariant:d?"logo":"portrait",avatar:a.jsx(Pa,{profile:s}),avatarStyle:{color:s.color},className:t.profiles.length>1?r.aiProfileGroupDuplicate:"",topUtility:De(s.seatScope),bottomUtility:a.jsx("span",{className:r.aiProfileGroupSignatureSwatch,style:{backgroundColor:s.color},title:`Signature color ${s.color}`,"aria-hidden":"true"}),footer:t.profiles.length>1?a.jsxs("span",{className:r.aiProfileDuplicateBadge,children:[a.jsx(J,{size:11})," ",xa(t.profiles.length)]}):null},t.groupId)})]},e.section))})}):null]}),a.jsx("main",{className:`${r.aiProfilesDetailViewport} tf-scrollbar`,"aria-label":"AI profile details",children:n&&a.jsx("div",{className:r.aiProfileDetailPane,children:a.jsxs("div",{className:r.aiProfileDetailCard,children:[De(n.primaryProfile.seatScope,{variant:"detail"}),a.jsxs("div",{className:r.aiProfileDetailHero,children:[a.jsx(aa,{label:"Edit AI profile photo",imageUrl:ie(n.primaryProfile),fallbackImageUrl:W(n.primaryProfile),fallback:a.jsx(Le,{size:38}),accentColor:E?null:n.primaryProfile.color,size:176,width:E?176:153,height:E?176:207,radius:E?0:6,editBadgeSize:28,editIconSize:14,loading:R===n.primaryProfile.id,loadingLabel:`Generating ${n.primaryProfile.name} photo`,error:!!Se?.error,errorLabel:Se?.error||"Profile photo generation failed",className:`${r.aiProfileDetailAvatar} ${E?r.aiProfileDetailAvatarLogo:""}`.trim(),onClick:()=>{P(null),x(null),fe(n.primaryProfile.id)}}),a.jsxs("div",{className:r.aiProfileDetailHeading,children:[a.jsx("div",{className:r.aiProfileDetailTitleRow,children:a.jsx("h5",{className:r.aiProfileDetailTitle,children:n.primaryProfile.name})}),a.jsxs("div",{className:r.aiProfileDetailMetaRow,children:[a.jsxs("span",{className:r.aiProfileDetailHandle,children:["@",n.primaryProfile.username]}),n.profiles.length>1&&a.jsxs("span",{className:r.aiProfileDetailLinkedCount,children:[n.profiles.length," linked"]})]}),a.jsxs("div",{className:r.aiProfileDetailRole,children:["Role: ",n.primaryProfile.role||"Not set"]}),n.primaryProfile.description&&a.jsx("div",{className:r.aiProfileDetailDescription,children:n.primaryProfile.description}),a.jsxs("div",{className:r.aiProfileSignatureColor,children:[a.jsx("span",{children:"Signature color"}),a.jsxs("button",{type:"button",className:r.aiProfileSignatureColorButton,onClick:()=>ge(e=>!e),disabled:Z,"aria-expanded":ve,"aria-label":"Change signature color",children:[a.jsx("span",{className:r.aiProfileSignatureSwatch,style:{backgroundColor:n.primaryProfile.color},"aria-hidden":"true"}),a.jsx("span",{children:n.primaryProfile.color})]})]}),ve&&a.jsxs("div",{className:r.aiProfileColorPicker,"aria-label":"Signature color options",children:[ca.map(e=>{const t=ra[e];return a.jsx("button",{type:"button",className:r.aiProfileColorOption,style:{backgroundColor:t},"aria-label":`Use ${e}`,"aria-pressed":n.primaryProfile.color.toLowerCase()===t.toLowerCase(),disabled:Z,onClick:()=>{je(n,t)}},e)}),a.jsx("button",{type:"button",className:r.secondaryHeaderBtn,disabled:Z,onClick:()=>{je(n,void 0,!0)},children:"Reset"})]}),ye&&a.jsx("div",{className:r.aiProfileInlineError,children:ye})]})]}),a.jsxs("div",{className:r.aiProfileDetailDataList,children:[a.jsx("div",{className:r.aiProfileDetailDataGroup,children:be.attributes.map(e=>a.jsxs("div",{className:r.aiProfileDetailDataRow,children:[a.jsx("span",{className:r.aiProfileDetailDataLabel,children:e.label}),e.label==="Category"&&!oe(n.primaryProfile)?a.jsx("span",{className:r.aiProfileDetailDataValue,children:a.jsxs("select",{className:r.aiProfileStatusSelect,"aria-label":"Agent category",value:n.primaryProfile.surfaceType??"",disabled:_e,onChange:t=>{Je(n,t.target.value)},children:[a.jsx("option",{value:"",children:"Unclassified"}),ta.map(t=>a.jsx("option",{value:t,children:Re(t)},t))]})}):a.jsx("span",{className:r.aiProfileDetailDataValue,children:e.value})]},e.label))}),a.jsx("div",{className:`${r.aiProfileDetailDataGroup} ${r.aiProfileDetailDateGroup}`,children:be.dates.map(e=>a.jsxs("div",{className:r.aiProfileDetailDataRow,children:[a.jsx("span",{className:r.aiProfileDetailDataLabel,children:e.label}),e.label==="Status"?a.jsx("span",{className:r.aiProfileDetailDataValue,children:a.jsxs("select",{className:r.aiProfileStatusSelect,"aria-label":"Agent roster status",value:n.primaryProfile.archivedAt?"retired":"active",onChange:t=>{t.target.value==="retire"&&xe(n.primaryProfile)},children:[a.jsx("option",{value:"active",children:"Active"}),n.primaryProfile.archivedAt?a.jsx("option",{value:"retired",children:"Retired"}):a.jsx("option",{value:"retire",children:"Retire from roster"})]})}):a.jsx("span",{className:r.aiProfileDetailDataValue,children:e.value})]},e.label))})]}),ne?.profileId===n.primaryProfile.id&&a.jsxs("div",{className:r.aiProfileInlineError,role:"alert",children:[a.jsx(J,{size:12}),a.jsx("span",{children:ne.message})]}),Ze?a.jsxs("div",{className:r.aiProfileInstanceSection,children:[a.jsxs("div",{className:r.aiProfileInstanceSectionHeader,children:[a.jsx("span",{children:"Profile instances"}),a.jsx("span",{className:r.settingsHint,children:"Choose a keeper here if duplicates need to be merged."})]}),a.jsx("div",{className:r.aiProfileInstanceList,children:n.profiles.map(e=>a.jsxs("div",{className:r.aiProfileInstanceCard,children:[a.jsxs("div",{className:r.aiProfileInstanceTopRow,children:[a.jsxs("div",{children:[a.jsxs("div",{className:r.aiProfileInstanceName,children:["@",e.username]}),a.jsx("div",{className:r.aiProfileIdChip,children:e.id})]}),S?.keepId===e.id&&a.jsx("span",{className:r.aiProfileKeepBadge,children:"Keeping"})]}),a.jsxs("div",{className:r.aiProfileInstanceMeta,children:[a.jsxs("span",{children:["Created ",M(e.createdAt)]}),a.jsxs("span",{children:["Updated ",M(e.updatedAt)]})]}),S?.keepId!==e.id&&a.jsx("button",{className:r.secondaryHeaderBtn,title:"Keep this profile, merge others into it",onClick:()=>{const t=n.profiles.find(l=>l.id!==e.id)?.id;t&&F({keepId:e.id,mergeId:t})},children:"Keep this"}),G?.profileId===e.id&&a.jsxs("div",{className:r.aiProfileInlineError,role:"alert",children:[a.jsx(J,{size:12}),a.jsx("span",{children:G.message})]}),a.jsx("button",{className:r.aiProfileDangerTextButton,title:"Remove this profile from the active roster",onClick:()=>{xe(e)},children:"Remove from roster"})]},e.id))}),S&&n.profiles.some(e=>e.id===S.keepId)&&a.jsxs("div",{className:r.aiProfileMergeActions,children:[a.jsx("button",{className:r.dangerBtn,onClick:()=>{Ve(S.keepId,S.mergeId)},children:"Merge duplicates"}),a.jsx("button",{className:r.secondaryHeaderBtn,onClick:()=>F(null),children:"Cancel"})]})]}):a.jsxs("div",{className:r.aiProfileIdFooter,children:[a.jsx("div",{className:r.aiProfileIdFooterValue,children:n.primaryProfile.id}),G?.profileId===n.primaryProfile.id&&a.jsxs("div",{className:r.aiProfileInlineError,role:"alert",children:[a.jsx(J,{size:12}),a.jsx("span",{children:G.message})]})]})]})})})]})}),a.jsx(ia,{isOpen:!!p,theme:Be,title:"Edit AI Profile Photo",currentImageUrl:ie(p),editorImageUrl:ha(p),fallbackInitial:(p?.name||"AI").charAt(0).toUpperCase(),accept:"image/png,image/jpeg,image/webp,image/gif",busy:ue,generating:R===p?.id,generateLabel:p&&L(p)?"Regenerate":"Generate",hasPendingImage:!1,canRemove:!!p?.avatarUrl,error:ze||Ae?.error||null,notice:He||Ae?.notice||null,onClose:()=>{ue||(fe(null),P(null),x(null))},onApplyImage:qe,onGenerateImage:p&&(!R||R===p.id)&&(oa(p)||te(p))?()=>Ye(p):void 0,onRemoveImage:Xe},p?.id||"ai-profile-avatar-closed")]})}export{Ta as AiProfilesModule};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
._shell_1tt0t_1{--image-tray-width: min(332px, calc(100vw - 96px) );position:relative;align-self:stretch;width:100%;box-sizing:border-box;display:grid;grid-template-columns:minmax(220px,270px) minmax(0,1fr) minmax(220px,270px);gap:12px;height:100%;min-height:0;padding:12px;background:radial-gradient(circle at top left,color-mix(in srgb,var(--brand-primary) 8%,transparent),transparent 26%),linear-gradient(180deg,color-mix(in srgb,var(--surface-page) 84%,var(--surface-panel)) 0%,var(--surface-page) 100%)}._shellWithImageTray_1tt0t_18{transition:padding-left .22s cubic-bezier(.4,0,.2,1)}._shellImageTrayOpen_1tt0t_22{padding-left:calc(var(--image-tray-width) + 12px)}._imageTrayPanel_1tt0t_26{position:absolute;top:0;bottom:0;left:0;width:var(--image-tray-width);min-width:260px;max-width:332px;display:flex;flex-direction:column;padding:0 12px;box-sizing:border-box;border-right:1px solid var(--border-primary);background:var(--bg-secondary);overflow:hidden;transform:translate(-100%);opacity:0;visibility:hidden;pointer-events:none;z-index:34;box-shadow:4px 0 18px #080a1829;transition:transform .22s cubic-bezier(.4,0,.2,1),opacity .16s ease,visibility 0s linear .22s}._imageTrayPanelOpen_1tt0t_50{transform:translate(0);opacity:1;visibility:visible;pointer-events:auto;transition:transform .22s cubic-bezier(.4,0,.2,1),opacity .16s ease,visibility 0s linear 0s}._imageTrayHeader_1tt0t_58{position:sticky;top:0;z-index:12;display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:12px 0 10px;border-bottom:1px solid var(--border-default);background:var(--bg-secondary);box-shadow:0 10px 16px color-mix(in srgb,var(--bg-secondary) 90%,transparent);flex-shrink:0}._imageTrayTitle_1tt0t_73{flex:1;display:flex;align-items:center;gap:6px;font-size:.78rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--text-secondary)}._imageTraySearch_1tt0t_85{position:relative;padding:12px 0 0;flex-shrink:0}._imageTraySearchIcon_1tt0t_91{position:absolute;left:10px;top:50%;transform:translateY(-50%);color:var(--text-muted);pointer-events:none}._imageTraySearchInput_1tt0t_100{width:100%;padding:7px 8px 7px 28px;background:color-mix(in srgb,var(--surface-inset) 88%,transparent);border:1px solid var(--border-default);border-radius:var(--radius-md);color:var(--text-primary);font-size:.75rem;font-family:inherit;outline:none;box-sizing:border-box}._imageTraySearchInput_1tt0t_100:focus{border-color:var(--brand-primary)}._imageTraySortControlRow_1tt0t_117{display:flex;justify-content:flex-end;padding:6px 0 4px;flex-shrink:0}._imageTrayList_1tt0t_124{display:flex;flex-direction:column;gap:.375rem;flex:1;overflow-y:auto;min-height:0;padding:12px 0;scrollbar-width:thin;scrollbar-color:var(--scrollbar-thumb) var(--scrollbar-track)}._imageTrayState_1tt0t_136,._imageTrayStateError_1tt0t_137{padding:24px 16px;font-size:.75rem;color:var(--text-muted);text-align:center;line-height:1.5}._imageTrayStateError_1tt0t_137{color:var(--status-error)}._imageTrayItem_1tt0t_149{width:100%;display:flex;align-items:flex-start;gap:8px;padding:.55rem .65rem;border-radius:var(--radius-md);border:1px solid var(--border-default);background:color-mix(in srgb,var(--surface-inset) 88%,transparent);cursor:pointer;text-align:left;transition:background var(--transition-base),border-color var(--transition-base),box-shadow var(--transition-base),transform var(--transition-base);font-family:inherit;color:var(--text-primary);min-width:0}._imageTrayItem_1tt0t_149:hover{background:color-mix(in srgb,var(--surface-hover) 72%,transparent);transform:translateY(-1px)}._imageTrayItemActive_1tt0t_171{border-color:var(--brand-primary-border);background:color-mix(in srgb,var(--brand-primary-soft) 94%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--brand-primary-border) 42%,transparent)}._imageTrayItemActive_1tt0t_171:hover{background:color-mix(in srgb,var(--brand-primary-soft) 92%,transparent)}._imageTrayThumb_1tt0t_181{width:34px;height:34px;flex-shrink:0;border-radius:6px;overflow:hidden;background:var(--surface-inset);border:1px solid var(--border-subtle)}._imageTrayThumb_1tt0t_181 img{width:100%;height:100%;object-fit:cover;display:block}._imageTrayItemBody_1tt0t_198{display:flex;flex-direction:column;gap:.25rem;min-width:0;flex:1}._imageTrayItemTitle_1tt0t_206,._imageTrayItemTask_1tt0t_207,._imageTrayItemMetaDetails_1tt0t_208{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._imageTrayItemTitle_1tt0t_206{display:block;max-width:100%;font-size:.875rem;font-weight:700;line-height:1.28;color:var(--text-primary)}._imageTrayItemTask_1tt0t_207{display:block;max-width:100%;font-size:.75rem;line-height:1.35;color:color-mix(in srgb,var(--text-secondary) 92%,transparent)}._imageTrayItemMeta_1tt0t_208{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;font-size:.72rem;line-height:1.35;color:color-mix(in srgb,var(--text-secondary) 82%,transparent)}._imageTrayItemMetaDetails_1tt0t_208{min-width:0}._imageTrayItemReference_1tt0t_246{flex-shrink:0;font-size:.7rem;font-weight:700;color:var(--text-secondary)}._panel_1tt0t_253{min-height:0;border-radius:var(--radius-sm);box-shadow:0 18px 38px #0f172a14}._sessionPanel_1tt0t_259,._detailPanel_1tt0t_260{display:flex;flex-direction:column;overflow:hidden}._sessionContextBar_1tt0t_266{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:58px;padding:12px 16px;border-bottom:1px solid var(--border-default);background:color-mix(in srgb,var(--surface-inset) 88%,transparent)}._sessionContextLeft_1tt0t_277,._sessionContextRight_1tt0t_278{display:flex;align-items:center;min-width:0}._sessionContextLeft_1tt0t_277{flex:1}._sessionContextRight_1tt0t_278{justify-content:flex-end;min-width:118px}._sessionContextLabel_1tt0t_293{font-size:.84rem;font-weight:600;color:var(--text-secondary)}._sessionContextSpacer_1tt0t_299{width:118px;height:32px}._canvasPanel_1tt0t_304{display:flex;flex-direction:column;min-height:0;overflow:hidden}._canvasWorkspace_1tt0t_311{display:grid;grid-template-columns:auto minmax(0,1fr);min-height:0;flex:1}._canvasMain_1tt0t_318{display:flex;flex-direction:column;min-width:0;min-height:0}._panelHeader_1tt0t_325{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px;border-bottom:1px solid var(--border-default)}._panelHeaderText_1tt0t_334{min-width:0}._panelTitle_1tt0t_338{font-size:1rem}._canvasHeading_1tt0t_342{min-width:0}._sessionActions_1tt0t_346{display:inline-flex;align-items:center;gap:8px;margin-left:auto;flex-shrink:0}._taskLinkModalBody_1tt0t_354{display:flex;flex-direction:column;gap:12px}._taskLinkModalBody_1tt0t_354>p{margin:0}._taskLinkList_1tt0t_364{display:flex;flex-direction:column;gap:6px;max-height:280px;overflow:auto}._taskLinkOption_1tt0t_372{display:flex;flex-direction:column;align-items:flex-start;gap:3px;width:100%;padding:10px 12px;border:1px solid var(--border-default);border-radius:var(--radius-sm);color:inherit;text-align:left;cursor:pointer}._taskLinkOption_1tt0t_372:hover:not(:disabled),._taskLinkOptionActive_1tt0t_387{border-color:var(--accent-primary)}._taskLinkOption_1tt0t_372:disabled{cursor:default}._taskLinkOptionTitle_1tt0t_395{font-weight:600}._taskLinkActions_1tt0t_399{display:flex;justify-content:flex-end;gap:8px}._sessionList_1tt0t_405,._annotationList_1tt0t_406{display:flex;flex:1 1 auto;flex-direction:column;gap:6px;min-height:0;padding:8px;overflow:auto}._markerHelpModalBody_1tt0t_416{display:flex;flex-direction:column;gap:14px}._openImageModalBody_1tt0t_422{display:flex;flex-direction:column;gap:12px}._openImageField_1tt0t_428{width:100%}._openImageActions_1tt0t_432{display:flex;justify-content:flex-end;gap:8px}._markerHelpItem_1tt0t_438{display:flex;flex-direction:column;gap:6px;padding:12px 14px;border-radius:var(--radius-md)}._markerHelpHeader_1tt0t_446{display:flex;align-items:baseline;justify-content:space-between;gap:12px}._markerHelpItem_1tt0t_438 p{margin:0;line-height:1.45}._markerHelpExample_1tt0t_458{font-weight:600}._sessionCard_1tt0t_462,._annotationCard_1tt0t_463{display:flex;flex-direction:column;gap:6px;padding:10px;border-radius:var(--radius-sm);text-align:left;transition:border-color var(--transition-base),box-shadow var(--transition-base),opacity var(--transition-base),transform var(--transition-base)}._sessionEmptyState_1tt0t_477{display:flex;flex-direction:column;gap:8px;padding:8px 2px 0}._sessionCardButton_1tt0t_484{display:flex;flex-direction:column;gap:8px;padding:0;border:0;background:transparent;text-align:left}._annotationCardButton_1tt0t_494{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:8px;padding:0;border:0;background:transparent;text-align:left}._sessionCardBody_1tt0t_506{display:flex;flex-direction:column;gap:8px}._sessionCardActive_1tt0t_512,._annotationCardActive_1tt0t_513{border-color:var(--button-tile-active-border);box-shadow:0 0 0 1px transparent,0 12px 28px var(--brand-primary-glow-soft)}._annotationCardActive_1tt0t_513{border-color:var(--annotation-card-accent, var(--button-tile-active-border));box-shadow:0 0 0 1px color-mix(in srgb,var(--annotation-card-accent, var(--brand-primary)) 30%,transparent),0 12px 28px color-mix(in srgb,var(--annotation-card-accent, var(--brand-primary)) 18%,transparent)}._sessionCard_1tt0t_462:hover,._annotationCard_1tt0t_463:hover{transform:translateY(-1px)}._annotationMeta_1tt0t_528{display:flex;align-items:center;justify-content:space-between;gap:4px}._annotationDragHandle_1tt0t_535{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;width:18px;height:20px;margin-left:-2px;padding:0;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--text-helper);cursor:grab}._annotationDragHandle_1tt0t_535:hover,._annotationDragHandle_1tt0t_535:focus-visible{background:var(--surface-hover);color:var(--text-primary)}._annotationDragHandle_1tt0t_535:active{cursor:grabbing}._annotationCardDragging_1tt0t_561{opacity:.16}._annotationDragOverlay_1tt0t_565{width:min(100%,320px);opacity:.94;box-shadow:0 16px 32px color-mix(in srgb,var(--surface-page) 55%,transparent);pointer-events:none}._annotationDragOverlayGrip_1tt0t_572{color:var(--text-helper)}._annotationDragOverlayTitle_1tt0t_576{flex:1 1 auto;min-width:0;text-align:left}._annotationInstructionPreview_1tt0t_582{display:-webkit-box;overflow:hidden;-webkit-line-clamp:4;-webkit-box-orient:vertical;line-height:1.45}._annotationPreviewFooter_1tt0t_590{display:flex;align-items:center;justify-content:flex-start;min-height:16px}._annotationInstructionEditor_1tt0t_597,._annotationTypeField_1tt0t_603{display:flex;flex-direction:column;gap:8px}._annotationGeometryDetails_1tt0t_609{padding-top:8px;border-top:1px solid var(--border-default)}._annotationGeometryDetails_1tt0t_609>summary{cursor:pointer}._annotationGeometryFields_1tt0t_618{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:8px}._annotationGeometryField_1tt0t_618{display:flex;flex-direction:column;gap:4px}._annotationGeometryLabel_1tt0t_631{margin:0;text-transform:uppercase}._annotationGeometryInput_1tt0t_636{min-width:0;text-align:right}._annotationInstructionButton_1tt0t_641{display:block;width:100%;padding:0;border:0;background:transparent;text-align:left}._annotationInstructionField_1tt0t_650{min-height:92px}._sessionMeta_1tt0t_654{display:flex;flex-direction:column;align-items:flex-start;gap:4px}._sessionTitle_1tt0t_661,._annotationTitle_1tt0t_662{font-size:.98rem;font-weight:700;color:var(--text-primary)}._sessionTimestamp_1tt0t_668,._annotationKind_1tt0t_669{text-transform:capitalize}._annotationInstructionTypeIcon_1tt0t_673{display:inline-flex;align-items:center;justify-content:center}._sessionInstructionPreview_1tt0t_679{line-height:1.45;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}._sessionInstructionEditor_1tt0t_687{display:flex;flex-direction:column;gap:8px}._sessionCardFooter_1tt0t_693{display:flex;align-items:center;justify-content:flex-end;gap:8px}._toolRail_1tt0t_700{display:flex;flex-wrap:wrap;gap:8px;padding:0;border-bottom:1px solid var(--border-default);background:color-mix(in srgb,var(--surface-inset) 92%,transparent)}._canvasToolRail_1tt0t_709{display:flex;flex-direction:column;align-items:center;gap:8px;padding:0;border-right:1px solid var(--border-default);background:color-mix(in srgb,var(--surface-inset) 94%,transparent)}._toolGroup_1tt0t_719{display:inline-flex;flex-wrap:wrap;gap:8px;align-items:center;padding:4px;border:1px solid var(--border-default);border-radius:16px;background:var(--surface-panel)}._toolbarCluster_1tt0t_730{display:inline-flex;flex-wrap:wrap;gap:8px;align-items:center}._toolbarViewportCluster_1tt0t_737{margin-left:44px}._toolbarSeparator_1tt0t_741{width:1px;align-self:stretch;background:var(--border-default)}._toolBtn_1tt0t_747{white-space:nowrap}._toolRailButton_1tt0t_751{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;padding:0;border-radius:var(--radius-md)}._toolbarButton_1tt0t_761{min-height:44px;border-radius:var(--radius-md)}._toolBtnActive_1tt0t_766{background:var(--button-tile-active-bg);border-color:var(--button-tile-active-border);color:var(--button-tile-active-text);box-shadow:0 0 0 1px transparent,0 8px 24px var(--brand-primary-glow-soft)}._toolbarActions_1tt0t_773{display:inline-flex;flex-wrap:wrap;align-items:center;gap:8px;flex:1 1 auto;min-width:0}._toolbarSelectionActions_1tt0t_782{display:inline-flex;align-items:center;gap:8px;min-width:44px;flex-wrap:wrap}._toolbarColorPicker_1tt0t_790{position:relative}._colorPickerButton_1tt0t_794{min-width:44px;padding:0}._colorPickerSwatch_1tt0t_799{width:24px;height:24px;border-radius:var(--radius-sm);border:2px solid color-mix(in srgb,var(--surface-panel) 88%,transparent);box-shadow:inset 0 0 0 1px #0f172a1f}._colorPickerPopover_1tt0t_807{position:absolute;top:calc(100% + 8px);left:0;z-index:3;display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:10px;border:1px solid var(--border-default);border-radius:var(--radius-md);background:var(--surface-panel);box-shadow:0 18px 32px #0f172a24}._colorOption_1tt0t_822{width:24px;height:24px;padding:0;border:2px solid transparent;border-radius:var(--radius-sm);cursor:pointer;box-shadow:inset 0 0 0 1px #0f172a24}._colorOptionActive_1tt0t_832{border-color:color-mix(in srgb,var(--surface-panel) 78%,var(--brand-primary));box-shadow:inset 0 0 0 1px #0f172a24,0 0 0 2px color-mix(in srgb,var(--brand-primary) 24%,transparent)}._toolbarUtilities_1tt0t_839{margin-left:auto;display:inline-flex;flex-wrap:wrap;align-items:center;gap:8px}._iconButton_1tt0t_847{flex-shrink:0}._primaryBtn_1tt0t_851,._ghostBtn_1tt0t_852,._payloadBtn_1tt0t_853,._backToTaskBtn_1tt0t_854{white-space:nowrap}._backToTaskBtn_1tt0t_854{padding:7px 10px;color:var(--text-secondary);font-size:.88rem;font-weight:600}._backToTaskBtn_1tt0t_854:hover,._backToTaskBtn_1tt0t_854:focus-visible{color:var(--text-primary)}._payloadBtn_1tt0t_853{font-weight:700}._canvasScroller_1tt0t_874{position:relative;flex:1;min-height:0;overflow:auto;display:block;scrollbar-gutter:stable;background:linear-gradient(45deg,color-mix(in srgb,var(--surface-inset) 66%,var(--border-default)) 25%,transparent 25%),linear-gradient(-45deg,color-mix(in srgb,var(--surface-inset) 66%,var(--border-default)) 25%,transparent 25%),linear-gradient(45deg,transparent 75%,color-mix(in srgb,var(--surface-inset) 66%,var(--border-default)) 75%),linear-gradient(-45deg,transparent 75%,color-mix(in srgb,var(--surface-inset) 66%,var(--border-default)) 75%);background-size:22px 22px;background-position:0 0,0 11px,11px -11px,-11px 0}._canvasFrame_1tt0t_890{position:relative;display:grid;place-items:center;width:max-content;min-width:100%;min-height:100%}._canvasMedia_1tt0t_899{position:relative;display:block;flex-shrink:0;margin:0 auto;overflow:hidden}._canvasStatusOverlay_1tt0t_907{position:absolute;inset:0;z-index:2;display:flex;align-items:center;justify-content:center;padding:24px;background:color-mix(in srgb,var(--surface-scrim) 68%,transparent);pointer-events:none}._canvasStatusCard_1tt0t_919{display:inline-flex;align-items:center;gap:10px;padding:12px 16px;border:1px solid color-mix(in srgb,var(--border-strong) 44%,white);border-radius:var(--radius-md);background:#0f172ac7;color:#fff;box-shadow:0 18px 30px #0f172a38;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}._canvasImage_1tt0t_932{display:block;width:100%;height:100%;-webkit-user-select:none;user-select:none}._overlay_1tt0t_939{position:absolute;inset:0;cursor:crosshair}._overlaySelect_1tt0t_945{cursor:default}._overlayPan_1tt0t_949{cursor:grab}._overlaySvg_1tt0t_953{position:absolute;inset:0;display:block;width:100%;height:100%;pointer-events:none}._overlayHitLayer_1tt0t_962{position:absolute;inset:0;display:block;width:100%;height:100%;pointer-events:auto}._arrowHitArea_1tt0t_971{stroke:transparent;stroke-width:24;pointer-events:stroke;cursor:move}._canvasHandleHit_1tt0t_978{fill:transparent;pointer-events:all;cursor:grab;outline:none}._canvasResizeHandleHit_1tt0t_985{cursor:nwse-resize}._canvasHandleVisible_1tt0t_989{--canvas-handle-fill: var(--brand-primary);--canvas-handle-outline: var(--surface-elevated);--canvas-handle-shadow: 0 6px 12px rgba(15, 23, 42, .18);fill:var(--canvas-handle-fill);stroke:var(--canvas-handle-outline);stroke-width:3;vector-effect:non-scaling-stroke;filter:drop-shadow(var(--canvas-handle-shadow));pointer-events:none}._canvasHandleHit_1tt0t_978:focus-visible+._canvasHandleVisible_1tt0t_989{stroke:color-mix(in srgb,var(--brand-primary) 72%,var(--surface-elevated));stroke-width:4}._pin_1tt0t_1006,._note_1tt0t_1007{position:absolute;transform:translate(-50%,-50%);display:inline-flex;align-items:center;justify-content:center;min-width:28px;min-height:28px;border:2px solid var(--surface-elevated);border-radius:999px;box-shadow:0 8px 18px #0f172a38;color:#fff;font-size:.74rem;font-weight:800;pointer-events:auto}._annotationNumberBadge_1tt0t_1024{position:absolute;display:inline-flex;align-items:center;justify-content:center;min-width:28px;min-height:28px;padding:0 8px;border:2px solid var(--surface-elevated);border-radius:999px;box-shadow:0 8px 18px #0f172a38;color:#fff;font-size:.74rem;font-weight:800;line-height:1;pointer-events:none;z-index:2}._note_1tt0t_1007{min-width:38px;padding:0 10px;border-radius:999px}._box_1tt0t_1049{position:absolute;border:2px solid;border-radius:var(--radius-sm);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--surface-elevated) 34%,transparent);background:color-mix(in srgb,var(--surface-elevated) 10%,transparent);pointer-events:auto}._boxNumberBadge_1tt0t_1058{top:0;left:0;transform:translate(-28%,-36%)}._arrowNumberBadge_1tt0t_1064{transform:translate(-50%,-50%)}._boxSurface_1tt0t_1068{position:absolute;inset:0;border:0;background:transparent;cursor:move}._boxSurface_1tt0t_1068:focus-visible{outline:2px solid color-mix(in srgb,var(--brand-primary) 34%,var(--surface-elevated));outline-offset:2px}._selected_1tt0t_1081{outline:3px solid color-mix(in srgb,var(--surface-elevated) 92%,transparent);outline-offset:1px}._fieldGroup_1tt0t_1086{display:flex;flex-direction:column;gap:8px;padding:14px 16px}._detailPanel_1tt0t_260 ._fieldGroup_1tt0t_1086{padding-top:12px;padding-bottom:12px}._textInput_1tt0t_1098,._textArea_1tt0t_1099,._select_1tt0t_1081{width:100%;box-sizing:border-box;font:inherit;font-size:.8125rem;line-height:1.5}._sessionTitleInput_1tt0t_1108{font-size:1rem;font-weight:600}._sessionInstructionField_1tt0t_1113{min-height:112px}._textArea_1tt0t_1099{min-height:110px;resize:vertical}._detailEmpty_1tt0t_1122,._emptyState_1tt0t_1123,._errorState_1tt0t_1124{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;min-height:240px;padding:24px;text-align:center}._payloadModalBody_1tt0t_1135{display:flex;flex-direction:column;gap:12px;min-height:0}._payloadModalToolbar_1tt0t_1142{display:flex;align-items:center;justify-content:space-between;gap:12px}._payloadViewToggle_1tt0t_1149,._payloadModalActions_1tt0t_1150{display:inline-flex;flex-wrap:wrap;align-items:center;gap:8px}._payloadModalPreview_1tt0t_1157{margin:0;min-height:360px;max-height:min(70vh,720px);padding:16px;overflow:auto;scrollbar-gutter:stable;white-space:pre-wrap;word-break:break-word;font-size:.78rem;line-height:1.55;border-radius:var(--radius-md);color:var(--text-body)}._statusBar_1tt0t_1172{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;border-top:1px solid var(--border-default);color:var(--text-secondary);font-size:.82rem;background:color-mix(in srgb,var(--surface-panel) 88%,var(--surface-inset))}._annotationSummary_1tt0t_1184{font-size:.82rem;line-height:1.5}@media(max-width:1180px){._shell_1tt0t_1{grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(320px,1fr) auto;gap:12px;padding:12px}._sessionContextBar_1tt0t_266,._panelHeader_1tt0t_325,._toolRail_1tt0t_700,._statusBar_1tt0t_1172,._payloadModalToolbar_1tt0t_1142,._markerHelpHeader_1tt0t_446{flex-wrap:wrap}._sessionContextRight_1tt0t_278,._sessionContextLeft_1tt0t_277,._canvasHeading_1tt0t_342{min-width:0}._sessionContextRight_1tt0t_278{width:100%;justify-content:flex-start}._toolbarActions_1tt0t_773{width:100%;margin-left:0}._toolbarUtilities_1tt0t_839{margin-left:0}._toolGroup_1tt0t_719{max-width:100%}._canvasWorkspace_1tt0t_311{grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr)}._toolbarViewportCluster_1tt0t_737{margin-left:0}._canvasToolRail_1tt0t_709{flex-direction:row;justify-content:flex-start;overflow-x:auto;padding:0;border-right:0;border-bottom:1px solid var(--border-default)}._statusBar_1tt0t_1172{align-items:flex-start}._detailEmpty_1tt0t_1122,._emptyState_1tt0t_1123,._errorState_1tt0t_1124{min-height:180px}}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import{j as t,r as s,R as en}from"./vendor-react-CKJs5o3c.js";import{u as Rs,a as wa,D as As,c as Es,S as Ps,v as Ms,C as Bs,f as Fs,s as Ds,K as Os,P as Hs,d as zs}from"./vendor-dnd-CJ-AjP-Y.js";import{R as Us,f as le,e as tn,h as Gs,t as Ia,M as nn}from"./index-Cx7vZJHL.js";import{s as Ks,A as Vs}from"./AssetTraySortControl-DphbyHVc.js";import{ak as Sa,Z as Ws,S as Ys,w as qs,p as Xs,L as Js,P as Zs,V as En,T as Ca,x as Qs,h as Na,av as er,R as tr,aw as nr,ax as ar,ay as sr,az as rr,aA as Bn,C as Fn,aB as or,aC as Ba,aD as Fa,aE as Da,aF as Oa,e as Dn,G as Ta}from"./vendor-icons-B8ZNsH1g.js";import"./vendor-markdown-_lhNCyq-.js";import"./vendor-router-AqJMU8Lz.js";function ir({copied:r,disabled:l=!1,label:h,onClick:g,title:v="Copy image reference",ariaLabel:_,className:D=""}){return t.jsx(Us,{copied:r,disabled:l,label:"",onClick:g,title:v,ariaLabel:_,className:D,children:h})}const lr="_shell_1tt0t_1",cr="_shellWithImageTray_1tt0t_18",dr="_shellImageTrayOpen_1tt0t_22",ur="_imageTrayPanel_1tt0t_26",mr="_imageTrayPanelOpen_1tt0t_50",fr="_imageTrayHeader_1tt0t_58",hr="_imageTrayTitle_1tt0t_73",pr="_imageTraySearch_1tt0t_85",gr="_imageTraySearchIcon_1tt0t_91",yr="_imageTraySearchInput_1tt0t_100",br="_imageTraySortControlRow_1tt0t_117",xr="_imageTrayList_1tt0t_124",vr="_imageTrayState_1tt0t_136",_r="_imageTrayStateError_1tt0t_137",kr="_imageTrayItem_1tt0t_149",wr="_imageTrayItemActive_1tt0t_171",Ir="_imageTrayThumb_1tt0t_181",Sr="_imageTrayItemBody_1tt0t_198",Cr="_imageTrayItemTitle_1tt0t_206",Nr="_imageTrayItemTask_1tt0t_207",Tr="_imageTrayItemMetaDetails_1tt0t_208",jr="_imageTrayItemMeta_1tt0t_208",$r="_imageTrayItemReference_1tt0t_246",Lr="_panel_1tt0t_253",Rr="_sessionPanel_1tt0t_259",Ar="_detailPanel_1tt0t_260",Er="_sessionContextBar_1tt0t_266",Pr="_sessionContextLeft_1tt0t_277",Mr="_sessionContextRight_1tt0t_278",Br="_sessionContextLabel_1tt0t_293",Fr="_sessionContextSpacer_1tt0t_299",Dr="_canvasPanel_1tt0t_304",Or="_canvasWorkspace_1tt0t_311",Hr="_canvasMain_1tt0t_318",zr="_panelHeader_1tt0t_325",Ur="_panelHeaderText_1tt0t_334",Gr="_panelTitle_1tt0t_338",Kr="_canvasHeading_1tt0t_342",Vr="_sessionActions_1tt0t_346",Wr="_taskLinkModalBody_1tt0t_354",Yr="_taskLinkList_1tt0t_364",qr="_taskLinkOption_1tt0t_372",Xr="_taskLinkOptionActive_1tt0t_387",Jr="_taskLinkOptionTitle_1tt0t_395",Zr="_taskLinkActions_1tt0t_399",Qr="_sessionList_1tt0t_405",eo="_annotationList_1tt0t_406",to="_markerHelpModalBody_1tt0t_416",no="_openImageModalBody_1tt0t_422",ao="_openImageField_1tt0t_428",so="_openImageActions_1tt0t_432",ro="_markerHelpItem_1tt0t_438",oo="_markerHelpHeader_1tt0t_446",io="_markerHelpExample_1tt0t_458",lo="_sessionCard_1tt0t_462",co="_annotationCard_1tt0t_463",uo="_sessionEmptyState_1tt0t_477",mo="_sessionCardButton_1tt0t_484",fo="_annotationCardButton_1tt0t_494",ho="_sessionCardBody_1tt0t_506",po="_sessionCardActive_1tt0t_512",go="_annotationCardActive_1tt0t_513",yo="_annotationMeta_1tt0t_528",bo="_annotationDragHandle_1tt0t_535",xo="_annotationCardDragging_1tt0t_561",vo="_annotationDragOverlay_1tt0t_565",_o="_annotationDragOverlayGrip_1tt0t_572",ko="_annotationDragOverlayTitle_1tt0t_576",wo="_annotationInstructionPreview_1tt0t_582",Io="_annotationPreviewFooter_1tt0t_590",So="_annotationInstructionEditor_1tt0t_597",Co="_annotationTypeField_1tt0t_603",No="_annotationGeometryDetails_1tt0t_609",To="_annotationGeometryFields_1tt0t_618",jo="_annotationGeometryField_1tt0t_618",$o="_annotationGeometryLabel_1tt0t_631",Lo="_annotationGeometryInput_1tt0t_636",Ro="_annotationInstructionButton_1tt0t_641",Ao="_annotationInstructionField_1tt0t_650",Eo="_sessionMeta_1tt0t_654",Po="_sessionTitle_1tt0t_661",Mo="_annotationTitle_1tt0t_662",Bo="_sessionTimestamp_1tt0t_668",Fo="_annotationKind_1tt0t_669",Do="_annotationInstructionTypeIcon_1tt0t_673",Oo="_sessionInstructionPreview_1tt0t_679",Ho="_sessionInstructionEditor_1tt0t_687",zo="_sessionCardFooter_1tt0t_693",Uo="_toolRail_1tt0t_700",Go="_canvasToolRail_1tt0t_709",Ko="_toolbarCluster_1tt0t_730",Vo="_toolbarViewportCluster_1tt0t_737",Wo="_toolbarSeparator_1tt0t_741",Yo="_toolBtn_1tt0t_747",qo="_toolRailButton_1tt0t_751",Xo="_toolbarButton_1tt0t_761",Jo="_toolBtnActive_1tt0t_766",Zo="_toolbarActions_1tt0t_773",Qo="_toolbarSelectionActions_1tt0t_782",ei="_toolbarColorPicker_1tt0t_790",ti="_colorPickerButton_1tt0t_794",ni="_colorPickerSwatch_1tt0t_799",ai="_colorPickerPopover_1tt0t_807",si="_colorOption_1tt0t_822",ri="_colorOptionActive_1tt0t_832",oi="_toolbarUtilities_1tt0t_839",ii="_iconButton_1tt0t_847",li="_ghostBtn_1tt0t_852",ci="_payloadBtn_1tt0t_853",di="_backToTaskBtn_1tt0t_854",ui="_canvasScroller_1tt0t_874",mi="_canvasFrame_1tt0t_890",fi="_canvasMedia_1tt0t_899",hi="_canvasStatusOverlay_1tt0t_907",pi="_canvasStatusCard_1tt0t_919",gi="_canvasImage_1tt0t_932",yi="_overlay_1tt0t_939",bi="_overlaySelect_1tt0t_945",xi="_overlayPan_1tt0t_949",vi="_overlaySvg_1tt0t_953",_i="_overlayHitLayer_1tt0t_962",ki="_arrowHitArea_1tt0t_971",wi="_canvasHandleHit_1tt0t_978",Ii="_canvasResizeHandleHit_1tt0t_985",Si="_canvasHandleVisible_1tt0t_989",Ci="_pin_1tt0t_1006",Ni="_note_1tt0t_1007",Ti="_annotationNumberBadge_1tt0t_1024",ji="_box_1tt0t_1049",$i="_boxNumberBadge_1tt0t_1058",Li="_arrowNumberBadge_1tt0t_1064",Ri="_boxSurface_1tt0t_1068",Ai="_selected_1tt0t_1081",Ei="_textInput_1tt0t_1098",Pi="_textArea_1tt0t_1099",Mi="_select_1tt0t_1081",Bi="_sessionTitleInput_1tt0t_1108",Fi="_sessionInstructionField_1tt0t_1113",Di="_detailEmpty_1tt0t_1122",Oi="_emptyState_1tt0t_1123",Hi="_payloadModalBody_1tt0t_1135",zi="_payloadModalToolbar_1tt0t_1142",Ui="_payloadViewToggle_1tt0t_1149",Gi="_payloadModalActions_1tt0t_1150",Ki="_payloadModalPreview_1tt0t_1157",Vi="_statusBar_1tt0t_1172",Wi="_annotationSummary_1tt0t_1184",n={shell:lr,shellWithImageTray:cr,shellImageTrayOpen:dr,imageTrayPanel:ur,imageTrayPanelOpen:mr,imageTrayHeader:fr,imageTrayTitle:hr,imageTraySearch:pr,imageTraySearchIcon:gr,imageTraySearchInput:yr,imageTraySortControlRow:br,imageTrayList:xr,imageTrayState:vr,imageTrayStateError:_r,imageTrayItem:kr,imageTrayItemActive:wr,imageTrayThumb:Ir,imageTrayItemBody:Sr,imageTrayItemTitle:Cr,imageTrayItemTask:Nr,imageTrayItemMetaDetails:Tr,imageTrayItemMeta:jr,imageTrayItemReference:$r,panel:Lr,sessionPanel:Rr,detailPanel:Ar,sessionContextBar:Er,sessionContextLeft:Pr,sessionContextRight:Mr,sessionContextLabel:Br,sessionContextSpacer:Fr,canvasPanel:Dr,canvasWorkspace:Or,canvasMain:Hr,panelHeader:zr,panelHeaderText:Ur,panelTitle:Gr,canvasHeading:Kr,sessionActions:Vr,taskLinkModalBody:Wr,taskLinkList:Yr,taskLinkOption:qr,taskLinkOptionActive:Xr,taskLinkOptionTitle:Jr,taskLinkActions:Zr,sessionList:Qr,annotationList:eo,markerHelpModalBody:to,openImageModalBody:no,openImageField:ao,openImageActions:so,markerHelpItem:ro,markerHelpHeader:oo,markerHelpExample:io,sessionCard:lo,annotationCard:co,sessionEmptyState:uo,sessionCardButton:mo,annotationCardButton:fo,sessionCardBody:ho,sessionCardActive:po,annotationCardActive:go,annotationMeta:yo,annotationDragHandle:bo,annotationCardDragging:xo,annotationDragOverlay:vo,annotationDragOverlayGrip:_o,annotationDragOverlayTitle:ko,annotationInstructionPreview:wo,annotationPreviewFooter:Io,annotationInstructionEditor:So,annotationTypeField:Co,annotationGeometryDetails:No,annotationGeometryFields:To,annotationGeometryField:jo,annotationGeometryLabel:$o,annotationGeometryInput:Lo,annotationInstructionButton:Ro,annotationInstructionField:Ao,sessionMeta:Eo,sessionTitle:Po,annotationTitle:Mo,sessionTimestamp:Bo,annotationKind:Fo,annotationInstructionTypeIcon:Do,sessionInstructionPreview:Oo,sessionInstructionEditor:Ho,sessionCardFooter:zo,toolRail:Uo,canvasToolRail:Go,toolbarCluster:Ko,toolbarViewportCluster:Vo,toolbarSeparator:Wo,toolBtn:Yo,toolRailButton:qo,toolbarButton:Xo,toolBtnActive:Jo,toolbarActions:Zo,toolbarSelectionActions:Qo,toolbarColorPicker:ei,colorPickerButton:ti,colorPickerSwatch:ni,colorPickerPopover:ai,colorOption:si,colorOptionActive:ri,toolbarUtilities:oi,iconButton:ii,ghostBtn:li,payloadBtn:ci,backToTaskBtn:di,canvasScroller:ui,canvasFrame:mi,canvasMedia:fi,canvasStatusOverlay:hi,canvasStatusCard:pi,canvasImage:gi,overlay:yi,overlaySelect:bi,overlayPan:xi,overlaySvg:vi,overlayHitLayer:_i,arrowHitArea:ki,canvasHandleHit:wi,canvasResizeHandleHit:Ii,canvasHandleVisible:Si,pin:Ci,note:Ni,annotationNumberBadge:Ti,box:ji,boxNumberBadge:$i,arrowNumberBadge:Li,boxSurface:Ri,selected:Ai,textInput:Ei,textArea:Pi,select:Mi,sessionTitleInput:Bi,sessionInstructionField:Fi,detailEmpty:Di,emptyState:Oi,payloadModalBody:Hi,payloadModalToolbar:zi,payloadViewToggle:Ui,payloadModalActions:Gi,payloadModalPreview:Ki,statusBar:Vi,annotationSummary:Wi};function Yi({id:r,children:l}){return t.jsx(t.Fragment,{children:l(zs({id:r}))})}const ja=[{value:"review",label:"Review"},{value:"change",label:"Change"},{value:"question",label:"Question"}],$a=[{value:"select",label:"Select",icon:or},{value:"pin",label:"Pin",icon:Ba},{value:"box",label:"Box",icon:Fa},{value:"arrow",label:"Arrow",icon:Da},{value:"text-note",label:"Note",icon:Oa}],qi=200,La={pin:Ba,box:Fa,arrow:Da,"text-note":Oa},Ra={pin:"Pin",box:"Box",arrow:"Arrow","text-note":"Note"},Xi={review:Bn,change:Dn,question:Fn,issue:Fn,idea:Bn},an={select:{short:"Select and edit existing markers.",detail:"Use Select to click, drag, reorder, resize, and update markers that are already on the image.",example:"Example: move an existing marker after the screenshot changes."},pin:{short:"Mark a precise spot.",detail:"Use Pin when feedback points to one exact location instead of a broader area.",example:'Example: "This icon is misaligned by 2px."'},box:{short:"Mark an area or component.",detail:"Use Box when the feedback applies to a whole region, card, panel, or bounded UI block.",example:'Example: "This whole card needs tighter padding and a stronger border."'},arrow:{short:"Show direction or relationship.",detail:"Use Arrow when you need to show movement, attachment, flow, or source-to-target intent.",example:'Example: "This tooltip should anchor to this button, not the panel."'},"text-note":{short:"Add a comment-style point marker.",detail:"Use Note when you want a point marker that reads more like a comment or open question.",example:'Example: "Ask design whether this badge should stay."'}},Tt={question:"#0f766e",change:"#2563eb",issue:"#dc2626",idea:"#d97706",review:"#7c3aed"},Ji=["#7c3aed","#2563eb","#0f766e","#dc2626","#d97706","#111827"],ye="review";function et(r){const l=String(r.displayName||"").trim();return l?`${l} review`:"Annotated session"}function Ha(){return`annotation-${Math.random().toString(36).slice(2,10)}`}function I(r){return!Number.isFinite(r)||r<=0?0:r>=1?1:r}function Ee(r){return I(Math.max(.02,r))}function Re(r){return r?[String(r.taskId||"").trim(),String(r.assetId||"").trim(),String(r.path||"").trim()].join("::"):""}function za(r){if(!(r instanceof HTMLElement))return!1;const l=r.tagName.toLowerCase();return r.isContentEditable?!0:l==="input"||l==="textarea"||l==="select"}function Zi(r){if(!(r instanceof HTMLElement))return!1;if(za(r))return!0;const l=r.tagName.toLowerCase();return l==="button"||l==="a"||r.getAttribute("role")==="button"}function Ae(r){return r.map((l,h)=>({...l,order:h}))}function Pn(r){if(!r)return"Unsaved";const l=new Date(r);return Number.isNaN(l.getTime())?"Unsaved":l.toLocaleString()}function Qi(r){const l=typeof r=="number"&&Number.isFinite(r)?Math.max(0,r):0;return l<1024?`${l}B`:l<1024*1024?`${(l/1024).toFixed(1)}KB`:`${(l/(1024*1024)).toFixed(1)}MB`}function el(r){if(!r)return"";const l=new Date(r);if(Number.isNaN(l.getTime()))return"";const g=new Date().getTime()-l.getTime(),v=Math.floor(g/(1e3*60*60*24));return v<=0?"Today":v===1?"Yesterday":v<7?`${v}d ago`:v<30?`${Math.floor(v/7)}w ago`:l.toLocaleDateString()}function sn(r){const l=String(r.createdByActor?.label||"").trim();return l||null}function tl(r){const l=String(r||"").trim().replace(/\s+/g," ");return l?l.length>110?`${l.slice(0,107)}...`:l:""}function Aa(r,l,h,g=Tt[ye]){const v={id:Ha(),order:0,instruction:"",markerType:ye,color:g};if(r==="pin")return{...v,kind:r,x:l.x,y:l.y};if(r==="text-note")return{...v,kind:r,x:l.x,y:l.y};if(r==="box"){const D=h||l;return{...v,kind:r,x:I(Math.min(l.x,D.x)),y:I(Math.min(l.y,D.y)),width:Ee(Math.abs(D.x-l.x)),height:Ee(Math.abs(D.y-l.y))}}const _=h||l;return{...v,kind:"arrow",x:l.x,y:l.y,x2:_.x,y2:_.y}}function rn(r){return r.color?r.color:Tt[r.markerType||ye]}function nl(r,l){const h=Math.max(l.width,1),g=Math.max(l.height,1),v=r.x*h,_=r.y*g,D=r.x2*h,de=r.y2*g,ue=D-v,jt=de-_,Pe=Math.hypot(ue,jt)||1,tt=ue/Pe,Me=jt/Pe,W=Math.max(10,Math.min(16,Pe-2)),Se=W*.62,nt=D-tt*W,Ce=de-Me*W,at=-Me,$=tt;return{shaftX1:v,shaftY1:_,shaftX2:nt,shaftY2:Ce,headPoints:[`${D},${de}`,`${nt+at*Se},${Ce+$*Se}`,`${nt-at*Se},${Ce-$*Se}`].join(" ")}}function al(r,l){return{...r,markerType:l,color:r.color||Tt[l]}}function sl(r,l){return{...r,id:Ha(),order:l}}function rl(r,l){const h=String(r||"").trim()||(l?et(l):"Annotated session");return/\bcopy$/i.test(h)?`${h} 2`:`${h} copy`}function ol(r,l,h){if(l===h||l<0||h<0||l>=r.length||h>=r.length)return r;const g=[...r],[v]=g.splice(l,1);return v?(g.splice(h,0,v),Ae(g)):r}function ce(r){return String(Math.round(I(r)*1e3)/10)}function il(r){const l=Number.parseFloat(r);return Number.isFinite(l)?I(l/100):null}function ll(r,l,h){return r.kind==="pin"||r.kind==="text-note"?l==="x"||l==="y"?{...r,[l]:I(h)}:r:r.kind==="box"?l==="x"||l==="y"?{...r,[l]:I(h)}:l==="width"||l==="height"?{...r,[l]:Ee(h)}:r:l==="x"||l==="y"||l==="x2"||l==="y2"?{...r,[l]:I(h)}:r}function cl(r){return r.kind==="pin"||r.kind==="text-note"?[{key:"x",label:"X",value:ce(r.x)},{key:"y",label:"Y",value:ce(r.y)}]:r.kind==="box"?[{key:"x",label:"X",value:ce(r.x)},{key:"y",label:"Y",value:ce(r.y)},{key:"width",label:"Width",value:ce(r.width)},{key:"height",label:"Height",value:ce(r.height)}]:[{key:"x",label:"Start X",value:ce(r.x)},{key:"y",label:"Start Y",value:ce(r.y)},{key:"x2",label:"End X",value:ce(r.x2)},{key:"y2",label:"End Y",value:ce(r.y2)}]}function dl(r){if(!r)return null;const l=Math.round(r.x*100),h=Math.round(r.y*100),g=Math.round(r.width*100),v=Math.round(r.height*100);return`crop ${l}%, ${h}% size ${g}% x ${v}%`}function Mn(r){return Number.isFinite(r)?Math.min(4,Math.max(.25,Number(r.toFixed(2)))):1}function Ea(r){const l=[`Annotated attachment: ${r.title||r.image.displayName}`,`Image: ${r.image.displayName}`,`Image Reference: ${r.image.referenceLabel||r.image.assetId}`,`Task ID: ${r.taskId}`,r.globalInstruction?`Global instruction: ${r.globalInstruction}`:"Global instruction: None provided.","Markers:"];return r.annotations.length===0?(l.push("0. No markers."),l.join(`
|
|
2
|
+
`)):(r.annotations.forEach((h,g)=>{const v=h.markerType||ye,_=dl(h.cropHint);l.push(`${g+1}. ${h.kind} (${v})`),l.push(`Instruction: ${h.instruction||"No marker instruction."}`),_&&l.push(`Region: ${_}`)}),l.join(`
|
|
3
|
+
`))}function on(r){return{title:r.title,globalInstruction:r.globalInstruction,annotations:Ae(r.annotations)}}function Pa(r){return JSON.stringify(on(r))}function Ma(r){const l=JSON.parse(r);return on({title:String(l?.title||""),globalInstruction:String(l?.globalInstruction||""),annotations:Array.isArray(l?.annotations)?l.annotations:[]})}function ul(r,l){return on({title:r?.title||l,globalInstruction:r?.globalInstruction||"",annotations:r?.annotations||[]})}function vl({runtimeMode:r="local",apiBaseUrl:l="",cloudAuthBaseUrl:h="",workspaceId:g="default",sessionLoadReady:v=!0,requestedTarget:_=null,requestedSessionId:D=null,requestedOpenVersion:de=0,imageTrayOpen:ue,onCloseImageTray:jt,resolveTaskReferenceLabel:Pe,resolveImageReferenceLabel:tt,onRequestedTargetHandled:Me,onOpenTarget:W,onContextChange:Se,viewportByContextKey:nt,onViewportChange:Ce,onBackToTask:at}){const $=r==="cloud"&&(h||l)||"",[Ua,$t]=s.useState(_),[Lt,Be]=s.useState([]),[y,Fe]=s.useState(null),[ln,st]=s.useState(!1),[De,rt]=s.useState(""),[Oe,ot]=s.useState(""),[R,me]=s.useState([]),[A,Z]=s.useState(null),[it,Q]=s.useState(!1),[On,cn]=s.useState(null),[Rt,Hn]=s.useState(Tt[ye]),[At,Et]=s.useState(!1),[E,He]=s.useState("select"),[Ga,Ne]=s.useState(!1),[Pt,zn]=s.useState(!1),[ee,te]=s.useState(!1),[Un,f]=s.useState(null),[Y,B]=s.useState("saved"),[ml,z]=s.useState(null),[Mt,Gn]=s.useState(!1),[fe,dn]=s.useState(null),[be,un]=s.useState(!1),[Ka,mn]=s.useState(!1),[fn,Kn]=s.useState("json"),[Va,Bt]=s.useState(!1),[hn,Vn]=s.useState(""),[pn,Wa]=s.useState([]),[Ft,Wn]=s.useState(!1),[ze,Yn]=s.useState(!1),[Dt,gn]=s.useState(!1),[Ot,yn]=s.useState(!1),[Ya,qn]=s.useState(!1),[qa,Ht]=s.useState(!1),[bn,zt]=s.useState(""),[lt,Xn]=s.useState(!1),[xn,Xa]=s.useState([]),[Ut,Ja]=s.useState(""),[vn,Za]=s.useState("updated"),[_n,Qa]=s.useState("desc"),[es,Jn]=s.useState(!1),[Zn,Qn]=s.useState(null),[q,ct]=s.useState(!1),[dt,ut]=s.useState(!1),[P,mt]=s.useState(1),[ts,ft]=s.useState(!1),[ns,ht]=s.useState(!1),[Gt,ea]=s.useState(!1),[T,pt]=s.useState({width:0,height:0}),ta=s.useRef(null),ne=s.useRef(null),kn=s.useRef(null),na=s.useRef(null),xe=s.useRef(D),he=s.useRef(""),Kt=s.useRef(0),wn=s.useRef(""),Te=s.useRef(0),Vt=s.useRef(null),aa=s.useRef(0),ve=s.useRef(!1),gt=s.useRef(null),In=s.useRef(null),_e=s.useRef(null),O=s.useRef(""),F=s.useRef(""),Wt=s.useRef(null),ae=s.useRef(null),Sn=s.useRef(!1),Ue=s.useRef(!1),Yt=s.useRef(null),yt=s.useRef(null),bt=s.useRef(null),Cn=s.useRef(null),xt=s.useRef(null),Ge=s.useRef(!1),Ke=s.useRef(!0),sa=s.useRef(""),ra=s.useRef(Ce),je=s.useRef(null),Ve=s.useRef(null),We=s.useRef(null),Ye=s.useRef(null),ke=s.useRef(null),se=s.useRef(null),oa=s.useRef(null),ia=s.useRef(null),Nn=s.useRef(new Map),b=s.useMemo(()=>Lt.find(e=>e.id===y)||null,[y,Lt]),U=s.useMemo(()=>`workspaceId=${encodeURIComponent(String(g||"default").trim()||"default")}`,[g]),j=s.useMemo(()=>({"x-taskforce-workspace-id":String(g||"default").trim()||"default"}),[g]),pe=s.useMemo(()=>R.find(e=>e.id===A)||null,[R,A]),vt=s.useMemo(()=>R.find(e=>e.id===On)||null,[On,R]),as=Rs(wa(Hs,{activationConstraint:{distance:6}}),wa(Os,{coordinateGetter:Ds})),re=s.useMemo(()=>Re(_),[_]),ge=typeof W=="function",d=ge?_:Ua,K=s.useMemo(()=>{const e=Re(d);return e?`${e}::${y||""}`:""},[d,y]),_t=K?nt?.[K]??null:null,qt=s.useMemo(()=>{const e=String(b?.taskId||"").trim();if(!e)return"";const a=Pe?.(e).trim()||"";if(a)return a;const o=String(d?.taskId||"").trim(),i=String(d?.taskReferenceLabel||"").trim();return e===o&&i&&i!==e?i:e},[d?.taskId,d?.taskReferenceLabel,Pe,b?.taskId]),la=s.useMemo(()=>{const e=hn.trim().toLowerCase();return e?pn.filter(a=>[a.title,a.referenceLabel,a.id].filter(Boolean).join(" ").toLowerCase().includes(e)):pn},[pn,hn]),kt=s.useMemo(()=>{const e=String(d?.assetId||"").trim();if(!e)return"";const a=tt?.(e).trim()||"";return a||String(d?.imageReferenceLabel||"").trim()},[d?.assetId,d?.imageReferenceLabel,tt]),Tn=pe?.color||Rt,ca=s.useMemo(()=>on({title:De,globalInstruction:Oe,annotations:R}),[R,Oe,De]),qe=s.useMemo(()=>Pa(ca),[ca]),da=qe!==F.current,x=s.useMemo(()=>({width:Math.max(T.width*P,0),height:Math.max(T.height*P,0)}),[T.height,T.width,P]),Xe=s.useMemo(()=>({visibleRadius:7,hitRadius:11}),[]),jn=s.useMemo(()=>`0 0 ${Math.max(x.width,1)} ${Math.max(x.height,1)}`,[x.height,x.width]),wt=typeof ue=="boolean",ua=s.useMemo(()=>{const e=Ut.trim().toLowerCase();let a=xn;return e&&(a=xn.filter(o=>[o.displayName,o.originalFilename,o.imageReferenceLabel,o.taskReferenceLabel,o.assetId].filter(Boolean).join(" ").toLowerCase().includes(e))),Ks(a,vn,_n)},[xn,Ut,vn,_n]),Je=s.useMemo(()=>{const e=ne.current;return e?P>1||x.width>e.clientWidth+1||x.height>e.clientHeight+1:P>1},[x.height,x.width,P]),$n=`${Math.round(P*100)}%`,X=Je&&(ts||ns),Ln=s.useMemo(()=>{const e=new Map;return R.forEach((a,o)=>{e.set(a.id,o+1)}),e},[R]);s.useEffect(()=>{xe.current=D},[D]),s.useEffect(()=>{const e=na.current;if(!e||!A||it)return;e.focus();const a=e.value.length;e.setSelectionRange(a,a)},[it,A]),s.useEffect(()=>{_e.current=y},[y]),s.useEffect(()=>{ra.current=Ce},[Ce]);const Xt=s.useCallback(()=>{xt.current!==null&&(window.clearTimeout(xt.current),xt.current=null);const e=Cn.current;Cn.current=null,e&&K&&ra.current?.(K,e)},[K]),oe=s.useCallback(e=>{if(Ge.current||!K)return;const a=ne.current;a&&(Cn.current={zoomLevel:e??P,scrollLeft:Math.max(0,Math.round(a.scrollLeft)),scrollTop:Math.max(0,Math.round(a.scrollTop))},xt.current===null&&(xt.current=window.setTimeout(Xt,qi)))},[K,Xt,P]),It=s.useCallback(()=>{const e=ne.current;if(!e||e.clientWidth<=0||e.clientHeight<=0||T.width<=0||T.height<=0)return;const a=Mn(Math.min(e.clientWidth/T.width,e.clientHeight/T.height)),o=T.width*a,i=T.height*a;Ke.current=!0,Ge.current=!0,mt(a),window.requestAnimationFrame(()=>{e.scrollLeft=Math.max(0,(o-e.clientWidth)/2),e.scrollTop=Math.max(0,(i-e.clientHeight)/2),oe(a),window.requestAnimationFrame(()=>{Ge.current=!1})})},[T.height,T.width,oe]);s.useEffect(()=>()=>{oe(),Xt()},[K,Xt,oe]),s.useEffect(()=>{st(!1)},[y]),s.useEffect(()=>{if(!pe){Et(!1);return}Hn(pe.color||Tt[pe.markerType||ye])},[pe]);const Jt=s.useCallback(async e=>{const a=typeof performance<"u"?performance.now():Date.now(),o=await le(`/api/taskforce/annotated-attachments/sessions?${U}`,{method:"POST",credentials:"include",headers:{"Content-Type":"application/json",...j},body:JSON.stringify({taskId:e.taskId,baseImageAssetId:e.assetId,title:et(e),globalInstruction:"",annotations:[]})},$),i=await o.json().catch(()=>({}));if(!o.ok)throw new Error(String(i?.error||"Failed to create session."));const c=i?.session;if(!c?.id)throw new Error("Failed to create session.");return tn("annotated_session_create_completed",{assetId:e.assetId,taskId:e.taskId||null,sessionId:c.id,durationMs:Math.round((typeof performance<"u"?performance.now():Date.now())-a),debugTimings:i?.debugTimings||null,serverTiming:typeof o.headers?.get=="function"&&o.headers.get("server-timing")||null}),c},[j,$,U]),ma=s.useCallback(e=>new Promise((a,o)=>{const i=new FileReader;i.onload=()=>a(typeof i.result=="string"?i.result:""),i.onerror=()=>o(i.error||new Error("Failed to read clipboard image.")),i.readAsDataURL(e)}),[]),L=s.useCallback(()=>{gt.current!==null&&(window.clearTimeout(gt.current),gt.current=null),bt.current!==null&&(window.clearTimeout(bt.current),bt.current=null)},[]),Ze=s.useCallback(e=>{rt(e.title),ot(e.globalInstruction),me(e.annotations),Z(a=>a&&e.annotations.some(o=>o.id===a)?a:null)},[]),we=s.useCallback((e,a)=>{const o=et(a||d||{assetId:e.baseImageAssetId,displayName:"Annotated session"}),i=ul(e,o),c=Pa(i);ve.current=!0,L(),Ze(i),F.current=c,O.current=c,Wt.current=null,Ue.current=!1,Yt.current=null,yt.current=null,z(null),B("saved"),te(!1)},[d,Ze,L]),St=s.useCallback(e=>{ve.current=!0,L(),Be([]),Fe(null),Ne(!1),st(!1),rt(et(e)),ot(""),me([]),Z(null),Q(!1),F.current="",O.current="",Wt.current=null,Ue.current=!1,Yt.current=null,yt.current=null,dn(null),mn(!1),z(null),B("saved"),te(!1)},[L]),$e=s.useCallback(async(e,a,o)=>{const i=_e.current;if(!i)return!0;if(e===F.current)return ae.current||(z(null),B("saved")),!0;if(ae.current){if(Ue.current=!0,!o?.waitForInFlight||!await ae.current)return!1;const p=O.current;return p===F.current?!0:$e(p,a,o)}L();const c=Ma(e);Yt.current=i,Wt.current=e,te(!0),f(null),z(null),B("saving");const m=(async()=>{try{const u=await le(`/api/taskforce/annotated-attachments/sessions/${encodeURIComponent(i)}?${U}`,{method:"PATCH",credentials:"include",headers:{"Content-Type":"application/json",...j},body:JSON.stringify(c)},$),p=await u.json().catch(()=>({}));if(!u.ok)throw new Error(String(p?.error||"Failed to save session."));const k=p?.session;if(!k?.id)throw new Error("Failed to save session.");Be(Nt=>{const N=Nt.findIndex(Qt=>Qt.id===k.id);if(N===-1)return[k,...Nt];const Ie=[...Nt];return Ie[N]=k,Ie}),F.current=e,yt.current=null,z(null);const w=_e.current===k.id,C=O.current,G=C!==e,Le=Ue.current||G;return Ue.current=!1,w&&!Le?(ve.current=!0,Ze(c),B("saved")):!Le&&C===F.current?B("saved"):B("pending"),!0}catch(u){const p=u instanceof Error?u.message:"Failed to save session.";return f(p),z(p),B("error"),yt.current!==e&&_e.current===i&&O.current===e&&(yt.current=e,bt.current=window.setTimeout(()=>{bt.current=null,!(_e.current!==i||O.current!==e)&&$e(e,a,{waitForInFlight:!0})},1500)),!1}finally{Wt.current=null,ae.current=null,Yt.current=null,te(!1)}})();ae.current=m;const S=await m;if(S){const u=O.current;if(u!==F.current)return $e(u,a,o)}return S},[Ze,L,j,$,U]),fa=s.useCallback(e=>{if(_e.current){if(O.current===F.current){z(null),ae.current||B("saved");return}Y!=="saving"&&B("pending"),L(),gt.current=window.setTimeout(()=>{gt.current=null,$e(O.current,"structure")},e)}},[L,$e,Y]),J=s.useCallback(e=>{In.current=e},[]),M=s.useCallback(async e=>{L();const a=O.current;return!_e.current||a===F.current?(z(null),ae.current||B("saved"),!0):$e(a,e,{waitForInFlight:!0})},[L,$e]),ss=s.useCallback(()=>{const e=F.current;e&&(L(),ve.current=!0,Ze(Ma(e)),z(null),B("saved"),f(null))},[Ze,L]),V=s.useCallback(async(e,a)=>{const o=typeof performance<"u"?performance.now():Date.now(),i=JSON.stringify({targetKey:Re(e),requestedSessionId:a?.requestedSessionId??null,autoCreateIfEmpty:a?.autoCreateIfEmpty===!0});if(Vt.current===i)return;const c=Te.current+1;Te.current=c,Vt.current=i,zn(!0),f(null);try{const m=new URLSearchParams;g&&m.set("workspaceId",g),e.taskId&&m.set("taskId",e.taskId),m.set("imageAssetId",e.assetId);const S=await le(`/api/taskforce/annotated-attachments/sessions?${m.toString()}`,{credentials:"include",headers:j,cache:"no-store"},$),u=await S.json().catch(()=>({}));if(!S.ok)throw new Error(String(u?.error||"Failed to load annotated attachment sessions."));const p=Array.isArray(u?.sessions)?u.sessions:[];if(tn("annotated_sessions_loaded",{assetId:e.assetId,taskId:e.taskId||null,requestedSessionId:a?.requestedSessionId??null,autoCreateIfEmpty:a?.autoCreateIfEmpty===!0,sessionCount:p.length,durationMs:Math.round((typeof performance<"u"?performance.now():Date.now())-o),serverTiming:typeof S.headers?.get=="function"&&S.headers.get("server-timing")||null}),p.length===0&&a?.autoCreateIfEmpty&&String(e.assetId||"").trim()){const C=a?.requestedSessionId??xe.current;if(xe.current=null,C&&f("The previously selected annotation session could not be restored."),Te.current!==c)return;const G=await Jt(e);if(tn("annotated_sessions_auto_created_after_empty_load",{assetId:e.assetId,taskId:e.taskId||null,sessionId:G.id,totalDurationMs:Math.round((typeof performance<"u"?performance.now():Date.now())-o)}),Te.current!==c)return;Be([G]),Fe(G.id),Ne(!1),we(G,e);return}if(Te.current!==c)return;Be(p),Ne(p.length===0);const k=a?.requestedSessionId??xe.current;xe.current=null;const w=p.find(C=>C.id===k)||p[0]||null;k&&!w&&f("The previously selected annotation session could not be restored."),Fe(w?.id||null),w?we(w,e):(ve.current=!0,L(),rt(et(e)),ot(""),me([]),Z(null),Q(!1),F.current="",O.current="",z(null),B("saved"))}catch(m){if(Te.current!==c)return;f(m instanceof Error?m.message:"Failed to load sessions.")}finally{Vt.current===i&&(Vt.current=null),Te.current===c&&zn(!1)}},[L,Jt,j,$,we,g]),ha=s.useCallback(async()=>{Jn(!0),Qn(null);try{const e=new URLSearchParams;e.set("workspaceId",String(g||"default").trim()||"default");const a=await le(`/api/taskforce/annotated-attachments/images?${e.toString()}`,{credentials:"include",headers:j,cache:"no-store"},$),o=await a.json().catch(()=>({}));if(!a.ok)throw new Error(String(o?.error||"Failed to load images."));Xa(Array.isArray(o?.images)?o.images:[])}catch(e){Qn(e instanceof Error?e.message:"Failed to load images.")}finally{Jn(!1)}},[j,$,g]),rs=s.useCallback(async()=>{if(typeof navigator>"u"||!navigator.clipboard||typeof navigator.clipboard.read!="function"){f("Clipboard image paste is not supported in this environment.");return}ea(!0),f(null),aa.current=Date.now()+2e3;try{const a=(await navigator.clipboard.read()).find(k=>k.types.some(w=>w.startsWith("image/"))),o=a?.types.find(k=>k.startsWith("image/"))||"";if(!a||!o)throw new Error("No image found on the clipboard.");const i=await a.getType(o),c=await ma(i);if(!c)throw new Error("Failed to read clipboard image.");const m=o==="image/jpeg"?"jpg":o==="image/webp"?"webp":o==="image/gif"?"gif":"png",S=await fetch("/api/taskforce/context-upload",{method:"POST",credentials:"include",headers:{"Content-Type":"application/json",...j},body:JSON.stringify({file:c,originalName:`pasted-image.${m}`,workspaceId:String(g||"default").trim()||"default"})}),u=await S.json().catch(()=>({}));if(!S.ok||!u?.success||typeof u?.assetId!="string"||typeof u?.path!="string")throw new Error(String(u?.error||"Failed to paste image into Image Notes."));const p={assetId:u.assetId,imageReferenceLabel:typeof u?.referenceLabel=="string"?u.referenceLabel:void 0,path:u.path,displayName:typeof u?.displayName=="string"&&u.displayName.trim().length>0?u.displayName.trim():"Pasted image"};xe.current=null,ge?(he.current="",W?.(p,{sessionId:null})):($t(p),he.current=Re(p),V(p,{autoCreateIfEmpty:!0}))}catch(e){f(e instanceof Error?e.message:"Failed to paste image.")}finally{ea(!1)}},[ge,V,W,ma,j,g]),os=s.useCallback(async()=>{const e=bn.trim();if(!e){f("Enter an image reference to open.");return}Xn(!0),f(null);try{const a=new URLSearchParams({workspaceId:String(g||"default").trim()||"default"}),o=await le(`/api/taskforce/annotated-attachments/images/${encodeURIComponent(e)}?${a.toString()}`,{method:"GET",credentials:"include",headers:j}),i=await o.json().catch(()=>({}));if(!o.ok||!i?.target||typeof i.target.assetId!="string"||typeof i.target.path!="string")throw new Error(String(i?.error||"Failed to open image reference."));const c={assetId:i.target.assetId,path:i.target.path,displayName:typeof i.target.displayName=="string"&&i.target.displayName.trim().length>0?i.target.displayName.trim():"Image attachment",taskId:typeof i.target.taskId=="string"&&i.target.taskId.trim().length>0?i.target.taskId.trim():void 0,taskReferenceLabel:typeof i.target.taskReferenceLabel=="string"&&i.target.taskReferenceLabel.trim().length>0?i.target.taskReferenceLabel.trim():void 0,imageReferenceLabel:typeof i.target.imageReferenceLabel=="string"&&i.target.imageReferenceLabel.trim().length>0?i.target.imageReferenceLabel.trim():void 0};xe.current=null,Ht(!1),zt(""),ge?(he.current="",W?.(c,{sessionId:null})):($t(c),he.current=Re(c),V(c,{autoCreateIfEmpty:!0}))}catch(a){f(a instanceof Error?a.message:"Failed to open image reference.")}finally{Xn(!1)}},[ge,V,W,bn,j,g]),is=s.useCallback(async e=>{if(!e.assetId||!e.path||!await M("session-switch"))return;const o={assetId:e.assetId,path:e.path,displayName:String(e.displayName||e.originalFilename||"Image attachment").trim()||"Image attachment",...e.taskId?{taskId:e.taskId}:{},...e.taskReferenceLabel?{taskReferenceLabel:e.taskReferenceLabel}:{},...e.imageReferenceLabel?{imageReferenceLabel:e.imageReferenceLabel}:{}};xe.current=null,f(null),ge?(he.current="",W?.(o,{sessionId:null})):($t(o),he.current=Re(o),St(o),V(o,{autoCreateIfEmpty:!0}))},[M,ge,V,W,St]),Zt=s.useCallback(e=>{Be(a=>{const o=a.findIndex(c=>c.id===e.id);if(o===-1)return[e,...a];const i=[...a];return i[o]=e,i}),Fe(e.id),we(e,d)},[d,we]),pa=s.useCallback(e=>{Be(a=>{const o=a.filter(c=>c.id!==e),i=o[0]||null;return Fe(i?.id||null),i?we(i,d):(ve.current=!0,L(),rt(et(d||{displayName:"Annotated session"})),ot(""),me([]),Z(null),Q(!1),F.current="",O.current="",z(null),B("saved")),o})},[d,L,we]);s.useEffect(()=>{if(!_)return;if(ge||$t(a=>a&&Re(a)===re&&a.taskReferenceLabel===_.taskReferenceLabel&&a.imageReferenceLabel===_.imageReferenceLabel&&a.displayName===_.displayName?a:_),!v){re&&(re!==he.current||de!==Kt.current)&&re!==wn.current&&(St(_),wn.current=re,Kt.current=de,tn("annotated_sessions_load_deferred",{assetId:_.assetId,taskId:_.taskId||null,requestedTargetKey:re})),Me?.();return}re&&(re!==he.current||de!==Kt.current)&&(St(_),he.current=re,Kt.current=de,wn.current="",V(_,{autoCreateIfEmpty:!0})),Me?.()},[ge,V,Me,de,_,re,St,D,v]),s.useEffect(()=>{d&&Se?.({target:d,sessionId:y})},[d,Se,y]),s.useEffect(()=>{if(!d||typeof document>"u"||!v)return;const e=()=>{Date.now()<aa.current||O.current!==F.current||ee||Pt||V(d,{requestedSessionId:y})},a=()=>{document.visibilityState==="visible"&&e()};return document.addEventListener("visibilitychange",a),()=>{document.removeEventListener("visibilitychange",a)}},[d,V,Pt,ee,y,v]),s.useEffect(()=>{if(!d?.path){ct(!1),ut(!1),pt({width:0,height:0});return}ct(!0),ut(!1),pt({width:0,height:0}),mt(1),Ke.current=!0,ft(!1),ht(!1)},[d?.path]),s.useEffect(()=>{if(!q)return;const e=kn.current;!e||!e.complete||e.naturalWidth<=0||e.naturalHeight<=0||(pt({width:e.naturalWidth,height:e.naturalHeight}),ct(!1),ut(!1))},[d?.path,q]),s.useEffect(()=>{Je||(ft(!1),ht(!1))},[Je]),s.useEffect(()=>{if(!y||!K||q||dt||T.width<=0||T.height<=0||sa.current===K)return;if(sa.current=K,!_t){It();return}Ke.current=!1,Ge.current=!0;const e=Mn(_t.zoomLevel);mt(e),window.requestAnimationFrame(()=>{window.requestAnimationFrame(()=>{const a=ne.current;a&&(a.scrollLeft=Math.max(0,_t.scrollLeft),a.scrollTop=Math.max(0,_t.scrollTop)),Ge.current=!1})})},[K,dt,q,T.height,T.width,It,_t,y]),s.useEffect(()=>{const e=ne.current;if(!e||T.width<=0||T.height<=0)return;const a=new ResizeObserver(()=>{Ke.current&&It()});return a.observe(e),()=>a.disconnect()},[It,T.height,T.width]),s.useEffect(()=>{dn(null)},[y]),s.useEffect(()=>{if(O.current=qe,ve.current){ve.current=!1;return}if(!y){L(),z(null),B("saved");return}if(qe===F.current){L(),ae.current||(z(null),B("saved"));return}const e=In.current;if(In.current=null,Y==="error"&&e===null)return;const a=e??600;if(ae.current){Ue.current=!0,B("pending");return}fa(a)},[L,qe,Y,fa,y]),s.useEffect(()=>{y&&(ae.current||qe===F.current&&Y!=="error"&&Y!=="saved"&&(z(null),B("saved")))},[qe,Y,y]),s.useEffect(()=>{!wt||!ue||ha()},[ha,ue,wt]),s.useEffect(()=>{if(typeof window>"u")return;const e=a=>{O.current!==F.current&&(a.preventDefault(),a.returnValue="")};return window.addEventListener("beforeunload",e),()=>window.removeEventListener("beforeunload",e)},[]),s.useEffect(()=>{if(typeof document>"u")return;const e=()=>{document.visibilityState==="hidden"&&M("visibility-hidden")};return document.addEventListener("visibilitychange",e),()=>document.removeEventListener("visibilitychange",e)},[M]),s.useEffect(()=>{if(!At||typeof document>"u")return;const e=a=>{const o=a.target;o instanceof Node&&(oa.current?.contains(o)||Et(!1))};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[At]),s.useEffect(()=>{if(!ln||typeof document>"u")return;const e=a=>{const o=a.target;o instanceof Node&&(ia.current?.contains(o)||st(!1))};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[ln]),s.useEffect(()=>()=>{L()},[L]),s.useEffect(()=>{if(!be)return;const e=window.setTimeout(()=>un(!1),2e3);return()=>window.clearTimeout(e)},[be]),s.useEffect(()=>{if(!Dt)return;const e=window.setTimeout(()=>gn(!1),2e3);return()=>window.clearTimeout(e)},[Dt]),s.useEffect(()=>{if(!Ot)return;const e=window.setTimeout(()=>yn(!1),2e3);return()=>window.clearTimeout(e)},[Ot]);const ie=s.useCallback((e,a,o=300)=>{me(i=>Ae(i.map(c=>c.id===e?a(c):c))),J(o)},[J]),ls=s.useCallback(e=>{pe&&(ie(pe.id,a=>({...a,color:e})),Hn(e),Et(!1))},[pe,ie]),ga=s.useCallback(async()=>{if(!(!d||!await M("session-switch"))){te(!0),f(null);try{const a=await Jt(d);Ne(!1),await V(d,{requestedSessionId:a.id,autoCreateIfEmpty:!1}),He("select")}catch(a){f(a instanceof Error?a.message:"Failed to create session."),Ne(!0)}finally{te(!1)}}},[d,Jt,M,V]),cs=s.useCallback(e=>{if(e!=="select"&&!b){ft(!1),f("No session exists for this image yet."),Ne(!0);return}f(null),Ne(!1),ft(!1),He(e)},[b]),ds=s.useCallback(async()=>{if(!(!d||!b||!await M("duplicate"))){te(!0),f(null);try{const a=Ae(R.map((m,S)=>sl(m,S))),o=await le(`/api/taskforce/annotated-attachments/sessions?${U}`,{method:"POST",credentials:"include",headers:{"Content-Type":"application/json",...j},body:JSON.stringify({taskId:d.taskId,baseImageAssetId:d.assetId,title:rl(De||b.title,d),globalInstruction:Oe,annotations:a})},$),i=await o.json().catch(()=>({}));if(!o.ok)throw new Error(String(i?.error||"Failed to duplicate session."));const c=i?.session;if(!c?.id)throw new Error("Failed to duplicate session.");Zt(c),He("select")}catch(a){f(a instanceof Error?a.message:"Failed to duplicate session.")}finally{te(!1)}}},[d,R,Oe,De,Zt,M,j,$,b,U]),us=s.useCallback(async()=>M("manual"),[M]),ya=s.useCallback(async()=>{if(y){Gn(!0),f(null);try{const e=await le(`/api/taskforce/annotated-attachments/sessions/${encodeURIComponent(y)}/payload?${U}`,{credentials:"include",headers:j},$),a=await e.json().catch(()=>({}));if(!e.ok)throw new Error(String(a?.error||"Failed to load payload preview."));dn(a?.payload||null)}catch(e){f(e instanceof Error?e.message:"Failed to load payload preview.")}finally{Gn(!1)}}},[j,$,y,U]),ms=s.useCallback(()=>{y&&M("payload-preview").then(e=>{e&&(mn(!0),ya())})},[M,ya,y]),ba=s.useCallback(async e=>{if(!fe||!navigator.clipboard||typeof navigator.clipboard.writeText!="function"){f("Clipboard copy is not available in this browser.");return}try{const a=e==="json"?JSON.stringify(fe,null,2):Ea(fe);await navigator.clipboard.writeText(a),un(e)}catch(a){f(a instanceof Error?a.message:"Failed to copy payload content."),un(!1)}},[fe]),fs=s.useCallback(async()=>{if(!qt||!navigator.clipboard||typeof navigator.clipboard.writeText!="function"){f("Clipboard copy is not available in this browser.");return}try{await navigator.clipboard.writeText(qt),gn(!0)}catch(e){f(e instanceof Error?e.message:"Failed to copy task id."),gn(!1)}},[qt]),hs=s.useCallback(async()=>{if(!(!b||Ft)){Bt(!0),Vn(""),Wn(!0),f(null);try{const e=await le(`/api/taskforce/tasks?${U}`,{credentials:"include",headers:j},$),a=await e.json().catch(()=>({}));if(!e.ok)throw new Error(String(a?.error||"Failed to load tasks."));Wa(Array.isArray(a?.tasks)?a.tasks:[])}catch(e){f(e instanceof Error?e.message:"Failed to load tasks.")}finally{Wn(!1)}}},[j,$,b,Ft,U]),Rn=s.useCallback(async e=>{const a=_e.current;if(!(!a||Sn.current)){Sn.current=!0,Yn(!0);try{if(!await M("task-link"))return;f(null);const i=await le(`/api/taskforce/annotated-attachments/sessions/${encodeURIComponent(a)}?${U}`,{method:"PATCH",credentials:"include",headers:{"Content-Type":"application/json",...j},body:JSON.stringify({taskId:e||""})},$),c=await i.json().catch(()=>({}));if(!i.ok)throw new Error(String(c?.error||"Failed to update session task."));const m=c?.session;if(!m?.id)throw new Error("Failed to update session task.");Zt(m),Bt(!1)}catch(o){f(o instanceof Error?o.message:"Failed to update session task.")}finally{Sn.current=!1,Yn(!1)}}},[Zt,M,j,$,U]),ps=s.useCallback(async()=>{if(!kt||!navigator.clipboard||typeof navigator.clipboard.writeText!="function"){f("Clipboard copy is not available in this browser.");return}try{await navigator.clipboard.writeText(kt),yn(!0)}catch(e){f(e instanceof Error?e.message:"Failed to copy image reference."),yn(!1)}},[kt]),gs=s.useCallback(async()=>{if(!y||!await M("delete-session"))return;const a=(b?.title||"Untitled session").trim()||"Untitled session";if(window.confirm(`Delete the annotated attachment session "${a}"?`)){te(!0),f(null);try{const o=await le(`/api/taskforce/annotated-attachments/sessions/${encodeURIComponent(y)}?${U}`,{method:"DELETE",credentials:"include",headers:j},$),i=await o.json().catch(()=>({}));if(!o.ok)throw new Error(String(i?.error||"Failed to delete session."));pa(y),He("select")}catch(o){f(o instanceof Error?o.message:"Failed to delete session.")}finally{te(!1)}}},[M,pa,j,$,b,y,U]),xa=s.useCallback(()=>{A&&(me(e=>Ae(e.filter(a=>a.id!==A))),Z(null),Q(!1),J(300))},[J,A]),An=s.useCallback(()=>{A&&window.confirm("Delete this marker? This cannot be undone.")&&xa()},[xa,A]),Ct=s.useCallback(e=>{Z(e),Q(!1),window.requestAnimationFrame(()=>{Nn.current.get(e)?.scrollIntoView?.({block:"nearest",behavior:"smooth"})})},[]),ys=s.useCallback(e=>{if(A===e&&!it){Q(!0);return}Ct(e)},[it,Ct,A]),Qe=s.useCallback(e=>{Ke.current=!1;const a=Mn(e),o=ne.current;if(!o||a===P){mt(a),window.requestAnimationFrame(()=>oe(a));return}const i=(o.scrollLeft+o.clientWidth/2)*(a/P)-o.clientWidth/2,c=(o.scrollTop+o.clientHeight/2)*(a/P)-o.clientHeight/2;mt(a),window.requestAnimationFrame(()=>{o.scrollLeft=Math.max(0,i),o.scrollTop=Math.max(0,c),oe(a)})},[oe,P]),bs=s.useCallback(()=>{Qe(P+.25)},[Qe,P]),xs=s.useCallback(()=>{Qe(P-.25)},[Qe,P]),vs=s.useCallback(()=>{Qe(1);const e=ne.current;e&&window.requestAnimationFrame(()=>{e.scrollLeft=0,e.scrollTop=0,oe(1)})},[Qe,oe]),va=s.useCallback((e,a)=>{e!==a&&me(o=>{const i=o.findIndex(m=>m.id===e),c=o.findIndex(m=>m.id===a);return i===-1||c===-1?o:(J(300),ol(o,i,c))})},[J]),_s=s.useCallback(e=>{cn(String(e.active.id))},[]),ks=s.useCallback(e=>{const a=String(e.active.id),o=e.over?String(e.over.id):null;o&&a!==o&&va(a,o),cn(null)},[va]);s.useEffect(()=>{if(!A)return;const e=a=>{a.key!=="Delete"&&a.key!=="Backspace"||za(a.target)||(a.preventDefault(),An())};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[An,A]),s.useEffect(()=>{const e=i=>{i.code==="Space"&&Je&&(Zi(i.target)||(i.preventDefault(),ht(!0)))},a=i=>{i.code==="Space"&&ht(!1)},o=()=>{ht(!1)};return window.addEventListener("keydown",e),window.addEventListener("keyup",a),window.addEventListener("blur",o),()=>{window.removeEventListener("keydown",e),window.removeEventListener("keyup",a),window.removeEventListener("blur",o)}},[Je]);const H=s.useCallback(e=>{const a=ta.current?.getBoundingClientRect();return!a||a.width<=0||a.height<=0?null:{x:I((e.clientX-a.left)/a.width),y:I((e.clientY-a.top)/a.height)}},[]),ws=s.useCallback(e=>{if(X){const i=ne.current;if(!i)return;se.current={pointerId:e.pointerId,startX:e.clientX,startY:e.clientY,scrollLeft:i.scrollLeft,scrollTop:i.scrollTop},e.currentTarget.setPointerCapture(e.pointerId),e.preventDefault();return}if(!y)return;if(E==="select"){Z(null),Q(!1);return}const a=H(e);if(!a)return;if(E==="pin"||E==="text-note"){const i=Aa(E,a,a,Rt);me(c=>Ae([...c,i])),Z(i.id),Q(!1),J(300),He("select");return}je.current=a;const o=Aa(E,a,a,Rt);ke.current={annotationId:o.id,kind:E},e.currentTarget.setPointerCapture?.(e.pointerId),me(i=>Ae([...i,o])),Z(o.id),Q(!1),J(300)},[Rt,X,J,H,y,E]),Is=s.useCallback(e=>{if(se.current?.pointerId===e.pointerId){e.currentTarget.releasePointerCapture?.(e.pointerId);return}if(!je.current||!ke.current||E!=="box"&&E!=="arrow")return;const a=H(e);je.current=null,ke.current=null,e.currentTarget.releasePointerCapture?.(e.pointerId),a&&He("select")},[H,E]),_a=s.useCallback((e,a)=>{if(E!=="select"||X)return;const o=H(e);o&&(Ve.current={annotationId:a.id,originPointer:o,originAnnotation:a},Z(a.id),e.stopPropagation())},[X,H,E]),Ss=s.useCallback(e=>{if(se.current?.pointerId===e.pointerId){const u=ne.current;if(!u)return;const p=e.clientX-se.current.startX,k=e.clientY-se.current.startY;u.scrollLeft=se.current.scrollLeft-p,u.scrollTop=se.current.scrollTop-k;return}if(ke.current&&je.current){const u=H(e);if(!u)return;const{annotationId:p,kind:k}=ke.current,w=je.current;ie(p,C=>k==="box"&&C.kind==="box"?{...C,x:I(Math.min(w.x,u.x)),y:I(Math.min(w.y,u.y)),width:Ee(Math.abs(u.x-w.x)),height:Ee(Math.abs(u.y-w.y))}:k==="arrow"&&C.kind==="arrow"?{...C,x:w.x,y:w.y,x2:u.x,y2:u.y}:C);return}if(We.current){const u=H(e);if(!u)return;const{annotationId:p,originPointer:k,originAnnotation:w}=We.current,C=u.x-k.x,G=u.y-k.y;ie(p,()=>({...w,width:Ee(w.width+C),height:Ee(w.height+G)}));return}if(Ye.current){const u=H(e);if(!u)return;const{annotationId:p,endpoint:k,originPointer:w,originAnnotation:C}=Ye.current,G=u.x-w.x,Le=u.y-w.y;ie(p,()=>k==="tail"?{...C,x:I(C.x+G),y:I(C.y+Le)}:{...C,x2:I(C.x2+G),y2:I(C.y2+Le)});return}if(!Ve.current)return;const a=H(e);if(!a)return;const{annotationId:o,originPointer:i,originAnnotation:c}=Ve.current,m=a.x-i.x,S=a.y-i.y;ie(o,()=>c.kind==="pin"||c.kind==="text-note"?{...c,x:I(c.x+m),y:I(c.y+S)}:c.kind==="box"?{...c,x:I(c.x+m),y:I(c.y+S)}:{...c,x:I(c.x+m),y:I(c.y+S),x2:I(c.x2+m),y2:I(c.y2+S)})},[H,ie]),Cs=s.useCallback(()=>{je.current=null,Ve.current=null,We.current=null,Ye.current=null,ke.current=null,se.current=null},[]),Ns=s.useCallback(()=>{je.current=null,Ve.current=null,We.current=null,Ye.current=null,ke.current=null,se.current=null},[]),Ts=s.useCallback(()=>{Ve.current=null,We.current=null,Ye.current=null,ke.current=null,se.current=null},[]),js=s.useCallback((e,a)=>{if(E!=="select"||X)return;const o=H(e);o&&(We.current={annotationId:a.id,originPointer:o,originAnnotation:a},e.stopPropagation())},[X,H,E]),ka=s.useCallback((e,a,o)=>{if(E!=="select"||X)return;const i=H(e);i&&(Ye.current={annotationId:a.id,originPointer:i,originAnnotation:a,endpoint:o},e.stopPropagation())},[X,H,E]),$s=b?.updatedAt?Pn(b.updatedAt):"Not saved yet";return t.jsxs("div",{className:`${n.shell} ${wt?n.shellWithImageTray:""} ${wt&&ue?n.shellImageTrayOpen:""}`.trim(),children:[wt?t.jsxs("aside",{className:`${n.imageTrayPanel} ${ue?n.imageTrayPanelOpen:""}`.trim(),"aria-label":"Image tray","aria-hidden":!ue,children:[t.jsxs("div",{className:n.imageTrayHeader,children:[t.jsxs("span",{className:n.imageTrayTitle,children:[t.jsx(Sa,{size:14}),"Images"]}),t.jsx("button",{type:"button",className:"tf-control-icon",onClick:jt,title:"Collapse image tray","aria-label":"Collapse image tray",children:t.jsx(Ws,{size:16})})]}),t.jsxs("div",{className:n.imageTraySearch,children:[t.jsx(Ys,{size:12,className:n.imageTraySearchIcon}),t.jsx("input",{type:"text",placeholder:"Search images...",value:Ut,onChange:e=>Ja(e.target.value),className:n.imageTraySearchInput})]}),t.jsx("div",{className:n.imageTraySortControlRow,children:t.jsx(Vs,{field:vn,order:_n,onFieldChange:Za,onOrderChange:Qa})}),t.jsx("div",{className:`tf-scrollbar tf-tray-scroll-viewport ${n.imageTrayList}`,children:es?t.jsx("div",{className:n.imageTrayState,children:"Loading images..."}):Zn?t.jsx("div",{className:n.imageTrayStateError,children:Zn}):ua.length===0?t.jsx("div",{className:n.imageTrayState,children:Ut.trim()?"No images match your search.":"No images found."}):ua.map(e=>{const a=d?.assetId===e.assetId,o=typeof e.attachmentCount=="number"&&Number.isFinite(e.attachmentCount)?Math.max(0,e.attachmentCount):0,i=typeof e.sessionCount=="number"&&Number.isFinite(e.sessionCount)?Math.max(0,e.sessionCount):0,c=o>1?`${o} tasks linked`:o===1?e.taskReferenceLabel||"1 task linked":"Unattached",m=String(e.displayName||e.originalFilename||"Image attachment").trim()||"Image attachment";return t.jsxs("button",{type:"button",className:`${n.imageTrayItem} ${a?n.imageTrayItemActive:""}`.trim(),onClick:()=>{is(e)},title:m,children:[t.jsx("span",{className:n.imageTrayThumb,children:t.jsx("img",{src:e.path,alt:"",loading:"lazy"})}),t.jsxs("span",{className:n.imageTrayItemBody,children:[t.jsx("span",{className:n.imageTrayItemTitle,children:m}),t.jsx("span",{className:n.imageTrayItemTask,children:c}),t.jsxs("span",{className:n.imageTrayItemMeta,children:[t.jsxs("span",{className:n.imageTrayItemMetaDetails,children:[Qi(e.sizeBytes),e.updatedAt?t.jsxs(t.Fragment,{children:[" · ",el(e.updatedAt)]}):null,i>0?t.jsxs(t.Fragment,{children:[" · ",i," session",i===1?"":"s"]}):null]}),e.imageReferenceLabel?t.jsx("span",{className:n.imageTrayItemReference,children:e.imageReferenceLabel}):null]})]})]},e.assetId)})})]}):null,t.jsxs("section",{className:`tf-surface-panel ${n.panel} ${n.sessionPanel}`,children:[t.jsx("div",{className:n.sessionContextBar,children:b?.taskId?t.jsxs(t.Fragment,{children:[t.jsx("div",{className:n.sessionContextLeft,children:at?t.jsx("button",{type:"button",className:`tf-button-ghost tf-button-compact ${n.ghostBtn} ${n.backToTaskBtn}`,onClick:()=>{M("back-to-task").then(e=>{e&&b.taskId&&at(b.taskId)})},"aria-label":"Back to task",title:"Back to task",children:t.jsx(qs,{size:16})}):t.jsx("div",{className:n.sessionContextSpacer,"aria-hidden":"true"})}),t.jsxs("div",{className:n.sessionContextRight,children:[t.jsx(Gs,{copied:Dt,onClick:()=>{fs()},title:"Copy task id",ariaLabel:Dt?"Copied task id":"Copy task id",label:qt}),t.jsx("button",{type:"button",className:`tf-control-icon ${n.iconButton}`,onClick:()=>{Rn(null)},disabled:ze,"aria-label":"Unlink session from task",title:"Unlink session from task",children:t.jsx(Xs,{size:16})})]})]}):t.jsxs(t.Fragment,{children:[t.jsx("div",{className:n.sessionContextLeft,children:t.jsx("span",{className:`tf-label-micro ${n.sessionContextLabel}`,children:"Unattached session"})}),t.jsx("div",{className:n.sessionContextRight,children:t.jsx("div",{className:n.sessionContextSpacer,"aria-hidden":"true"})})]})}),t.jsxs("div",{className:n.panelHeader,children:[t.jsxs("div",{className:n.panelHeaderText,children:[t.jsx("div",{className:`tf-heading-card ${n.panelTitle}`,children:"Sessions"}),d?null:t.jsx("div",{className:"tf-text-secondary",children:"Open an image attachment to begin"})]}),t.jsxs("div",{className:n.sessionActions,children:[t.jsx("button",{type:"button",className:`tf-control-icon ${n.iconButton}`,onClick:()=>{hs()},disabled:!b||Ft||ze,"aria-label":b?.taskId?"Change linked task":"Link session to task",title:b?.taskId?"Change linked task":"Link session to task",children:t.jsx(Js,{size:16})}),t.jsx("button",{type:"button",className:`tf-control-icon ${n.iconButton}`,onClick:()=>{ga()},disabled:!d||ee,"aria-label":"Create session",title:"Create session",children:t.jsx(Zs,{size:16})})]})]}),d?Pt?t.jsx("div",{className:n.emptyState,children:t.jsx("p",{className:"tf-empty-copy",children:"Loading sessions…"})}):t.jsx("div",{className:`tf-scrollbar ${n.sessionList}`,children:Lt.length===0?t.jsxs("div",{className:n.sessionEmptyState,children:[t.jsx("div",{className:`tf-heading-card ${n.sessionTitle}`,children:"No sessions yet"}),t.jsx("div",{className:`tf-text-secondary ${n.annotationSummary}`,children:"Create the first annotation session for this image."})]}):Lt.map(e=>{const a=y===e.id,o=a&&ln,i=tl(a?Oe:e.globalInstruction),c=(a?De:e.title)||"Untitled session";return t.jsxs("div",{className:`tf-surface-elevated ${n.sessionCard} ${a?n.sessionCardActive:""}`,ref:a?ia:void 0,onBlur:o?m=>{const S=m.relatedTarget;S instanceof Node&&m.currentTarget.contains(S)||st(!1)}:void 0,children:[o?t.jsxs("div",{className:n.sessionCardBody,children:[t.jsxs("div",{className:n.sessionMeta,children:[t.jsx("label",{className:"tf-field-label",htmlFor:"annotated-session-title",children:"Session title"}),t.jsx("input",{id:"annotated-session-title",className:`tf-field-shell ${n.textInput} ${n.sessionTitleInput}`,value:De,onChange:m=>{rt(m.target.value),J(600)},placeholder:"Session title"}),t.jsx("span",{className:`tf-text-meta ${n.sessionTimestamp}`,children:Pn(e.updatedAt)})]}),sn(e)?t.jsxs("div",{className:`tf-text-secondary ${n.sessionCreator}`,children:["Created by ",sn(e)]}):null,t.jsxs("div",{className:n.sessionInstructionEditor,children:[t.jsx("label",{className:"tf-field-label",htmlFor:"annotated-session-instruction",children:"Session instruction"}),t.jsx("textarea",{id:"annotated-session-instruction",className:`tf-field-shell ${n.textArea} ${n.sessionInstructionField}`,value:Oe,onChange:m=>{ot(m.target.value),J(600)},placeholder:"Add overall instructions, context, or framing for this session."})]}),t.jsxs("div",{className:`tf-text-secondary ${n.annotationSummary}`,children:[e.annotations.length," annotation",e.annotations.length===1?"":"s"]})]}):t.jsxs("button",{type:"button",className:n.sessionCardButton,onClick:()=>{if(a){st(!0);return}M("session-switch").then(m=>{m&&(Fe(e.id),we(e,d))})},"aria-pressed":a,children:[t.jsxs("div",{className:n.sessionMeta,children:[t.jsx("span",{className:`tf-heading-card ${n.sessionTitle}`,children:c}),t.jsx("span",{className:`tf-text-meta ${n.sessionTimestamp}`,children:Pn(e.updatedAt)})]}),sn(e)?t.jsxs("div",{className:`tf-text-secondary ${n.sessionCreator}`,children:["Created by ",sn(e)]}):null,i?t.jsx("div",{className:`tf-text-secondary ${n.sessionInstructionPreview}`,children:i}):null,t.jsxs("div",{className:`tf-text-secondary ${n.annotationSummary}`,children:[e.annotations.length," annotation",e.annotations.length===1?"":"s"]})]}),a?t.jsx("div",{className:n.sessionCardFooter,children:t.jsxs(t.Fragment,{children:[t.jsx("button",{type:"button",className:`tf-button-ghost ${n.toolRailButton} ${n.iconButton}`,onClick:()=>{ds()},disabled:ee,"aria-label":"Duplicate session",title:`Duplicate session "${c}"`,children:t.jsx(En,{size:16})}),t.jsx("button",{type:"button",className:`tf-button-ghost ${n.toolRailButton} ${n.iconButton}`,onClick:()=>{gs()},disabled:ee,"aria-label":"Delete session",title:`Delete session "${c}"`,children:t.jsx(Ca,{size:16})})]})}):null]},e.id)})}):t.jsxs("div",{className:n.emptyState,children:[t.jsx("strong",{className:"tf-empty-title",children:"No image selected"}),t.jsx("p",{className:"tf-empty-copy",children:"Open an image attachment from a task to start an annotated session."})]})]}),t.jsxs("section",{className:`tf-surface-panel ${n.panel} ${n.canvasPanel}`,children:[t.jsxs("div",{className:n.panelHeader,children:[t.jsxs("div",{className:n.canvasHeading,children:[t.jsx("div",{className:"tf-heading-card",children:d?.displayName||"Annotated attachment"}),t.jsx("div",{className:"tf-text-secondary",children:b?`${R.length} markers · ${$s}`:"Pick or create a session"})]}),kt?t.jsx(ir,{copied:Ot,onClick:()=>{ps()},title:d?.displayName||"Annotated attachment",ariaLabel:Ot?"Copied image reference":"Copy image reference",label:kt}):null]}),t.jsxs("div",{className:n.toolRail,children:[t.jsxs("div",{className:`${n.toolbarCluster} ${n.toolbarViewportCluster}`,children:[t.jsx("button",{type:"button",className:`tf-button-ghost tf-button-compact ${n.ghostBtn} ${n.toolbarButton}`,onClick:()=>{us()},disabled:!b||ee||!da&&Y!=="error","aria-label":ee?"Saving session":"Save session",title:ee?"Saving session":"Save session",children:t.jsx(Qs,{size:18})}),t.jsx("button",{type:"button",className:`tf-button-ghost tf-button-compact ${n.ghostBtn} ${n.toolbarButton}`,onClick:()=>Ht(!0),disabled:lt,"aria-label":"Open image",title:"Open image",children:t.jsx(Sa,{size:18})}),t.jsx("button",{type:"button",className:`tf-button-ghost tf-button-compact ${n.ghostBtn} ${n.toolbarButton}`,onClick:()=>{rs()},disabled:Gt,"aria-label":Gt?"Pasting image":"Paste image",title:Gt?"Pasting image":"Paste image",children:Gt?t.jsx(Na,{size:18,className:Ia.spin}):t.jsx(er,{size:18})}),t.jsx("button",{type:"button",className:`tf-button-ghost tf-button-compact ${n.ghostBtn} ${n.toolbarButton}`,onClick:()=>{b&&ss()},disabled:!b||!da,"aria-label":"Reset unsaved changes",title:"Reset unsaved changes",children:t.jsx(tr,{size:18})}),t.jsx("button",{type:"button",className:`tf-button-ghost tf-button-compact ${n.ghostBtn} ${n.toolbarButton}`,onClick:It,disabled:!d||q||T.width<=0||T.height<=0,"aria-label":"Fit image to viewport",title:"Fit image to viewport",children:t.jsx(nr,{size:18})}),t.jsx("button",{type:"button",className:`tf-button-ghost ${n.toolRailButton} ${n.iconButton}`,onClick:xs,disabled:!d||q||P<=.25,"aria-label":"Zoom out",children:t.jsx(ar,{size:18})}),t.jsx("button",{type:"button",className:`tf-button-ghost tf-button-compact ${n.ghostBtn} ${n.toolbarButton}`,onClick:vs,disabled:!d||q||P===1,"aria-label":`Reset zoom to 100 percent (currently ${$n})`,title:`Reset zoom to 100% (currently ${$n})`,children:t.jsx("span",{children:$n})}),t.jsx("button",{type:"button",className:`tf-button-ghost ${n.toolRailButton} ${n.iconButton}`,onClick:bs,disabled:!d||q||P>=4,"aria-label":"Zoom in",children:t.jsx(sr,{size:18})}),t.jsx("button",{type:"button",className:`tf-button-ghost tf-button-compact ${n.toolBtn} ${n.toolbarButton} ${X?n.toolBtnActive:""}`,onClick:()=>ft(e=>!e),disabled:!d||q||!Je,"aria-label":"Pan canvas",title:"Pan canvas",children:t.jsx(rr,{size:18})})]}),t.jsx("span",{className:n.toolbarSeparator,"aria-hidden":"true"}),t.jsxs("div",{className:n.toolbarActions,children:[t.jsx("div",{className:n.toolbarSelectionActions,children:pe?t.jsxs(t.Fragment,{children:[t.jsxs("div",{ref:oa,className:n.toolbarColorPicker,children:[t.jsx("button",{type:"button",className:`tf-button-ghost tf-button-compact ${n.ghostBtn} ${n.toolbarButton} ${n.colorPickerButton}`,onClick:()=>Et(e=>!e),"aria-label":"Marker color","aria-expanded":At,title:"Marker color",children:t.jsx("span",{className:n.colorPickerSwatch,style:{backgroundColor:Tn},"aria-hidden":"true"})}),At?t.jsx("div",{className:n.colorPickerPopover,role:"menu","aria-label":"Marker color options",children:Ji.map(e=>t.jsx("button",{type:"button",className:`${n.colorOption} ${Tn===e?n.colorOptionActive:""}`,style:{backgroundColor:e},onClick:()=>ls(e),"aria-label":`Use marker color ${e}`,"aria-pressed":Tn===e},e))}):null]}),t.jsx("button",{type:"button",className:`tf-button-ghost tf-button-compact ${n.ghostBtn} ${n.toolbarButton}`,onClick:An,"aria-label":"Delete marker",title:"Delete selected marker",children:t.jsx(Ca,{size:18})})]}):null}),t.jsxs("div",{className:n.toolbarUtilities,children:[t.jsx("button",{type:"button",className:`tf-button-ghost tf-button-compact ${n.ghostBtn} ${n.payloadBtn} ${n.toolbarButton}`,onClick:ms,disabled:!b||Mt,"aria-label":Mt?"Loading payload preview":"Preview payload",title:Mt?"Loading payload preview":"Preview payload",children:t.jsx(Bn,{size:18})}),t.jsx("button",{type:"button",className:`tf-button-ghost tf-button-compact ${n.ghostBtn} ${n.toolbarButton}`,onClick:()=>qn(!0),"aria-label":"How to use marker tools",title:"How to use marker tools",children:t.jsx(Fn,{size:18})})]})]})]}),t.jsxs("div",{className:n.canvasWorkspace,children:[t.jsx("div",{className:n.canvasToolRail,"aria-label":"Annotation tools",children:$a.map(e=>{const a=e.icon;return t.jsx("button",{type:"button",className:`tf-button-ghost ${n.toolRailButton} ${E===e.value?n.toolBtnActive:""}`,onClick:()=>cs(e.value),disabled:!d,title:e.label,"aria-label":`${e.label} tool. ${an[e.value].short}`,children:t.jsx(a,{size:18})},e.value)})}),t.jsx("div",{className:n.canvasMain,children:t.jsx("div",{ref:ne,className:`tf-scrollbar ${n.canvasScroller}`,onScroll:()=>{Ge.current||(Ke.current=!1),oe()},children:d?t.jsxs(t.Fragment,{children:[q&&!dt?t.jsx("div",{className:n.canvasStatusOverlay,"aria-live":"polite",children:t.jsxs("div",{className:n.canvasStatusCard,children:[t.jsx(Na,{size:20,className:Ia.spinner}),t.jsx("span",{children:"Loading image…"})]})}):null,dt?t.jsx("div",{className:n.canvasStatusOverlay,"aria-live":"polite",children:t.jsx("div",{className:n.canvasStatusCard,children:t.jsx("span",{children:"Image failed to load."})})}):null,t.jsx("div",{className:n.canvasFrame,children:t.jsxs("div",{className:n.canvasMedia,style:{width:x.width?`${x.width}px`:void 0,height:x.height?`${x.height}px`:void 0},children:[t.jsx("img",{ref:kn,src:d.path,alt:d.displayName,className:n.canvasImage,onLoad:()=>{const e=kn.current;pt({width:e?.naturalWidth||0,height:e?.naturalHeight||0}),ct(!1),ut(!1)},onError:()=>{pt({width:0,height:0}),ct(!1),ut(!0)}}),!q&&!dt&&b?t.jsxs("div",{ref:ta,className:`${n.overlay} ${E==="select"?n.overlaySelect:""} ${X?n.overlayPan:""}`,onPointerDown:ws,onPointerMove:Ss,onPointerUp:e=>{Is(e),Ts()},"data-testid":"annotated-attachment-overlay",onPointerLeave:Cs,onPointerCancel:Ns,children:[t.jsx("svg",{className:n.overlaySvg,viewBox:jn,preserveAspectRatio:"none","aria-hidden":"true",children:R.filter(e=>e.kind==="arrow").map(e=>{const a=nl(e,x),o=rn(e),i=A===e.id;return t.jsxs(en.Fragment,{children:[i?t.jsxs(t.Fragment,{children:[t.jsx("line",{x1:a.shaftX1,y1:a.shaftY1,x2:a.shaftX2,y2:a.shaftY2,stroke:"color-mix(in srgb, var(--surface-elevated) 92%, transparent)",strokeWidth:14,strokeLinecap:"round"}),t.jsx("polygon",{points:a.headPoints,fill:o,stroke:"color-mix(in srgb, var(--surface-elevated) 92%, transparent)",strokeWidth:4,strokeLinejoin:"round"})]}):null,t.jsx("line",{x1:a.shaftX1,y1:a.shaftY1,x2:a.shaftX2,y2:a.shaftY2,stroke:o,strokeWidth:i?10:6,strokeLinecap:"round"}),t.jsx("polygon",{points:a.headPoints,fill:o})]},e.id)})}),t.jsx("svg",{className:n.overlayHitLayer,viewBox:jn,preserveAspectRatio:"none",children:R.filter(e=>e.kind==="arrow").map(e=>t.jsxs(en.Fragment,{children:[t.jsx("line",{x1:e.x*x.width,y1:e.y*x.height,x2:e.x2*x.width,y2:e.y2*x.height,className:n.arrowHitArea,"data-testid":`annotated-arrow-hit-${e.id}`,"aria-label":`Arrow marker ${Ln.get(e.id)||0}`,onPointerDown:a=>_a(a,e),onClick:a=>{a.stopPropagation(),Ct(e.id)}}),A===e.id?t.jsxs(t.Fragment,{children:[t.jsx("circle",{cx:e.x*x.width,cy:e.y*x.height,r:Xe.hitRadius,className:n.canvasHandleHit,role:"button",tabIndex:0,"aria-label":"Move arrow tail",onPointerDown:a=>ka(a,e,"tail")}),t.jsx("circle",{cx:e.x*x.width,cy:e.y*x.height,r:Xe.visibleRadius,className:n.canvasHandleVisible,"aria-hidden":"true"}),t.jsx("circle",{cx:e.x2*x.width,cy:e.y2*x.height,r:Xe.hitRadius,className:n.canvasHandleHit,role:"button",tabIndex:0,"aria-label":"Move arrow tip",onPointerDown:a=>ka(a,e,"tip")}),t.jsx("circle",{cx:e.x2*x.width,cy:e.y2*x.height,r:Xe.visibleRadius,className:n.canvasHandleVisible,"aria-hidden":"true"})]}):null]},`hit-${e.id}`))}),R.filter(e=>e.kind==="arrow").map(e=>t.jsx("div",{className:`${n.annotationNumberBadge} ${n.arrowNumberBadge}`,style:{left:`${(e.x+e.x2)/2*100}%`,top:`${(e.y+e.y2)/2*100}%`,backgroundColor:rn(e)},"aria-hidden":"true",children:Ln.get(e.id)||0},`arrow-number-${e.id}`)),R.filter(e=>e.kind!=="arrow").map(e=>{const a=rn(e),o=Ln.get(e.id)||0,i={onPointerDown:c=>_a(c,e),onClick:c=>{c.stopPropagation(),Ct(e.id)}};return e.kind==="pin"?t.jsx("button",{type:"button",...i,className:`${n.pin} ${A===e.id?n.selected:""}`,style:{left:`${e.x*100}%`,top:`${e.y*100}%`,backgroundColor:a},children:o},e.id):e.kind==="text-note"?t.jsx("button",{type:"button",...i,className:`${n.note} ${A===e.id?n.selected:""}`,style:{left:`${e.x*100}%`,top:`${e.y*100}%`,backgroundColor:a},children:o},e.id):t.jsxs("div",{className:`${n.box} ${A===e.id?n.selected:""}`,style:{left:`${e.x*100}%`,top:`${e.y*100}%`,width:`${e.width*100}%`,height:`${e.height*100}%`,borderColor:a},children:[t.jsx("span",{className:`${n.annotationNumberBadge} ${n.boxNumberBadge}`,style:{backgroundColor:a},"aria-hidden":"true",children:o}),t.jsx("button",{type:"button",...i,className:n.boxSurface,"aria-label":`Box marker ${o}`})]},e.id)}),t.jsx("svg",{className:n.overlaySvg,viewBox:jn,preserveAspectRatio:"none",children:R.filter(e=>e.kind==="box"&&A===e.id).map(e=>t.jsxs(en.Fragment,{children:[t.jsx("circle",{cx:(e.x+e.width)*x.width,cy:(e.y+e.height)*x.height,r:Xe.hitRadius,className:`${n.canvasHandleHit} ${n.canvasResizeHandleHit}`,role:"button",tabIndex:0,"aria-label":"Resize box marker",onPointerDown:a=>js(a,e)}),t.jsx("circle",{cx:(e.x+e.width)*x.width,cy:(e.y+e.height)*x.height,r:Xe.visibleRadius,className:n.canvasHandleVisible,"aria-hidden":"true"})]},`box-handle-${e.id}`))})]}):null]})})]}):t.jsx("div",{className:n.emptyState,children:t.jsx("p",{className:"tf-empty-copy",children:"Select an image attachment to annotate."})})})})]}),t.jsxs("div",{className:n.statusBar,children:[t.jsx("span",{children:Y==="error"?"Save failed. Retry now.":Y==="saving"||Y==="pending"?"Saving…":"Saved"}),Un?t.jsx("span",{children:Un}):t.jsx("span",{children:b?X?"Drag on the image to pan.":E==="select"?"Select a marker to edit it.":`Click on the image to place a ${E}.`:"Create a session to begin placing markers on this image."}),d&&!b&&Ga?t.jsx("button",{type:"button",className:`tf-button-ghost tf-button-compact ${n.ghostBtn} ${n.toolbarButton}`,onClick:()=>{ga()},disabled:ee||Pt,children:ee?"Creating…":"Create one now"}):null]})]}),t.jsx("section",{className:`tf-surface-panel ${n.panel} ${n.detailPanel}`,children:b?t.jsxs(t.Fragment,{children:[t.jsx("div",{className:n.panelHeader,children:t.jsxs("div",{className:n.panelHeaderText,children:[t.jsx("div",{className:`tf-heading-card ${n.panelTitle}`,children:"Markers"}),t.jsxs("div",{className:"tf-text-secondary",children:[R.length," in this session"]})]})}),t.jsxs(As,{sensors:as,collisionDetection:Es,onDragStart:_s,onDragEnd:ks,onDragCancel:()=>cn(null),children:[t.jsx("div",{className:`tf-scrollbar ${n.annotationList}`,children:R.length===0?t.jsx("div",{className:n.detailEmpty,children:t.jsx("p",{className:"tf-empty-copy",children:"Add a marker on the image to begin."})}):t.jsx(Ps,{items:R.map(e=>e.id),strategy:Ms,children:R.map((e,a)=>{const o=La[e.kind],i=Ra[e.kind],c=`${i} ${a+1}`,m=Xi[e.markerType||ye],S=ja.find(k=>k.value===(e.markerType||ye))?.label||"Review",u=A===e.id,p=u&&!it;return t.jsx(Yi,{id:e.id,children:({attributes:k,listeners:w,setNodeRef:C,transform:G,transition:Le,isDragging:Nt})=>t.jsxs("div",{className:`tf-surface-elevated ${n.annotationCard} ${u?n.annotationCardActive:""} ${Nt?n.annotationCardDragging:""}`,ref:N=>{C(N),N?Nn.current.set(e.id,N):Nn.current.delete(e.id)},style:{...u?{"--annotation-card-accent":rn(e)}:{},transform:Bs.Transform.toString(G),transition:Le},onBlur:N=>{N.currentTarget.contains(N.relatedTarget)||Q(!0)},children:[t.jsxs("div",{className:n.annotationMeta,children:[t.jsx("button",{type:"button",className:n.annotationDragHandle,"aria-label":`Reorder ${c}`,title:"Drag to reorder. Press Space, then use the arrow keys to reorder with the keyboard.",...k,...w,children:t.jsx(Ta,{size:16})}),t.jsx("button",{type:"button",className:n.annotationCardButton,onClick:()=>{ys(e.id)},"aria-label":i,"aria-expanded":p,children:t.jsx("span",{className:`tf-heading-card ${n.annotationTitle}`,children:c})}),t.jsx("span",{className:`tf-text-meta ${n.annotationKind}`,"aria-hidden":"true",children:t.jsx(o,{size:16})})]}),p?t.jsxs("div",{className:n.annotationInstructionEditor,children:[t.jsx("label",{className:"tf-field-label",htmlFor:"annotated-marker-instruction",children:"Marker instruction"}),t.jsx("textarea",{id:"annotated-marker-instruction",ref:u?na:null,className:`tf-field-shell ${n.textArea} ${n.annotationInstructionField}`,value:e.instruction,onChange:N=>{ie(e.id,Ie=>({...Ie,instruction:N.target.value}),600)},onBlur:()=>{M("text")},placeholder:"What should the AI focus on for this marker?"}),t.jsxs("div",{className:n.annotationTypeField,children:[t.jsx("label",{className:"tf-field-label",htmlFor:"annotated-marker-type",children:"Instruction type"}),t.jsx("select",{id:"annotated-marker-type",className:`tf-field-shell ${n.select}`,value:e.markerType||ye,onChange:N=>{ie(e.id,Ie=>al(Ie,N.target.value))},children:ja.map(N=>t.jsx("option",{value:N.value,children:N.label},N.value))})]}),t.jsxs("details",{className:n.annotationGeometryDetails,children:[t.jsx("summary",{className:"tf-field-label",children:"Precise placement"}),t.jsx("div",{className:n.annotationGeometryFields,"aria-label":"Marker geometry percent controls",children:cl(e).map(N=>t.jsxs("label",{className:n.annotationGeometryField,children:[t.jsx("span",{className:`tf-text-meta ${n.annotationGeometryLabel}`,children:N.label}),t.jsx("input",{className:`tf-field-shell ${n.annotationGeometryInput}`,type:"number",min:0,max:100,step:.1,value:N.value,onChange:Ie=>{const Qt=il(Ie.target.value);Qt!==null&&ie(e.id,Ls=>ll(Ls,N.key,Qt))},"aria-label":`${N.label} percent`})]},N.key))})]})]}):t.jsx("button",{type:"button",className:n.annotationInstructionButton,onClick:()=>{Ct(e.id)},"aria-label":`Edit ${i} instruction`,children:t.jsxs("div",{className:n.annotationInstructionEditor,children:[e.instruction.trim()?t.jsx("div",{className:`tf-text-secondary ${n.annotationInstructionPreview}`,children:e.instruction.trim()}):null,t.jsx("div",{className:n.annotationPreviewFooter,children:t.jsx("span",{className:`tf-text-meta ${n.annotationInstructionTypeIcon}`,"aria-label":`Instruction type: ${S}`,title:S,children:t.jsx(m,{size:16})})})]})})]})},e.id)})})}),t.jsx(Fs,{children:vt?t.jsxs("div",{className:`tf-surface-elevated ${n.annotationCard} ${n.annotationDragOverlay}`,"data-testid":"annotation-drag-overlay",children:[t.jsxs("div",{className:n.annotationMeta,children:[t.jsx(Ta,{size:16,className:n.annotationDragOverlayGrip}),t.jsx("span",{className:`tf-heading-card ${n.annotationTitle} ${n.annotationDragOverlayTitle}`,children:Ra[vt.kind]}),t.jsx("span",{className:`tf-text-meta ${n.annotationKind}`,"aria-hidden":"true",children:en.createElement(La[vt.kind],{size:16})})]}),vt.instruction.trim()?t.jsx("div",{className:`tf-text-secondary ${n.annotationInstructionPreview}`,children:vt.instruction.trim()}):null]}):null})]})]}):t.jsxs("div",{className:n.emptyState,children:[t.jsx("strong",{className:"tf-empty-title",children:"No active session"}),t.jsx("p",{className:"tf-empty-copy",children:"Create or select a session to edit annotations."})]})}),t.jsx(nn,{isOpen:qa,onClose:()=>{lt||(Ht(!1),zt(""))},title:"Open Image",size:"sm",children:t.jsxs("form",{className:n.openImageModalBody,onSubmit:e=>{e.preventDefault(),os()},children:[t.jsx("label",{className:"tf-field-label",htmlFor:"annotated-open-image-reference",children:"Image reference number"}),t.jsx("input",{id:"annotated-open-image-reference",className:`tf-field-shell ${n.textInput} ${n.openImageField}`,value:bn,onChange:e=>zt(e.target.value),placeholder:"I-24",autoFocus:!0}),t.jsxs("div",{className:n.openImageActions,children:[t.jsx("button",{type:"button",className:"tf-button-ghost tf-button-compact",onClick:()=>{Ht(!1),zt("")},disabled:lt,children:"Cancel"}),t.jsx("button",{type:"submit",className:"tf-button-primary tf-button-compact",disabled:lt,children:lt?"Opening…":"Open"})]})]})}),t.jsx(nn,{isOpen:Ya,onClose:()=>qn(!1),title:"How To Use Markers",size:"md",children:t.jsx("div",{className:n.markerHelpModalBody,children:$a.filter(e=>e.value!=="select").map(e=>t.jsxs("div",{className:`tf-surface-inset ${n.markerHelpItem}`,children:[t.jsxs("div",{className:n.markerHelpHeader,children:[t.jsx("strong",{className:"tf-heading-card",children:e.label}),t.jsx("span",{className:"tf-text-meta",children:an[e.value].short})]}),t.jsx("p",{className:"tf-text-secondary",children:an[e.value].detail}),t.jsx("p",{className:`tf-text-body ${n.markerHelpExample}`,children:an[e.value].example})]},e.value))})}),t.jsx(nn,{isOpen:Va,onClose:()=>{ze||Bt(!1)},title:"Link Session to Task",size:"sm",children:t.jsxs("div",{className:n.taskLinkModalBody,children:[t.jsx("p",{className:"tf-text-secondary",children:"This links the review session only. The image stays unattached."}),t.jsx("input",{className:`tf-field-shell ${n.textInput}`,value:hn,onChange:e=>Vn(e.target.value),placeholder:"Search tasks...","aria-label":"Search tasks",autoFocus:!0}),Ft?t.jsx("div",{className:n.detailEmpty,children:t.jsx("p",{className:"tf-empty-copy",children:"Loading tasks…"})}):la.length===0?t.jsx("div",{className:n.detailEmpty,children:t.jsx("p",{className:"tf-empty-copy",children:"No tasks match your search."})}):t.jsx("div",{className:`tf-scrollbar ${n.taskLinkList}`,children:la.map(e=>{const a=String(e.referenceLabel||e.id).trim()||e.id,o=e.id===b?.taskId;return t.jsxs("button",{type:"button",className:`tf-surface-elevated ${n.taskLinkOption} ${o?n.taskLinkOptionActive:""}`,onClick:()=>{Rn(e.id)},disabled:ze||o,children:[t.jsx("span",{className:n.taskLinkOptionTitle,children:e.title}),t.jsxs("span",{className:"tf-text-meta",children:[a,o?" · Linked":""]})]},e.id)})}),t.jsxs("div",{className:n.taskLinkActions,children:[t.jsx("button",{type:"button",className:"tf-button-ghost tf-button-compact",onClick:()=>Bt(!1),disabled:ze,children:"Cancel"}),b?.taskId?t.jsx("button",{type:"button",className:"tf-button-ghost tf-button-compact",onClick:()=>{Rn(null)},disabled:ze,children:"Unlink"}):null]})]})}),t.jsx(nn,{isOpen:Ka,onClose:()=>mn(!1),title:"AI Payload",size:"lg",children:t.jsxs("div",{className:n.payloadModalBody,children:[t.jsxs("div",{className:n.payloadModalToolbar,children:[t.jsxs("div",{className:n.payloadViewToggle,children:[t.jsx("button",{type:"button",className:`tf-button-ghost tf-button-compact ${n.toolBtn} ${fn==="json"?n.toolBtnActive:""}`,onClick:()=>Kn("json"),children:"JSON"}),t.jsx("button",{type:"button",className:`tf-button-ghost tf-button-compact ${n.toolBtn} ${fn==="brief"?n.toolBtnActive:""}`,onClick:()=>Kn("brief"),children:"AI Brief"})]}),t.jsxs("div",{className:n.payloadModalActions,children:[t.jsxs("button",{type:"button",className:`tf-button-ghost tf-button-compact ${n.ghostBtn}`,onClick:()=>{ba("json")},disabled:!fe,"aria-label":be==="json"?"Copied JSON":"Copy JSON",title:be==="json"?"Copied JSON":"Copy JSON",children:[be==="json"?t.jsx(Dn,{size:16}):t.jsx(En,{size:16}),t.jsx("span",{children:"JSON"})]}),t.jsxs("button",{type:"button",className:`tf-button-ghost tf-button-compact ${n.ghostBtn}`,onClick:()=>{ba("brief")},disabled:!fe,"aria-label":be==="brief"?"Copied AI Brief":"Copy AI Brief",title:be==="brief"?"Copied AI Brief":"Copy AI Brief",children:[be==="brief"?t.jsx(Dn,{size:16}):t.jsx(En,{size:16}),t.jsx("span",{children:"AI Brief"})]})]})]}),Mt?t.jsx("div",{className:n.detailEmpty,children:t.jsx("p",{className:"tf-empty-copy",children:"Loading payload…"})}):fe?t.jsx("pre",{className:`tf-surface-inset tf-scrollbar ${n.payloadModalPreview}`,children:fn==="json"?JSON.stringify(fe,null,2):Ea(fe)}):t.jsx("div",{className:n.detailEmpty,children:t.jsx("p",{className:"tf-empty-copy",children:"Load a payload preview to inspect the current session contract."})})]})})]})}export{vl as AnnotatedAttachmentWorkspaceShell};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
._root_7pmuk_1{position:relative;display:inline-flex;align-items:center;gap:4px;max-width:100%}._trigger_7pmuk_9,._directionToggle_7pmuk_10{display:inline-flex;align-items:center;height:28px;border:1px solid var(--border-default);border-radius:var(--radius-md);background:color-mix(in srgb,var(--surface-inset) 88%,transparent);color:var(--text-secondary);font:inherit;font-size:.72rem;font-weight:600;cursor:pointer;transition:background var(--transition-base),border-color var(--transition-base),color var(--transition-base)}._trigger_7pmuk_9{gap:6px;min-width:0;padding:0 8px}._directionToggle_7pmuk_10{justify-content:center;width:28px;padding:0}._trigger_7pmuk_9:hover,._triggerOpen_7pmuk_38,._directionToggle_7pmuk_10:hover{border-color:var(--brand-primary-border);background:color-mix(in srgb,var(--surface-hover) 74%,transparent);color:var(--text-primary)}._triggerLabel_7pmuk_45{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._menu_7pmuk_51{position:absolute;top:calc(100% + 6px);right:0;z-index:60;width:min(188px,calc(100vw - 32px));padding:6px;border:1px solid var(--border-default);border-radius:var(--radius-md);background:var(--surface-panel);box-shadow:0 14px 34px #080a182e}._menuLabel_7pmuk_64{padding:4px 6px 6px;color:var(--text-muted);font-size:.64rem;font-weight:700;text-transform:uppercase}._menuItem_7pmuk_72{display:flex;align-items:center;gap:7px;width:100%;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--text-secondary);font:inherit;font-size:.74rem;text-align:left;cursor:pointer;justify-content:space-between;padding:7px 8px}._menuItem_7pmuk_72:hover{background:var(--surface-hover);color:var(--text-primary)}._menuItemActive_7pmuk_94{background:var(--brand-primary-soft);color:var(--brand-primary-strong)}._menuItemLabel_7pmuk_99{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{R as _,j as o}from"./vendor-react-CKJs5o3c.js";import{i as k}from"./index-Cx7vZJHL.js";import{Y as v,a as I,f as N,g as x,e as w}from"./vendor-icons-B8ZNsH1g.js";const y=[{value:"updated",label:"Updated"},{value:"reference",label:"Reference"},{value:"name",label:"Name"},{value:"size",label:"Size"},{value:"created",label:"Created"}];function g(e){if(typeof e?.referenceNumber=="number"&&Number.isFinite(e.referenceNumber))return e.referenceNumber;const r=String(e?.referenceLabel||e?.imageReferenceLabel||"").match(/(\d+)/);return r?parseInt(r[1],10):0}function j(e){if(!e)return"";const t=e.displayName||e.title||e.originalFilename||e.fsPath||e.path||e.storageKey||"";return String(t).toLowerCase()}function C(e){return k(e).toLowerCase()}function m(e,t){return String(t(e)||"").toLowerCase()}function S(e){const t=e?.sizeBytes;return typeof t=="number"&&Number.isFinite(t)?t:0}function f(e,t){const r=e?.createdAt,l=e?.updatedAt,a=t?r||l:l||r;if(!a)return 0;const n=Date.parse(String(a));return Number.isNaN(n)?0:n}function A(e,t,r,l,a=j){let n=0;if(r==="reference"){const u=g(e),d=g(t);n=u-d,n===0&&(n=m(e,a).localeCompare(m(t,a)))}else r==="name"?n=m(e,a).localeCompare(m(t,a)):r==="size"?n=S(e)-S(t):r==="created"?n=f(e,!0)-f(t,!0):n=f(e,!1)-f(t,!1);return n!==0?l==="desc"?-n:n:(n=g(t)-g(e),n!==0?n:m(e,a).localeCompare(m(t,a)))}function D(e,t,r,l){return[...e].sort((a,n)=>A(a,n,t,r,l))}function q(e,t,r){return D(e,t,r,C)}const R="_root_7pmuk_1",O="_trigger_7pmuk_9",T="_directionToggle_7pmuk_10",z="_triggerOpen_7pmuk_38",$="_triggerLabel_7pmuk_45",F="_menu_7pmuk_51",E="_menuLabel_7pmuk_64",P="_menuItem_7pmuk_72",U="_menuItemActive_7pmuk_94",K="_menuItemLabel_7pmuk_99",c={root:R,trigger:O,directionToggle:T,triggerOpen:z,triggerLabel:$,menu:F,menuLabel:E,menuItem:P,menuItemActive:U,menuItemLabel:K};function G({field:e,order:t,onFieldChange:r,onOrderChange:l,className:a}){const[n,u]=_.useState(!1),d=_.useRef(null),p=y.find(s=>s.value===e)??y[0],L=t==="desc"?N:x;_.useEffect(()=>{if(!n)return;const s=b=>{d.current?.contains(b.target)||u(!1)},i=b=>{b.key==="Escape"&&u(!1)};return document.addEventListener("mousedown",s),document.addEventListener("keydown",i),()=>{document.removeEventListener("mousedown",s),document.removeEventListener("keydown",i)}},[n]);const h=s=>{r(s),u(!1)};return o.jsxs("div",{ref:d,className:`${c.root} ${a||""}`.trim(),children:[o.jsxs("button",{type:"button",className:`${c.trigger} ${n?c.triggerOpen:""}`.trim(),onClick:()=>u(s=>!s),"aria-haspopup":"menu","aria-expanded":n,"aria-label":`Sort tray by ${p.label}`,title:`Sort by ${p.label}`,children:[o.jsx(v,{size:13}),o.jsx("span",{className:c.triggerLabel,children:p.label}),o.jsx(I,{size:13})]}),o.jsx("button",{type:"button",className:c.directionToggle,onClick:()=>l(t==="desc"?"asc":"desc"),"aria-label":`Sort tray ${t==="desc"?"descending":"ascending"}`,title:t==="desc"?"Sort descending":"Sort ascending",children:o.jsx(L,{size:13})}),n?o.jsxs("div",{className:c.menu,role:"menu","aria-label":"Sort tray items",children:[o.jsx("div",{className:c.menuLabel,children:"Sort by"}),y.map(s=>{const i=s.value===e;return o.jsxs("button",{type:"button",role:"menuitemradio","aria-checked":i,className:`${c.menuItem} ${i?c.menuItemActive:""}`.trim(),onClick:()=>h(s.value),children:[o.jsx("span",{className:c.menuItemLabel,children:s.label}),i?o.jsx(w,{size:13}):null]},s.value)})]}):null]})}export{G as A,q as a,D as s};
|