@taskforcehq/taskforce 0.3.324 → 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 +2191 -540
- 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 +257 -151
- 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 +11 -12
- 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 +1684 -620
- 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 +62 -51
- package/dist/components/views/panels/PlanningDrawer.js +993 -314
- package/dist/components/views/planningScope.d.ts +4 -0
- package/dist/components/views/planningScope.js +12 -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 +516 -252
- 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 +1106 -396
- 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 +42 -6
- package/dist/hooks/workspace/workspaceLocalState.js +213 -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 -40
- 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 +104 -53
- package/dist/mcp/clientRegistry.d.ts +30 -0
- package/dist/mcp/clientRegistry.js +134 -0
- package/dist/mcp/collaborationRegistrar.js +21 -7
- package/dist/mcp/documentAssetRegistrar.js +227 -107
- package/dist/mcp/documentContentCommand.d.ts +94 -0
- package/dist/mcp/documentContentCommand.js +226 -0
- package/dist/mcp/documentHelpers.d.ts +14 -59
- package/dist/mcp/documentHelpers.js +52 -61
- 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 +86 -1
- package/dist/mcp/runtime.js +4562 -2270
- 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 +253 -101
- 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 +18 -0
- package/dist/mcp/toolProfiles.js +79 -0
- package/dist/mcp/toolRegistry.d.ts +102 -609
- package/dist/mcp/toolRegistry.js +108 -88
- 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/shared/taxonomyLibrary.js +1 -1
- 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 +596 -4
- 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 +2 -4
- 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/theme.js +1 -1
- 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 -37
- 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 -110
- package/dist/resources/templates/workflows/do.yaml +0 -88
- package/dist/resources/templates/workflows/evaluate.yaml +0 -117
- package/dist/resources/templates/workflows/execute.yaml +0 -159
- package/dist/resources/templates/workflows/plan.yaml +0 -119
- package/dist/resources/templates/workflows/review.yaml +0 -115
- 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-DvkbUHi0.js +0 -1
- package/dist/ui/assets/AnnotatedAttachmentWorkspace-BVKew-mH.css +0 -1
- package/dist/ui/assets/AnnotatedAttachmentWorkspace-jhOhxqHT.js +0 -3
- package/dist/ui/assets/ContextAttachmentManager-BAmEyLHL.js +0 -3
- package/dist/ui/assets/DocumentWorkspace-D4rJKXzd.css +0 -1
- package/dist/ui/assets/DocumentWorkspace-X-CpD5OO.js +0 -252
- package/dist/ui/assets/EntityActivityTimeline-DD33onAC.js +0 -1
- package/dist/ui/assets/EntityActivityTimeline-DyqvvhuF.css +0 -1
- package/dist/ui/assets/InitiativesModule-5nDXtIjf.js +0 -1
- package/dist/ui/assets/PlansPage-B8nDR1hQ.js +0 -1
- package/dist/ui/assets/PlansPage-DeAzWYTb.css +0 -1
- package/dist/ui/assets/TaskContextUpload-DrGrXJHm.js +0 -1
- package/dist/ui/assets/TaskSettings-BXVvZZwH.js +0 -9
- package/dist/ui/assets/WorkflowsModule-DWCGhEWT.js +0 -5
- package/dist/ui/assets/documentReferences-Crup321p.js +0 -1
- package/dist/ui/assets/index-B9k24Aym.js +0 -5
- package/dist/ui/assets/index-DNeR5dYW.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 -110
- package/src/resources/templates/workflows/do.yaml +0 -88
- package/src/resources/templates/workflows/evaluate.yaml +0 -117
- package/src/resources/templates/workflows/execute.yaml +0 -159
- package/src/resources/templates/workflows/plan.yaml +0 -119
- package/src/resources/templates/workflows/review.yaml +0 -115
- /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,21 @@
|
|
|
1
|
+
import{j as e,r,a as Va}from"./vendor-react-CKJs5o3c.js";import{f as ht,z as Pt,B as Dt,C as Ze,t as a,E as Wa,v as Zs,F as In,G as En,H as $n,J as Ja,K as Bs,L as Hs,N as Fs,O as Ln,Q as qt,S as xs,U as Ya,V as Qa,M as Xa,W as Za,X as ta,Y as er,Z as tr,_ as sr,$ as ys,a0 as Pn}from"./index-Cx7vZJHL.js";import{a as mt,A as nr,b as ar,w as Dn,r as Mn}from"./AiIdentityRosterCard-DB1BLO_j.js";import{ae as Qt,aT as ws,j as It,a3 as rr,t as sa,s as ir,ap as or,z as en,aU as lr,aV as $t,N as vt,aW as cr,aX as dr,L as ur,aI as mr,aY as fr,S as rn,aZ as pr,P as xt,h as Oe,R as on,x as tn,e as hr,X as Lt,q as gt,a_ as gr,A as vr,g as na,f as aa,B as Tt,Z as xr,E as yr,y as br,o as kr,a$ as Un,b0 as jr}from"./vendor-icons-B8ZNsH1g.js";import"./vendor-markdown-_lhNCyq-.js";import"./vendor-dnd-CJ-AjP-Y.js";import"./vendor-router-AqJMU8Lz.js";const qs=1,Ce={name:80,shortDescription:240,purpose:2e3,listItem:1e3,listItems:24,workingGuidance:6e3,reference:200,promptContent:12e3};function On(t){return!!t&&typeof t=="object"&&!Array.isArray(t)}function Ae(t,n,i,o){t.push({code:n,path:i,message:o})}function zn(t,n,i,o){const d=new Set(n);Object.keys(t).forEach(C=>{d.has(C)||Ae(o,"unknown_field",i?`${i}.${C}`:C,"This field is not part of Agent Role v1.")})}function Ks(t,n,i,o){if(typeof t!="string")return Ae(o,"required_string",n,"A string value is required."),"";const d=t.trim();return d?d.length>i&&Ae(o,"string_too_long",n,`Must be ${i} characters or less.`):Ae(o,"required_string",n,"A non-empty value is required."),d}function Sr(t,n,i,o){if(t==null||t==="")return;if(typeof t!="string"){Ae(o,"invalid_string",n,"Must be a string when provided.");return}const d=t.trim();if(d)return d.length>i&&Ae(o,"string_too_long",n,`Must be ${i} characters or less.`),d}function bs(t,n,i,o){if(!Array.isArray(t))return Ae(o,"invalid_list",n,"Must be an array of strings."),[];i.required&&t.length===0&&Ae(o,"required_list",n,"Provide at least one item."),i.maxItems&&t.length>i.maxItems&&Ae(o,"too_many_items",n,`Provide no more than ${i.maxItems} items.`);const d=new Set,C=[];return t.forEach((S,x)=>{if(typeof S!="string"){Ae(o,"invalid_string",`${n}[${x}]`,"Must be a string.");return}const k=S.trim();if(!k){Ae(o,"empty_list_item",`${n}[${x}]`,"List items cannot be blank.");return}k.length>i.maxItemLength&&Ae(o,"string_too_long",`${n}[${x}]`,`Must be ${i.maxItemLength} characters or less.`),!d.has(k)&&(d.add(k),C.push(k))}),C}function ra(t){const n=[];if(!On(t))return{definition:null,issues:[{code:"invalid_definition",path:"",message:"Agent Role definition must be an object."}]};zn(t,["schemaVersion","name","shortDescription","purpose","responsibilities","expectedOutputs","workingGuidance","recommendations"],"",n),t.schemaVersion!==qs&&Ae(n,"unsupported_schema_version","schemaVersion",`Agent Role schemaVersion must be ${qs}.`);const i=Ks(t.name,"name",Ce.name,n),o=Ks(t.shortDescription,"shortDescription",Ce.shortDescription,n),d=Ks(t.purpose,"purpose",Ce.purpose,n),C=bs(t.responsibilities,"responsibilities",{required:!0,maxItems:Ce.listItems,maxItemLength:Ce.listItem},n),S=bs(t.expectedOutputs,"expectedOutputs",{required:!0,maxItems:Ce.listItems,maxItemLength:Ce.listItem},n),x=Sr(t.workingGuidance,"workingGuidance",Ce.workingGuidance,n),k=On(t.recommendations)?t.recommendations:null;k?zn(k,["skillRefs","capabilityGroups"],"recommendations",n):Ae(n,"invalid_recommendations","recommendations","Recommendations must be an object.");const O=bs(k?.skillRefs??[],"recommendations.skillRefs",{maxItems:Ce.listItems,maxItemLength:Ce.reference},n),B=bs(k?.capabilityGroups??[],"recommendations.capabilityGroups",{maxItems:Ce.listItems,maxItemLength:Ce.reference},n),F={schemaVersion:qs,name:i,shortDescription:o,purpose:d,responsibilities:C,expectedOutputs:S,...x?{workingGuidance:x}:{},recommendations:{skillRefs:O,capabilityGroups:B}};return n.length===0&&ia(F).length>Ce.promptContent&&Ae(n,"compiled_prompt_too_long","",`Compiled Role prompt content must be ${Ce.promptContent} characters or less.`),{definition:n.length===0?F:null,issues:n}}class Ar extends Error{constructor(n){super(n[0]?.message||"Agent Role definition is invalid."),this.issues=n,this.name="AgentRoleDefinitionValidationError"}code="AGENT_ROLE_DEFINITION_INVALID";statusCode=400}function Nr(t){const n=ra(t);if(!n.definition)throw new Ar(n.issues);return n.definition}function Gn(t){return t.map(n=>`- ${n}`).join(`
|
|
2
|
+
`)}function ia(t){return[`Role: ${t.name}`,`Purpose and scope:
|
|
3
|
+
${t.purpose}`,`Responsibilities:
|
|
4
|
+
${Gn(t.responsibilities)}`,`Expected outputs:
|
|
5
|
+
${Gn(t.expectedOutputs)}`,t.workingGuidance?`Role-specific working guidance:
|
|
6
|
+
${t.workingGuidance}`:""].filter(Boolean).join(`
|
|
7
|
+
|
|
8
|
+
`)}function wr(t){return ia(Nr(t))}const Cr="_toolAccess_2stgb_1",_r="_skillSelector_2stgb_2",Rr="_effectiveSummary_2stgb_3",Tr="_sectionHeader_2stgb_13",Ir="_workspaceHeader_2stgb_14",Er="_titleLine_2stgb_32",$r="_moduleGrid_2stgb_36",Lr="_moduleOption_2stgb_42",Pr="_unavailableCapability_2stgb_43",Dr="_moduleOptionSelected_2stgb_66",Mr="_moduleIcon_2stgb_76",Ur="_selectedSkillIcon_2stgb_77",Or="_provenanceIcon_2stgb_78",zr="_moduleCopy_2stgb_91",Gr="_futureGroups_2stgb_110",Br="_unknownNotice_2stgb_122",Hr="_disabledExplanation_2stgb_123",Fr="_catalogError_2stgb_147",qr="_selectedSkills_2stgb_160",Kr="_skillSearch_2stgb_168",Vr="_skillResults_2stgb_188",Wr="_emptySelection_2stgb_266",Jr="_provenanceGrid_2stgb_275",Yr="_unavailableProvenance_2stgb_312",Qr="_previewCaveat_2stgb_316",Xr="_librarySummary_2stgb_323",Zr="_workspacePanel_2stgb_346",ei="_futureAction_2stgb_356",ti="_workspaceTitleIcon_2stgb_370",si="_previewCardIcon_2stgb_371",ni="_relationshipFlow_2stgb_389",ai="_previewCards_2stgb_420",ri="_previewCard_2stgb_371",ii="_previewCardAvailable_2stgb_438",D={toolAccess:Cr,skillSelector:_r,effectiveSummary:Rr,sectionHeader:Tr,workspaceHeader:Ir,titleLine:Er,moduleGrid:$r,moduleOption:Lr,unavailableCapability:Pr,moduleOptionSelected:Dr,moduleIcon:Mr,selectedSkillIcon:Ur,provenanceIcon:Or,moduleCopy:zr,futureGroups:Gr,unknownNotice:Br,disabledExplanation:Hr,catalogError:Fr,selectedSkills:qr,skillSearch:Kr,skillResults:Vr,emptySelection:Wr,provenanceGrid:Jr,unavailableProvenance:Yr,previewCaveat:Qr,librarySummary:Xr,workspacePanel:Zr,futureAction:ei,workspaceTitleIcon:ti,previewCardIcon:si,relationshipFlow:ni,previewCards:ai,previewCard:ri,previewCardAvailable:ii},ln=[{key:"tasks",label:"Tasks and schedule",description:"Read and update tasks, checklists, task workflows, and schedule context.",icon:It},{key:"planning",label:"Initiatives and workstreams",description:"Read planning structure and add planning comments.",icon:rr},{key:"documents",label:"Documents",description:"Find and read Taskforce documents and their review context.",icon:sa},{key:"images",label:"Image Notes",description:"Find images and inspect annotation sessions.",icon:ir},{key:"workspace",label:"Workspace information",description:"Read workspace configuration, people, and managed Agent identity.",icon:or}],oi=ln.map(t=>t.key);function cn({selectedKeys:t,onChange:n,disabled:i=!1,mode:o="active",title:d="Tool Access",description:C,showFutureTools:S=!0,requireOne:x=!1,hasCustomOverrides:k=!1}){const O=new Set(t),B=new Set(oi),F=t.filter(_=>!B.has(_)),q=o==="active"?"Available now":o==="requirement"?"Requirement preview":"Inheritance preview",K=o==="active"?"tf-chip-success":"tf-chip-warning",j=(_,M)=>{if(!n||i)return;const W=M?[...t.filter(re=>re!==_),_]:t.filter(re=>re!==_),$=W.filter(re=>B.has(re)).length;x&&$===0||n(W)};return e.jsxs("section",{className:D.toolAccess,"aria-label":d,children:[e.jsxs("div",{className:D.sectionHeader,children:[e.jsxs("div",{children:[e.jsx("h3",{className:"tf-heading-section",children:d}),e.jsx("p",{className:"tf-text-helper",children:C||"Choose which Taskforce modules this Agent can use. Fewer enabled tools reduce runtime tool context."})]}),e.jsx("span",{className:K,children:q})]}),e.jsx("div",{className:D.moduleGrid,children:ln.map(_=>{const M=_.icon,W=O.has(_.key);return e.jsxs("label",{className:`${D.moduleOption} ${W?D.moduleOptionSelected:""}`.trim(),children:[e.jsx("input",{type:"checkbox",checked:W,disabled:i||!n,onChange:$=>j(_.key,$.target.checked)}),e.jsx("span",{className:D.moduleIcon,"aria-hidden":"true",children:e.jsx(M,{size:16})}),e.jsxs("span",{className:D.moduleCopy,children:[e.jsx("strong",{children:_.label}),e.jsx("small",{children:_.description})]})]},_.key)})}),k?e.jsxs("div",{className:D.unknownNotice,role:"status",children:[e.jsx(en,{size:14}),e.jsx("span",{children:"Custom per-tool overrides are active. Change any module selection to replace them with the module policy shown here."})]}):null,F.length>0?e.jsxs("div",{className:D.unknownNotice,role:"status",children:[e.jsx(en,{size:14}),e.jsxs("span",{children:["Preserved legacy keys: ",F.join(", "),". They are not available in the current managed Tool Access catalog."]}),n&&!i?e.jsx("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:()=>n(t.filter(_=>B.has(_))),children:"Remove unsupported keys"}):null]}):null,S?e.jsxs("div",{className:D.futureGroups,children:[e.jsx(Fn,{icon:e.jsx(Qt,{size:16}),title:"Connected tools",description:"Workspace-approved APIs and external MCP tools will appear here.",status:"Connections not available yet"}),e.jsx(Fn,{icon:e.jsx(lr,{size:16}),title:"Code Workspace",description:"Repository read, edit, Git, and publication access will be configured separately.",status:"Code Workspace not configured"})]}):null]})}function li({skills:t,selectedIds:n,onChange:i,disabled:o=!1,loading:d=!1,error:C="",onRetry:S}){const[x,k]=r.useState(""),O=r.useRef(null),B=new Set(n),F=x.trim().toLowerCase(),q=t.filter(j=>j.lifecycleStatus==="active"&&!B.has(j.id)).filter(j=>!F||j.name.toLowerCase().includes(F)||j.description.toLowerCase().includes(F)).slice(0,8),K=new Map(t.map(j=>[j.id,j]));return e.jsxs("section",{className:D.skillSelector,"aria-label":"Included Skills",children:[e.jsxs("div",{className:D.sectionHeader,children:[e.jsxs("div",{children:[e.jsx("h3",{className:"tf-heading-section",children:"Included Skills"}),e.jsx("p",{className:"tf-text-helper",children:"Select Skills by name. They are saved with this Role now; automatic Agent inheritance is preview-only."})]}),e.jsx("span",{className:"tf-chip-warning",children:"Inheritance preview"})]}),e.jsxs("label",{className:"tf-field-stack",children:[e.jsx("span",{className:"tf-field-label",children:"Find a Skill"}),e.jsxs("span",{className:D.skillSearch,children:[e.jsx(rn,{size:15,"aria-hidden":"true"}),e.jsx("input",{ref:O,type:"search",className:"tf-field-shell","aria-label":"Find a Skill to include",placeholder:d?"Loading Skills…":"Search by name or description",value:x,disabled:o||d,onChange:j=>k(j.target.value)})]})]}),C?e.jsxs("div",{className:D.catalogError,role:"alert",children:[e.jsx("span",{children:C}),S?e.jsx("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:S,children:"Retry"}):null]}):!d&&q.length>0?e.jsx("div",{className:D.skillResults,"aria-label":"Available Skills",children:q.map(j=>e.jsxs("button",{type:"button",disabled:o,onClick:()=>{i([...n,j.id]),k(""),O.current?.focus()},children:[e.jsxs("span",{children:[e.jsx("strong",{children:j.name}),e.jsx("small",{children:j.description||"No description"})]}),e.jsx("span",{className:"tf-chip-neutral",children:"Add"})]},j.id))}):d?null:e.jsx("p",{className:D.emptySelection,children:t.some(j=>j.lifecycleStatus==="active"&&!B.has(j.id))?"No Skills match this search.":"No additional Skills available."}),n.length>0?e.jsx("ul",{className:D.selectedSkills,children:n.map(j=>{const _=K.get(j);return e.jsxs("li",{children:[e.jsx("span",{className:D.selectedSkillIcon,"aria-hidden":"true",children:e.jsx(vt,{size:15})}),e.jsxs("span",{children:[e.jsx("strong",{children:_?.name||"Missing Skill"}),e.jsx("small",{children:_?.description||j})]}),e.jsx("button",{type:"button",className:"tf-button-ghost tf-button-compact",disabled:o,onClick:()=>{i(n.filter(M=>M!==j)),O.current?.focus()},children:"Remove"})]},j)})}):e.jsx("p",{className:D.emptySelection,children:"No Skills included in this Role."})]})}function ci({hasRole:t,directSkillCount:n,toolKeys:i}){const o=ln.filter(d=>i.includes(d.key)).map(d=>d.label);return e.jsxs("section",{className:D.effectiveSummary,"aria-label":"Effective configuration preview",children:[e.jsxs("div",{className:D.sectionHeader,children:[e.jsxs("div",{children:[e.jsx("h3",{className:"tf-heading-section",children:"Effective configuration"}),e.jsx("p",{className:"tf-text-helper",children:"A preview of where this Agent’s behavior and access come from."})]}),e.jsx("span",{className:"tf-chip-warning",children:"Partial preview"})]}),e.jsxs("div",{className:D.provenanceGrid,children:[e.jsxs("div",{children:[e.jsx("span",{className:D.provenanceIcon,children:e.jsx($t,{size:15})}),e.jsxs("span",{children:[e.jsx("small",{children:"From Role"}),e.jsx("strong",{children:t?"Role guidance selected":"No Role selected"})]})]}),e.jsxs("div",{children:[e.jsx("span",{className:D.provenanceIcon,children:e.jsx(vt,{size:15})}),e.jsxs("span",{children:[e.jsx("small",{children:"Added to Agent"}),e.jsxs("strong",{children:[n," direct ",n===1?"Skill":"Skills"]})]})]}),e.jsxs("div",{children:[e.jsx("span",{className:D.provenanceIcon,children:e.jsx(cr,{size:15})}),e.jsxs("span",{children:[e.jsx("small",{children:"Runtime Tool Access"}),e.jsx("strong",{children:o.length>0?o.join(", "):"No modules selected"})]})]}),e.jsxs("div",{className:D.unavailableProvenance,children:[e.jsx("span",{className:D.provenanceIcon,children:e.jsx(dr,{size:15})}),e.jsxs("span",{children:[e.jsx("small",{children:"Resources"}),e.jsx("strong",{children:"Not available yet"})]})]})]}),e.jsx("p",{className:D.previewCaveat,children:"Role guidance resolves today. Role-included Skills, Role Tool Access, Connections, and Resources are shown for experience review but are not yet inherited at runtime."})]})}function Bn({kind:t}){return e.jsxs("div",{className:D.librarySummary,children:[t==="connections"?e.jsx(Qt,{size:20}):e.jsx(ws,{size:20}),e.jsx("strong",{children:t==="connections"?"No Connections configured":"No Resource Collections yet"}),e.jsx("span",{children:t==="connections"?"Connections will make approved external tools and data providers available to Roles and Agents.":"Collections will tell Roles and Agents where to look for trusted information."}),e.jsx("span",{className:"tf-chip-neutral",children:"Preview only"})]})}function Hn({kind:t}){const n=t==="connections";return e.jsxs("section",{className:D.workspacePanel,"aria-labelledby":`${t}-preview-title`,children:[e.jsxs("header",{className:D.workspaceHeader,children:[e.jsx("div",{className:D.workspaceTitleIcon,"aria-hidden":"true",children:n?e.jsx(Qt,{size:20}):e.jsx(ws,{size:20})}),e.jsxs("div",{children:[e.jsxs("div",{className:D.titleLine,children:[e.jsx("h2",{id:`${t}-preview-title`,className:"tf-heading-page",children:n?"Connections":"Resources"}),e.jsx("span",{className:"tf-chip-warning",children:"Not available yet"})]}),e.jsx("p",{className:"tf-text-secondary",children:n?"Secure workspace integrations make external tools and provider data available for explicit Role and Agent access.":"Resource Collections define trusted places Agents can search without loading full source content into every prompt."})]}),e.jsxs("button",{type:"button",className:`tf-button-primary ${D.futureAction}`,disabled:!0,children:[n?e.jsx(ur,{size:15}):e.jsx(mr,{size:15}),n?"Add Connection":"New Collection"]})]}),e.jsxs("div",{className:D.relationshipFlow,"aria-label":"Configuration relationship",children:[e.jsx("span",{children:"Workspace"}),e.jsx("strong",{children:n?"Connection":"Resource Collection"}),e.jsx("span",{children:"Role"}),e.jsx("span",{children:"Agent"}),e.jsx("span",{children:"Runtime"})]}),e.jsx("div",{className:D.previewCards,children:n?e.jsxs(e.Fragment,{children:[e.jsx(_t,{icon:e.jsx(en,{size:18}),title:"Taskforce managed tools",description:"Built-in modules use Taskforce-managed credentials and the current allowlisted runtime.",status:"Available now",available:!0}),e.jsx(_t,{icon:e.jsx(ws,{size:18}),title:"Real estate data provider",description:"Example: search listings, retrieve property details, and read market statistics.",status:"Connection required"}),e.jsx(_t,{icon:e.jsx(Qt,{size:18}),title:"External MCP server",description:"Approved server tools will be imported individually with scopes and audit controls.",status:"Not available yet"})]}):e.jsxs(e.Fragment,{children:[e.jsx(_t,{icon:e.jsx(sa,{size:18}),title:"Taskforce documents",description:"Curate existing workspace documents into a reusable source collection.",status:"Collection manager required"}),e.jsx(_t,{icon:e.jsx(fr,{size:18}),title:"News sources",description:"Example: trusted publications, feeds, topics, regions, and recency rules.",status:"Provider required"}),e.jsx(_t,{icon:e.jsx(rn,{size:18}),title:"Web and data sources",description:"Allowed domains and connected datasets will be searched on demand.",status:"Not available yet"})]})}),e.jsxs("div",{className:D.disabledExplanation,children:[e.jsx(pr,{size:16}),e.jsxs("div",{children:[e.jsx("strong",{children:"Why this is disabled"}),e.jsx("span",{children:n?"Credential storage, scopes, connection health, and external tool allowlisting are not implemented.":"Collection persistence, authorization, retrieval, and marketplace portability are not implemented."})]})]})]})}function Fn({icon:t,title:n,description:i,status:o}){return e.jsxs("div",{className:D.unavailableCapability,"aria-disabled":"true",children:[e.jsx("span",{className:D.moduleIcon,"aria-hidden":"true",children:t}),e.jsxs("span",{className:D.moduleCopy,children:[e.jsx("strong",{children:n}),e.jsx("small",{children:i})]}),e.jsx("span",{className:"tf-chip-neutral",children:o})]})}function _t({icon:t,title:n,description:i,status:o,available:d=!1}){return e.jsxs("article",{className:`${D.previewCard} ${d?D.previewCardAvailable:""}`.trim(),children:[e.jsx("div",{className:D.previewCardIcon,children:t}),e.jsxs("div",{children:[e.jsx("h3",{className:"tf-heading-card",children:n}),e.jsx("p",{className:"tf-text-secondary",children:i})]}),e.jsx("span",{className:d?"tf-chip-success":"tf-chip-neutral",children:o})]})}const di="_root_kwk43_1",ui="_rootExternalLibrary_kwk43_11",mi="_library_kwk43_15",fi="_libraryExternal_kwk43_26",pi="_libraryHeader_kwk43_39",hi="_search_kwk43_50",gi="_retiredToggle_kwk43_78",vi="_libraryList_kwk43_86",xi="_libraryState_kwk43_95",yi="_libraryError_kwk43_107",bi="_libraryStateIcon_kwk43_112",ki="_libraryCard_kwk43_117",ji="_libraryCardSelected_kwk43_139",Si="_libraryCardIcon_kwk43_145",Ai="_libraryCardBody_kwk43_156",Ni="_editor_kwk43_180",wi="_editorHeader_kwk43_187",Ci="_editorTitle_kwk43_201",_i="_editorTitleLine_kwk43_213",Ri="_headerActions_kwk43_228",Ti="_feedbackError_kwk43_235",Ii="_feedbackSuccess_kwk43_236",Ei="_confirmation_kwk43_237",$i="_fieldError_kwk43_263",Li="_empty_kwk43_288",Pi="_emptyIcon_kwk43_298",Di="_editorGrid_kwk43_309",Mi="_formColumn_kwk43_319",Ui="_previewColumn_kwk43_325",Oi="_previewHeader_kwk43_336",zi="_previewNote_kwk43_347",Gi="_preview_kwk43_325",Bi="_previewEmpty_kwk43_368",Hi="_metrics_kwk43_382",Fi="_lifecycleAction_kwk43_400",qi="_history_kwk43_410",Ki="_spinner_kwk43_465",Vi="_visuallyHidden_kwk43_469",T={root:di,rootExternalLibrary:ui,library:mi,libraryExternal:fi,libraryHeader:pi,search:hi,retiredToggle:gi,libraryList:vi,libraryState:xi,libraryError:yi,libraryStateIcon:bi,libraryCard:ki,libraryCardSelected:ji,libraryCardIcon:Si,libraryCardBody:Ai,editor:Ni,editorHeader:wi,editorTitle:Ci,editorTitleLine:_i,headerActions:Ri,feedbackError:Ti,feedbackSuccess:Ii,confirmation:Ei,fieldError:$i,empty:Li,emptyIcon:Pi,editorGrid:Di,formColumn:Mi,previewColumn:Ui,previewHeader:Oi,previewNote:zi,preview:Gi,previewEmpty:Bi,metrics:Hi,lifecycleAction:Fi,history:qi,spinner:Ki,visuallyHidden:Vi};function oa({singularLabel:t,pluralLabel:n,description:i,icon:o,items:d,selectedId:C,searchValue:S,onSearchChange:x,showRetired:k,onShowRetiredChange:O,loading:B,error:F,emptyMessage:q,onRetry:K,onCreate:j,onSelect:_,libraryPortalTarget:M}){const W=e.jsxs(e.Fragment,{children:[M?e.jsxs("button",{type:"button",className:"tf-button-primary tf-button-compact",onClick:j,children:[e.jsx(xt,{size:14})," New ",t]}):e.jsxs("div",{className:T.libraryHeader,children:[e.jsxs("div",{children:[e.jsxs("h3",{className:"tf-heading-card",children:["Available ",n]}),e.jsx("p",{className:"tf-text-helper",children:i})]}),e.jsxs("button",{type:"button",className:"tf-button-primary tf-button-compact",onClick:j,children:[e.jsx(xt,{size:14})," New"]})]}),e.jsxs("label",{className:T.search,children:[e.jsx(rn,{size:14,"aria-hidden":"true"}),e.jsxs("span",{className:T.visuallyHidden,children:["Search ",n]}),e.jsx("input",{"aria-label":`Search ${n}`,value:S,onChange:$=>x($.target.value),placeholder:`Search ${n.toLowerCase()}`})]}),e.jsxs("label",{className:T.retiredToggle,children:[e.jsx("input",{type:"checkbox",checked:k,onChange:$=>O($.target.checked)}),"Show retired"]}),e.jsx("div",{className:T.libraryList,"aria-busy":B,children:B?e.jsxs("div",{className:T.libraryState,children:[e.jsx(Oe,{size:16,className:T.spinner,"aria-hidden":"true"}),"Loading ",n,"…"]}):F?e.jsxs("div",{className:`${T.libraryState} ${T.libraryError}`,role:"alert",children:[e.jsx("span",{children:F}),K?e.jsx("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:K,children:"Retry"}):null]}):d.length===0?e.jsxs("div",{className:T.libraryState,children:[e.jsx("span",{className:T.libraryStateIcon,"aria-hidden":"true",children:o}),q]}):d.map($=>{const re=$.id===C;return e.jsxs("button",{type:"button",className:`${T.libraryCard} ${re?T.libraryCardSelected:""}`.trim(),onClick:()=>_($.id),"aria-pressed":re,children:[e.jsx("span",{className:T.libraryCardIcon,"aria-hidden":"true",children:o}),e.jsxs("span",{className:T.libraryCardBody,children:[e.jsx("strong",{children:$.name}),e.jsx("span",{children:$.description})]}),$.lifecycleStatus==="retired"?e.jsx("span",{className:"tf-chip-warning",children:"Retired"}):null]},$.id)})})]});return M?Va.createPortal(e.jsx("div",{className:`${T.library} ${T.libraryExternal}`,"aria-label":`${t} list`,children:W}),M):e.jsx("aside",{className:T.library,"aria-label":`${t} Library`,children:W})}function la({icon:t,title:n,description:i,revision:o,retired:d=!1,showActions:C,dirty:S,saving:x,onReset:k,onSave:O}){return e.jsxs("header",{className:T.editorHeader,children:[e.jsxs("div",{className:T.editorTitle,children:[e.jsx("span",{"aria-hidden":"true",children:t}),e.jsxs("div",{children:[e.jsxs("div",{className:T.editorTitleLine,children:[e.jsx("h2",{className:"tf-heading-page",children:n}),d?e.jsx("span",{className:"tf-chip-warning",children:"Retired"}):null,!d&&o?e.jsxs("span",{className:"tf-chip-accent",children:["Revision ",o]}):null]}),e.jsx("p",{className:"tf-text-secondary",children:i})]})]}),C?e.jsxs("div",{className:T.headerActions,children:[e.jsxs("button",{type:"button",className:"tf-button-secondary tf-button-compact",disabled:!S||x,onClick:k,children:[e.jsx(on,{size:14})," Reset"]}),e.jsxs("button",{type:"button",className:"tf-button-primary tf-button-compact",disabled:!S||x||d,onClick:O,children:[x?e.jsx(Oe,{size:14,className:T.spinner}):e.jsx(tn,{size:14}),"Save"]})]}):null]})}function sn({type:t,message:n}){return e.jsxs("div",{className:t==="error"?T.feedbackError:T.feedbackSuccess,role:t==="error"?"alert":"status",children:[t==="error"?e.jsx(gt,{size:15}):e.jsx(It,{size:15}),e.jsx("span",{children:n})]})}function ca(t,n){return new Map(n?t.map(i=>[i.path,i.message]):[])}function da(t,n){const i=t.find(o=>n[o.path])?.path;i&&window.requestAnimationFrame(()=>n[i]?.focus())}function qe({id:t,message:n}){return n?e.jsx("small",{id:t,className:T.fieldError,children:n}):null}function ua({icon:t,title:n,description:i,actionLabel:o,onCreate:d}){return e.jsxs("div",{className:T.empty,children:[e.jsx("span",{className:T.emptyIcon,"aria-hidden":"true",children:t}),e.jsx("h3",{className:"tf-empty-title",children:n}),e.jsx("p",{className:"tf-empty-copy",children:i}),e.jsxs("button",{type:"button",className:"tf-button-primary",onClick:d,children:[e.jsx(xt,{size:15})," ",o]})]})}function ma({title:t,message:n,entityLabel:i,saving:o,onConfirm:d,onCancel:C}){const S=r.useId(),x=r.useId(),k=r.useRef(null);return r.useEffect(()=>{const O=document.activeElement instanceof HTMLElement?document.activeElement:null;return k.current?.focus(),()=>{O?.isConnected&&O.focus()}},[]),e.jsxs("div",{className:T.confirmation,role:"alertdialog","aria-modal":"false","aria-labelledby":S,"aria-describedby":x,onKeyDown:O=>{O.key!=="Escape"||o||(O.preventDefault(),C())},children:[e.jsxs("div",{children:[e.jsx("strong",{id:S,children:t}),e.jsx("span",{id:x,children:n})]}),e.jsxs("button",{type:"button",className:"tf-button-destructive tf-button-compact",disabled:o,onClick:d,"aria-label":`Confirm ${i} retirement`,children:[e.jsx(hr,{size:14})," Retire ",i]}),e.jsxs("button",{ref:k,type:"button",className:"tf-button-ghost tf-button-compact",disabled:o,onClick:C,"aria-label":`Cancel ${i} retirement`,children:[e.jsx(Lt,{size:14})," Cancel"]})]})}function fa({entityLabel:t,note:n,meta:i,children:o,metrics:d=[],revisions:C=[],lifecycleStatus:S,saving:x=!1,retireDescription:k,restoreDescription:O,onRetire:B,onRestore:F}){const q=!!(S&&k&&O&&B&&F);return e.jsxs("aside",{className:T.previewColumn,"aria-label":`Compiled ${t} preview`,children:[e.jsxs("div",{className:T.previewHeader,children:[e.jsxs("div",{children:[e.jsx("span",{className:"tf-label-micro",children:"Runtime preview"}),e.jsx("h3",{className:"tf-heading-section",children:"Compiled runtime preview"})]}),i]}),e.jsx("p",{className:T.previewNote,children:n}),o,d.length>0?e.jsx("div",{className:T.metrics,children:d.map(K=>e.jsxs("div",{children:[e.jsx("span",{children:K.label}),e.jsx("strong",{children:K.value})]},K.label))}):null,C.length>0?e.jsxs("details",{className:T.history,children:[e.jsxs("summary",{children:[e.jsx(gr,{size:12})," Revision history"]}),e.jsx("ol",{children:C.map(K=>e.jsxs("li",{children:[e.jsxs("strong",{children:["Revision ",K.revision]}),e.jsx("span",{children:new Date(K.createdAt).toLocaleString()}),e.jsx("code",{children:K.contentHash.slice(0,12)})]},K.revision))})]}):null,q?e.jsxs("div",{className:T.lifecycleAction,children:[e.jsxs("div",{children:[e.jsx("strong",{children:S==="retired"?`Restore ${t}`:`Retire ${t}`}),e.jsx("span",{children:S==="retired"?O:k})]}),S==="retired"?e.jsxs("button",{type:"button",className:"tf-button-secondary tf-button-compact",disabled:x,onClick:F,children:[e.jsx(on,{size:14})," Restore"]}):e.jsxs("button",{type:"button",className:"tf-button-destructive tf-button-compact",disabled:x,onClick:B,children:[e.jsx(vr,{size:14})," Retire"]})]}):null]})}const Wi="_formSection_dyv9a_1",Ji="_sectionHeader_dyv9a_9",Yi="_fieldGrid_dyv9a_13",Qi="_configurationPreview_dyv9a_27",Xi="_resourcesPreview_dyv9a_33",Zi="_previewCode_dyv9a_49",Xe={formSection:Wi,sectionHeader:Ji,fieldGrid:Yi,configurationPreview:Qi,resourcesPreview:Xi,previewCode:Zi},Kt={name:"",shortDescription:"",purpose:"",responsibilities:"",expectedOutputs:"",workingGuidance:"",skillRefs:"",capabilityGroups:""};function Et(t){return t.split(`
|
|
9
|
+
`).map(n=>n.trim()).filter(Boolean)}function eo(t){return{schemaVersion:1,name:t.name,shortDescription:t.shortDescription,purpose:t.purpose,responsibilities:Et(t.responsibilities),expectedOutputs:Et(t.expectedOutputs),...t.workingGuidance.trim()?{workingGuidance:t.workingGuidance}:{},recommendations:{skillRefs:Et(t.skillRefs),capabilityGroups:Et(t.capabilityGroups)}}}function Vt(t){return{name:t.definition.name,shortDescription:t.definition.shortDescription,purpose:t.definition.purpose,responsibilities:t.definition.responsibilities.join(`
|
|
10
|
+
`),expectedOutputs:t.definition.expectedOutputs.join(`
|
|
11
|
+
`),workingGuidance:t.definition.workingGuidance||"",skillRefs:t.definition.recommendations.skillRefs.join(`
|
|
12
|
+
`),capabilityGroups:t.definition.recommendations.capabilityGroups.join(`
|
|
13
|
+
`)}}async function ks(t){return t.json().catch(()=>({}))}function to({workspaceId:t,libraryPortalTarget:n}){const[i,o]=r.useState([]),[d,C]=r.useState([]),[S,x]=r.useState(!0),[k,O]=r.useState(""),[B,F]=r.useState(null),[q,K]=r.useState(!1),[j,_]=r.useState(null),[M,W]=r.useState(Kt),[$,re]=r.useState(""),[ge,$e]=r.useState(!1),[Ke,ie]=r.useState(!0),[le,u]=r.useState(!1),[b,Q]=r.useState(null),[X,E]=r.useState(null),[Ne,H]=r.useState(!1),[L,be]=r.useState(!1),Ve=r.useRef({}),Te=r.useRef(0),z=i.find(p=>p.id===B)||null,te=z?Vt(z):Kt,pe=JSON.stringify(M)!==JSON.stringify(te),g=r.useCallback(p=>{F(p.id),K(!1),_(p.currentContentHash),W(Vt(p)),E(null),H(!1),be(!1)},[]),oe=r.useCallback(p=>{pe&&!window.confirm("Discard unsaved Role changes?")||g(p)},[g,pe]),ue=r.useCallback(async(p={})=>{ie(!0),Q(null);try{const R=await ht(`/api/taskforce/agent-roles?workspaceId=${encodeURIComponent(t)}&includeRetired=true`,{credentials:"include"}),U=await ks(R);if(!R.ok||U.success===!1||!Array.isArray(U.roles))throw new Error(String(U.error||"Unable to load Agent Roles."));const ee=U.roles,he=i.find(je=>je.id===B)||null,me=p.preserveDraft===!0&&(he?JSON.stringify(M)!==JSON.stringify(Vt(he)):Object.values(M).some(je=>je.trim().length>0));o(ee);const ke=ee.find(je=>je.id===B)||ee.find(je=>je.lifecycleStatus==="active")||ee[0]||null;ke?(F(ke.id),me?E({type:"error",message:"This Role changed during synchronization. Your unsaved edits were preserved; saving will require resolving the version conflict."}):(K(!1),_(ke.currentContentHash),W(Vt(ke)))):me?F(null):(F(null),K(!1),_(null),W(Kt))}catch(R){Q(String(R?.message||R||"Unable to load Agent Roles."))}finally{ie(!1)}},[M,i,B,t]);r.useEffect(()=>{ue()},[t]);const Le=r.useCallback(async()=>{const p=Te.current+1;Te.current=p,C([]),O(""),x(!0);try{const R=await ht(`/api/taskforce/agent-skills?workspaceId=${encodeURIComponent(t)}&includeRetired=true`,{credentials:"include"}),U=await ks(R);if(p!==Te.current)return;if(!R.ok||U.success===!1||!Array.isArray(U.skills))throw new Error(String(U.error||"Unable to load the Skill catalog."));C(U.skills.map(ee=>({id:String(ee.id),name:String(ee.definition?.name||"Unnamed Skill"),description:String(ee.definition?.shortDescription||""),lifecycleStatus:ee.lifecycleStatus==="retired"?"retired":"active"})))}catch(R){if(p!==Te.current)return;O(String(R?.message||"Unable to load the Skill catalog."))}finally{p===Te.current&&x(!1)}},[t]);r.useEffect(()=>(Le(),()=>{Te.current+=1}),[Le]),r.useEffect(()=>{const p=U=>{const ee=U.detail;(String(ee?.workspaceId||"").trim()||"default")!==t||ee?.reason!=="sync-apply"||ue({preserveDraft:!0})};window.addEventListener(Pt,p);const R=U=>{const ee=U.detail;(String(ee?.workspaceId||"").trim()||"default")===t&&Le()};return window.addEventListener(Dt,R),()=>{window.removeEventListener(Pt,p),window.removeEventListener(Dt,R)}},[ue,Le,t]);const Xt=r.useMemo(()=>{const p=$.trim().toLowerCase();return i.filter(R=>!ge&&R.lifecycleStatus==="retired"?!1:p?[R.definition.name,R.definition.shortDescription,R.definition.purpose].some(U=>U.toLowerCase().includes(p)):!0)},[$,i,ge]),ve=r.useMemo(()=>ra(eo(M)),[M]),de=r.useMemo(()=>{if(!ve.definition)return"";try{return wr(ve.definition)}catch{return""}},[ve]),Me=()=>{pe&&!window.confirm("Discard unsaved Role changes?")||(F(null),K(!0),_(null),W(Kt),E(null),H(!1),be(!1))},ce=()=>{const p=z?Vt(z):Kt;W(p),_(z?.currentContentHash||null),E(null),H(!1),be(!1)},f=(p,R)=>{W(U=>({...U,[p]:R})),E(null)},w=async()=>{if(!ve.definition||le){be(!0),E({type:"error",message:ve.issues[0]?.message||"Complete the required Role fields."}),da(ve.issues,Ve.current);return}u(!0),E(null);try{const p=await ht(z?`/api/taskforce/agent-roles/${encodeURIComponent(z.id)}`:"/api/taskforce/agent-roles",{method:z?"PATCH":"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({workspaceId:t,definition:ve.definition,...z?{expectedContentHash:j}:{}})}),R=await ks(p);if(!p.ok||R.success===!1||!R.role)throw new Error(String(R.error||"Unable to save Agent Role."));const U=R.role;o(ee=>ee.some(me=>me.id===U.id)?ee.map(me=>me.id===U.id?U:me):[...ee,U]),g(U),E({type:"success",message:`Saved ${U.definition.name}.`}),Ze({workspaceId:t,reason:"role-save"})}catch(p){E({type:"error",message:String(p?.message||p||"Unable to save Agent Role.")})}finally{u(!1)}},Y=async p=>{if(!(!z||le)){u(!0),E(null);try{const R=await ht(`/api/taskforce/agent-roles/${encodeURIComponent(z.id)}/${p}`,{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({workspaceId:t,...p==="retire"?{confirm:!0}:{}})}),U=await ks(R);if(!R.ok||U.success===!1||!U.role)throw new Error(String(U.error||`Unable to ${p} Agent Role.`));const ee=U.role;o(he=>he.map(me=>me.id===ee.id?ee:me)),g(ee),p==="retire"&&$e(!0),E({type:"success",message:p==="retire"?`Retired ${ee.definition.name}.`:`Restored ${ee.definition.name}.`}),Ze({workspaceId:t,reason:p==="retire"?"role-retire":"role-restore"})}catch(R){E({type:"error",message:String(R?.message||R||`Unable to ${p} Agent Role.`)})}finally{u(!1)}}},N=r.useMemo(()=>ca(ve.issues,L),[ve.issues,L]),Z=(p,R,U,ee,he=p)=>{const me=`role-field-${he.replaceAll(".","-")}`,ke=N.get(he);return e.jsxs("label",{className:"tf-field-stack",children:[e.jsx("span",{className:"tf-field-label",children:R}),e.jsx("small",{id:`${me}-hint`,className:"tf-field-hint",children:U}),e.jsx("textarea",{ref:je=>{Ve.current[he]=je||void 0},id:me,className:"tf-field-shell","aria-label":R,"aria-describedby":`${me}-hint${ke?` ${me}-error`:""}`,"aria-errormessage":ke?`${me}-error`:void 0,value:M[p],onChange:je=>f(p,je.target.value),rows:ee,disabled:z?.lifecycleStatus==="retired","aria-invalid":!!ke}),e.jsx(qe,{id:`${me}-error`,message:ke})]})},xe=z?.usage.agentCount===0?"No active Agents currently reference this Role.":`${z?.usage.agentCount} active ${z?.usage.agentCount===1?"Agent references":"Agents reference"} this Role and will require repair before running.`;return e.jsxs("div",{className:`${T.root} ${n?T.rootExternalLibrary:""}`.trim(),children:[e.jsx(oa,{singularLabel:"Role",pluralLabel:"Roles",description:"Reusable professional profiles that define what an Agent does.",icon:e.jsx($t,{size:15}),items:Xt.map(p=>({id:p.id,name:p.definition.name,description:p.definition.shortDescription,lifecycleStatus:p.lifecycleStatus})),selectedId:B,searchValue:$,onSearchChange:re,showRetired:ge,onShowRetiredChange:$e,loading:Ke,error:b,emptyMessage:i.length===0?"No Roles configured yet.":"No Roles match this view.",onRetry:()=>{ue()},onCreate:Me,onSelect:p=>{const R=i.find(U=>U.id===p);R&&oe(R)},libraryPortalTarget:n}),e.jsxs("section",{className:T.editor,"aria-label":z?`Edit ${z.definition.name}`:"Create Role",children:[e.jsx(la,{icon:e.jsx($t,{size:18}),title:q?"New Role":z?.definition.name||"Role Manager",description:"Define reusable professional guidance for what an Agent does and produces.",revision:z?.currentRevision,retired:z?.lifecycleStatus==="retired",showActions:q||!!z,dirty:pe,saving:le,onReset:ce,onSave:()=>{w()}}),Ne&&z?e.jsx(ma,{title:`Retire ${z.definition.name}?`,message:xe,entityLabel:"Role",saving:le,onConfirm:()=>{Y("retire")},onCancel:()=>H(!1)}):null,X?e.jsx(sn,{type:X.type,message:X.message}):null,!q&&!z?e.jsx(ua,{icon:e.jsx($t,{size:24}),title:"Create your first Role",description:"Roles define reusable professional responsibilities, outputs, and working guidance for Taskforce Agents.",actionLabel:"New Role",onCreate:Me}):e.jsxs("div",{className:T.editorGrid,children:[e.jsxs("div",{className:T.formColumn,children:[e.jsxs("section",{className:Xe.formSection,children:[e.jsxs("div",{className:Xe.sectionHeader,children:[e.jsx("h3",{className:"tf-heading-section",children:"Identity and discovery"}),e.jsx("p",{className:"tf-text-helper",children:"Help people understand when this Role should be assigned."})]}),e.jsxs("div",{className:Xe.fieldGrid,children:[e.jsxs("label",{className:"tf-field-stack",children:[e.jsx("span",{className:"tf-field-label",children:"Role name"}),e.jsx("input",{ref:p=>{Ve.current.name=p||void 0},id:"role-field-name",className:"tf-field-shell",value:M.name,onChange:p=>f("name",p.target.value),disabled:z?.lifecycleStatus==="retired","aria-invalid":N.has("name"),"aria-errormessage":N.has("name")?"role-field-name-error":void 0}),e.jsx(qe,{id:"role-field-name-error",message:N.get("name")})]}),e.jsxs("label",{className:"tf-field-stack",children:[e.jsx("span",{className:"tf-field-label",children:"Short description"}),e.jsx("input",{ref:p=>{Ve.current.shortDescription=p||void 0},id:"role-field-short-description",className:"tf-field-shell",value:M.shortDescription,onChange:p=>f("shortDescription",p.target.value),disabled:z?.lifecycleStatus==="retired","aria-invalid":N.has("shortDescription"),"aria-errormessage":N.has("shortDescription")?"role-field-short-description-error":void 0}),e.jsx(qe,{id:"role-field-short-description-error",message:N.get("shortDescription")})]})]}),e.jsxs("label",{className:"tf-field-stack",children:[e.jsx("span",{className:"tf-field-label",children:"Purpose and scope"}),e.jsx("textarea",{ref:p=>{Ve.current.purpose=p||void 0},id:"role-field-purpose",className:"tf-field-shell",value:M.purpose,onChange:p=>f("purpose",p.target.value),rows:4,disabled:z?.lifecycleStatus==="retired","aria-invalid":N.has("purpose"),"aria-errormessage":N.has("purpose")?"role-field-purpose-error":void 0}),e.jsx(qe,{id:"role-field-purpose-error",message:N.get("purpose")})]})]}),e.jsxs("section",{className:Xe.formSection,children:[e.jsxs("div",{className:Xe.sectionHeader,children:[e.jsx("h3",{className:"tf-heading-section",children:"Runtime behavior"}),e.jsx("p",{className:"tf-text-helper",children:"This bounded guidance is compiled into the Agent runtime prompt."})]}),e.jsxs("div",{className:Xe.fieldGrid,children:[Z("responsibilities","Responsibilities","One responsibility per line.",6),Z("expectedOutputs","Expected outputs","One output or artifact per line.",6)]}),Z("workingGuidance","Role-specific working guidance","Optional operating guidance for agents using this Role.",5)]}),e.jsxs("div",{className:Xe.configurationPreview,children:[e.jsx(li,{skills:d,selectedIds:Et(M.skillRefs),loading:S,error:k,onRetry:()=>{Le()},disabled:z?.lifecycleStatus==="retired",onChange:p=>f("skillRefs",p.join(`
|
|
14
|
+
`))}),e.jsx(cn,{selectedKeys:Et(M.capabilityGroups),mode:"preview",title:"Tool Access",description:"Choose the Taskforce modules this Role is intended to provide. The selection is saved now; automatic Agent inheritance is not active yet.",disabled:z?.lifecycleStatus==="retired",onChange:p=>f("capabilityGroups",p.join(`
|
|
15
|
+
`))}),e.jsxs("section",{className:Xe.resourcesPreview,"aria-label":"Role Resources",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"tf-heading-section",children:"Resources"}),e.jsx("p",{className:"tf-text-helper",children:"Trusted collections this Role should consult will appear here."})]}),e.jsx("span",{className:"tf-chip-neutral",children:"Not available yet"}),e.jsx("button",{type:"button",className:"tf-button-secondary",disabled:!0,children:"Add Resource Collection"})]})]})]}),e.jsx(fa,{entityLabel:"Role",note:"This is the exact bounded Role content supplied to the Agent runtime. Included Skills, Tool Access, Resources, and discovery text are excluded until their inheritance is implemented.",meta:e.jsxs("span",{className:"tf-chip-count",children:[de.length.toLocaleString()," chars"]}),metrics:z?[{label:"Revision",value:z.currentRevision},{label:"Agent references",value:z.usage.agentCount},{label:"Status",value:z.lifecycleStatus==="retired"?"Retired":"Active"},{label:"Saved revisions",value:z.revisions.length}]:[],revisions:z?.revisions||[],lifecycleStatus:z?.lifecycleStatus,saving:le,retireDescription:"Remove it from new selection while preserving its revision history.",restoreDescription:"Allow this Role to resolve for new Agent runs again.",onRetire:()=>H(!0),onRestore:()=>{Y("restore")},children:de?e.jsx("pre",{className:`${T.preview} ${Xe.previewCode}`,children:de}):e.jsx("div",{className:T.previewEmpty,children:"Complete the required runtime fields to preview this Role."})})]})]})]})}async function so(t){const[n,i]=await Promise.all([fetch(`/api/taskforce/agent-roles?workspaceId=${encodeURIComponent(t)}&includeRetired=true`,{credentials:"include"}),fetch(`/api/taskforce/agent-skills?workspaceId=${encodeURIComponent(t)}&includeRetired=true`,{credentials:"include"})]),[o,d]=await Promise.all([n.json().catch(()=>({})),i.json().catch(()=>({}))]);if(!n.ok||o?.success===!1)throw new Error(String(o?.error||"Unable to load Roles."));if(!i.ok||d?.success===!1)throw new Error(String(d?.error||"Unable to load Skills."));return{roles:Array.isArray(o?.roles)?o.roles:[],skills:Array.isArray(d?.skills)?d.skills:[]}}const no="_assignments_omv6h_1",ao="_section_omv6h_8",ro="_sectionHeader_omv6h_16",io="_sectionHeading_omv6h_24",oo="_referenceCopy_omv6h_48",lo="_empty_omv6h_49",co="_roleControls_omv6h_61",uo="_skillAdd_omv6h_62",mo="_referenceList_omv6h_83",fo="_referenceRow_omv6h_91",po="_rowActions_omv6h_114",ho="_issue_omv6h_119",go="_loadError_omv6h_133",fe={assignments:no,section:ao,sectionHeader:ro,sectionHeading:io,referenceCopy:oo,empty:lo,roleControls:co,skillAdd:uo,referenceList:mo,referenceRow:fo,rowActions:po,issue:ho,loadError:go};function qn(t){return t.resolution==="pinned"?String(t.revision??""):""}function js(t,n){return{id:t.id,resolution:"pinned",revision:n}}function Kn(t){return{id:t.id,resolution:"current"}}function Vn(t,n){const i=(t?.revisions||[]).map(d=>d.revision).filter(d=>String(d).trim().length>0),o=n.resolution==="pinned"?n.revision:void 0;return o!==void 0&&!i.some(d=>String(d)===String(o))&&i.push(o),i.filter((d,C)=>i.findIndex(S=>String(S)===String(d))===C).sort((d,C)=>{const S=Number(d),x=Number(C);return Number.isFinite(S)&&Number.isFinite(x)?x-S:String(C).localeCompare(String(d))})}function Wn(t){const n=Number(t);return Number.isInteger(n)&&String(n)===t?n:t}function vo({workspaceId:t,roleRef:n,skillRefs:i,onRoleRefChange:o,onSkillRefsChange:d,onManageRoles:C,onManageSkills:S}){const[x,k]=r.useState([]),[O,B]=r.useState([]),[F,q]=r.useState(!0),[K,j]=r.useState(""),[_,M]=r.useState(""),W=r.useRef(0),$=r.useCallback(async()=>{const u=++W.current;q(!0),j("");try{const b=await so(t);if(u!==W.current)return;k(b.roles),B(b.skills)}catch(b){if(u!==W.current)return;j(String(b?.message||b||"Unable to load Role and Skill options."))}finally{u===W.current&&q(!1)}},[t]);r.useEffect(()=>($(),()=>{W.current+=1}),[$]),r.useEffect(()=>{const u=Q=>{const X=Q.detail;(String(X?.workspaceId||"").trim()||"default")===t&&(X?.reason!=="role-save"&&X?.reason!=="role-retire"&&X?.reason!=="role-restore"||$())},b=Q=>{const X=Q.detail;(String(X?.workspaceId||"").trim()||"default")===t&&$()};return window.addEventListener(Pt,u),window.addEventListener(Dt,b),()=>{window.removeEventListener(Pt,u),window.removeEventListener(Dt,b)}},[$,t]);const re=r.useMemo(()=>new Map(x.map(u=>[u.id,u])),[x]),ge=r.useMemo(()=>new Map(O.map(u=>[u.id,u])),[O]),$e=r.useMemo(()=>new Set(i.map(u=>u.id)),[i]),Ke=O.filter(u=>u.lifecycleStatus==="active"&&!$e.has(u.id)),ie=n&&re.get(n.id)||null,le=n?[...ie?[]:[`Role ${n.id} is missing or unavailable.`],...ie?.lifecycleStatus==="retired"?[`${ie.definition.name} is retired.`]:[],...n.resolution==="pinned"&&ie&&!ie.revisions.some(u=>String(u.revision)===String(n.revision))?[`Pinned Role revision ${String(n.revision)} is unavailable.`]:[]]:[];return e.jsxs("div",{className:fe.assignments,children:[e.jsxs("section",{className:fe.section,"aria-labelledby":"agent-role-heading",children:[e.jsxs("div",{className:fe.sectionHeader,children:[e.jsxs("div",{className:fe.sectionHeading,children:[e.jsx($t,{size:17}),e.jsxs("div",{children:[e.jsx("strong",{id:"agent-role-heading",children:"Role"}),e.jsx("small",{children:"Optional reusable professional profile. An Agent can have one Role."})]})]}),e.jsx("button",{type:"button",className:a.secondaryHeaderBtn,onClick:C,children:"Manage Roles"})]}),e.jsxs("div",{className:fe.roleControls,children:[e.jsxs("label",{className:a.field,children:[e.jsx("span",{className:a.label,children:"Role"}),e.jsxs("select",{className:a.select,"aria-label":"Role",value:n?.id||"",disabled:F,onChange:u=>{const b=u.target.value;o(b?{id:b,resolution:"current"}:null)},children:[e.jsx("option",{value:"",children:"No Role"}),n&&!ie?e.jsxs("option",{value:n.id,children:["Missing Role · ",n.id]}):null,x.map(u=>e.jsxs("option",{value:u.id,disabled:u.lifecycleStatus==="retired",children:[u.definition.name,u.lifecycleStatus==="retired"?" · Retired":""]},u.id))]})]}),e.jsxs("label",{className:a.field,children:[e.jsx("span",{className:a.label,children:"Version"}),e.jsxs("select",{className:a.select,"aria-label":"Role version",value:n?.resolution||"current",disabled:!n||!ie,onChange:u=>{if(!(!n||!ie)){if(u.target.value==="current"){o(Kn(n));return}o(js(n,ie.currentRevision))}},children:[e.jsx("option",{value:"current",children:"Use latest"}),e.jsx("option",{value:"pinned",children:"Pin revision"})]})]}),e.jsxs("label",{className:a.field,children:[e.jsx("span",{className:a.label,children:"Revision"}),e.jsxs("select",{className:a.select,"aria-label":"Role pinned revision",value:n?qn(n):"",disabled:!n||n.resolution!=="pinned",onChange:u=>{n&&o(js(n,Wn(u.target.value)))},children:[e.jsx("option",{value:"",children:"Current"}),n?Vn(ie,n).map(u=>e.jsxs("option",{value:u,children:["Revision ",u]},u)):null]})]})]}),ie?.definition.shortDescription?e.jsx("small",{className:fe.empty,children:ie.definition.shortDescription}):null,le.map(u=>e.jsxs("div",{className:fe.issue,role:"alert",children:[e.jsx(gt,{size:13}),e.jsxs("span",{children:[u," Agent execution is blocked until this reference is repaired."]})]},u))]}),e.jsxs("section",{className:fe.section,"aria-labelledby":"agent-skills-heading",children:[e.jsxs("div",{className:fe.sectionHeader,children:[e.jsxs("div",{className:fe.sectionHeading,children:[e.jsx(vt,{size:17}),e.jsxs("div",{children:[e.jsx("strong",{id:"agent-skills-heading",children:"Skills"}),e.jsx("small",{children:"Composable behavior applied in this exact order. Later Skills take precedence when guidance conflicts."})]})]}),e.jsx("button",{type:"button",className:a.secondaryHeaderBtn,onClick:S,children:"Manage Skills"})]}),e.jsxs("div",{className:fe.skillAdd,children:[e.jsxs("label",{className:a.field,children:[e.jsx("span",{className:a.label,children:"Add Skill"}),e.jsxs("select",{className:a.select,"aria-label":"Skill to add",value:_,disabled:F||Ke.length===0,onChange:u=>M(u.target.value),children:[e.jsx("option",{value:"",children:"Select a Skill"}),Ke.map(u=>e.jsx("option",{value:u.id,children:u.definition.name},u.id))]})]}),e.jsx("button",{type:"button",className:"tf-control-icon",disabled:!_,"aria-label":"Add selected Skill",title:"Add selected Skill",onClick:()=>{!_||$e.has(_)||(d([...i,{id:_,resolution:"current"}]),M(""))},children:e.jsx(xt,{size:14})})]}),i.length>0?e.jsx("ol",{className:fe.referenceList,children:i.map((u,b)=>{const Q=ge.get(u.id)||null,X=[...Q?[]:[`Skill ${u.id} is missing or unavailable.`],...Q?.lifecycleStatus==="retired"?[`${Q.definition.name} is retired.`]:[],...u.resolution==="pinned"&&Q&&!Q.revisions.some(E=>String(E.revision)===String(u.revision))?[`Pinned Skill revision ${String(u.revision)} is unavailable.`]:[]];return e.jsxs("li",{children:[e.jsxs("div",{className:fe.referenceRow,children:[e.jsxs("div",{className:fe.referenceCopy,children:[e.jsxs("strong",{children:[b+1,". ",Q?.definition.name||`Missing Skill · ${u.id}`]}),e.jsx("small",{children:Q?.definition.shortDescription||u.id})]}),e.jsxs("select",{className:a.select,"aria-label":`${Q?.definition.name||u.id} version`,value:u.resolution,disabled:!Q,onChange:E=>{const Ne=[...i];Ne[b]=E.target.value==="current"?Kn(u):js(u,Q?.revision||1),d(Ne)},children:[e.jsx("option",{value:"current",children:"Use latest"}),e.jsx("option",{value:"pinned",children:"Pin revision"})]}),e.jsxs("select",{className:a.select,"aria-label":`${Q?.definition.name||u.id} pinned revision`,value:qn(u),disabled:u.resolution!=="pinned",onChange:E=>{const Ne=[...i];Ne[b]=js(u,Wn(E.target.value)),d(Ne)},children:[e.jsx("option",{value:"",children:"Current"}),Vn(Q,u).map(E=>e.jsxs("option",{value:E,children:["Revision ",E]},E))]}),e.jsxs("div",{className:fe.rowActions,children:[e.jsx("button",{type:"button",className:"tf-control-icon tf-control-icon-compact","aria-label":`Move ${Q?.definition.name||u.id} up`,disabled:b===0,onClick:()=>{if(b===0)return;const E=[...i];[E[b-1],E[b]]=[E[b],E[b-1]],d(E)},children:e.jsx(na,{size:14})}),e.jsx("button",{type:"button",className:"tf-control-icon tf-control-icon-compact","aria-label":`Move ${Q?.definition.name||u.id} down`,disabled:b===i.length-1,onClick:()=>{if(b===i.length-1)return;const E=[...i];[E[b],E[b+1]]=[E[b+1],E[b]],d(E)},children:e.jsx(aa,{size:14})}),e.jsx("button",{type:"button",className:"tf-control-icon tf-control-icon-compact","aria-label":`Remove ${Q?.definition.name||u.id}`,onClick:()=>d(i.filter((E,Ne)=>Ne!==b)),children:e.jsx(Lt,{size:14})})]})]}),X.map(E=>e.jsxs("div",{className:fe.issue,role:"alert",children:[e.jsx(gt,{size:13}),e.jsxs("span",{children:[E," Agent execution is blocked until this reference is repaired."]})]},E))]},`${u.id}-${b}`)})}):e.jsx("p",{className:fe.empty,children:"No Skills selected."}),K?e.jsx("p",{className:fe.loadError,role:"alert",children:K}):null]})]})}const xo=1,yo=[{key:"practical",label:"Practical"},{key:"encouraging",label:"Encouraging"},{key:"analytical",label:"Analytical"},{key:"direct",label:"Direct"},{key:"friendly-coach",label:"Friendly Coach"},{key:"creative-partner",label:"Creative Partner"}],bo=[{key:"concise",label:"Concise"},{key:"balanced",label:"Balanced"},{key:"detailed",label:"Detailed"},{key:"executive-summary",label:"Executive Summary"},{key:"critical-review",label:"Critical Review"},{key:"technical",label:"Technical"},{key:"creative",label:"Creative"}],ko=[{key:"taskforce-default",label:"Taskforce Agent"},{key:"photographic",label:"Photographic"},{key:"cinematic",label:"Cinematic"},{key:"painterly",label:"Painterly"},{key:"watercolor",label:"Watercolor"},{key:"graphic-novel",label:"Graphic Novel"},{key:"anime-inspired",label:"Anime-inspired"},{key:"stylized-3d",label:"Stylized 3D"},{key:"pixel-art",label:"Pixel Art"},{key:"ink-sketch",label:"Ink Sketch"}],_e="__custom__",jo="Default",So="Help users complete work in Taskforce.",Ao="Be concise and actionable.",dn=["tasks","planning","documents","images","workspace"],No=new Set(dn);function Yt(t,n={}){const i=t?.behavior.personality,o=t?.behavior.responseStyle,d=t?.presentation.avatar.artStyle,C=new Set(t?.toolPolicy.disabledCapabilities||[]),S=t?.toolPolicy.requestedCapabilities?.length?t.toolPolicy.requestedCapabilities:dn;return{purpose:t?.purpose||So,personalitySelection:i?.presetKey||(i?.customDescription?_e:""),personalityCustom:i?.customDescription||"",responseStyleSelection:o?.presetKey||(o?.customDescription?_e:""),responseStyleCustom:o?.customDescription||"",workingGuidelines:t?.behavior.workingGuidelines||n.systemPrompt||Ao,avatarVisualDescription:t?.presentation.avatar.visualDescription||"",avatarArtStyleSelection:d?.mode==="preset"?d.presetKey:d?.mode==="custom"?_e:"",avatarArtStyleCustom:d?.mode==="custom"?d.customDescription:"",roleRef:t?.roleRef?{...t.roleRef}:null,skillRefs:(t?.skillRefs||[]).map(x=>({...x})),requestedCapabilities:S.filter(x=>!C.has(x)),toolAccessChanged:!1}}function Jn(t,n){const i=n.trim();return t===_e?i?{customDescription:i}:void 0:t?{presetKey:t}:void 0}function wo(t,n){const i=n.trim();return t===_e?i?{mode:"custom",customDescription:i}:void 0:t?{mode:"preset",presetKey:t}:void 0}function Co(t){const{baseDefinition:n,draft:i}=t,o=Jn(i.personalitySelection,i.personalityCustom),d=Jn(i.responseStyleSelection,i.responseStyleCustom),C=i.workingGuidelines.trim(),S=i.avatarVisualDescription.trim(),x=wo(i.avatarArtStyleSelection,i.avatarArtStyleCustom),k=i.requestedCapabilities.filter(O=>No.has(O));return{...n||{},schemaVersion:xo,name:t.name.trim(),purpose:i.purpose.trim(),model:{providerKey:t.providerKey,modelKey:t.modelKey,modelSource:Wa(t.modelKey)?.source||"bedrock",tier:t.tier},behavior:{...o?{personality:o}:{},...d?{responseStyle:d}:{},...C?{workingGuidelines:C}:{}},presentation:{avatar:{...S?{visualDescription:S}:{},...x?{artStyle:x}:{}}},...i.roleRef?{roleRef:{...i.roleRef}}:{roleRef:void 0},skillRefs:i.skillRefs.map(O=>({...O})),toolPolicy:n?.toolPolicy&&!i.toolAccessChanged?n.toolPolicy:{basePolicyRef:n?.toolPolicy.basePolicyRef||{id:"managed-agent-default",resolution:"current"},requestedCapabilities:k.length>0?k:void 0,disabledCapabilities:k.length===0?[...dn]:void 0,toolOverrides:void 0}}}function _o(t,n){const i=Yt(t);return i.avatarVisualDescription!==n.avatarVisualDescription||i.avatarArtStyleSelection!==n.avatarArtStyleSelection||i.avatarArtStyleCustom!==n.avatarArtStyleCustom}const Vs=1,Yn=2e4,Pe={name:80,shortDescription:280,purpose:1e3,instructions:12e3,listItems:20,listItem:1e3,capabilityGroup:160};function Ro(t){return!!t&&typeof t=="object"&&!Array.isArray(t)}function De(t,n,i,o){t.push({code:n,path:i,message:o})}function Ss(t,n,i,o){if(typeof t!="string")return De(o,"required_string",n,"A string value is required."),"";const d=t.trim();return d?d.length>i&&De(o,"string_too_long",n,`Must be ${i} characters or less.`):De(o,"required_string",n,"A non-empty value is required."),d}function Wt(t,n,i,o){if(!Array.isArray(t))return De(o,"required_array",n,"An array of strings is required."),[];t.length>Pe.listItems&&De(o,"too_many_items",n,`Must contain ${Pe.listItems} items or fewer.`);const d=new Set,C=[];return t.slice(0,Pe.listItems).forEach((S,x)=>{if(typeof S!="string"){De(o,"invalid_list_item",`${n}.${x}`,"Must be a string.");return}const k=S.trim();if(!k){De(o,"empty_list_item",`${n}.${x}`,"Must not be empty.");return}k.length>i&&De(o,"string_too_long",`${n}.${x}`,`Must be ${i} characters or less.`);const O=k.toLocaleLowerCase();if(d.has(O)){De(o,"duplicate_list_item",`${n}.${x}`,"Duplicate items are not allowed.");return}d.add(O),C.push(k)}),C}function pa(t){return[["Instructions",t.instructions],["Expected inputs",t.expectedInputs.map((i,o)=>`${o+1}. ${i}`).join(`
|
|
16
|
+
`)],["Expected outputs",t.expectedOutputs.map((i,o)=>`${o+1}. ${i}`).join(`
|
|
17
|
+
`)],["Quality checks",t.qualityChecks.map((i,o)=>`${o+1}. ${i}`).join(`
|
|
18
|
+
`)]].filter(([,i])=>!!i).map(([i,o])=>`${i}:
|
|
19
|
+
${o}`).join(`
|
|
20
|
+
|
|
21
|
+
`)}function To(t){const n=[];if(!Ro(t))return{definition:null,issues:[{code:"invalid_definition",path:"definition",message:"Skill definition must be an object."}]};const i=new Set(["schemaVersion","name","shortDescription","purpose","instructions","expectedInputs","expectedOutputs","qualityChecks","exampleUseCases","recommendedCapabilityGroups"]);Object.keys(t).forEach(d=>{i.has(d)||De(n,"unknown_field",d,"This field is not part of Agent Skill v1.")}),t.schemaVersion!==Vs&&De(n,"unsupported_schema_version","schemaVersion",`schemaVersion must be ${Vs}.`);const o={schemaVersion:Vs,name:Ss(t.name,"name",Pe.name,n),shortDescription:Ss(t.shortDescription,"shortDescription",Pe.shortDescription,n),purpose:Ss(t.purpose,"purpose",Pe.purpose,n),instructions:Ss(t.instructions,"instructions",Pe.instructions,n),expectedInputs:Wt(t.expectedInputs,"expectedInputs",Pe.listItem,n),expectedOutputs:Wt(t.expectedOutputs,"expectedOutputs",Pe.listItem,n),qualityChecks:Wt(t.qualityChecks,"qualityChecks",Pe.listItem,n),exampleUseCases:Wt(t.exampleUseCases,"exampleUseCases",Pe.listItem,n),recommendedCapabilityGroups:Wt(t.recommendedCapabilityGroups,"recommendedCapabilityGroups",Pe.capabilityGroup,n)};return pa(o).length>Yn&&De(n,"compiled_prompt_too_long","instructions",`Compiled runtime content must be ${Yn} characters or less.`),{definition:n.length===0?o:null,issues:n}}const Io="_section_1e1mf_1",Eo="_sectionHeading_1e1mf_9",$o="_twoColumn_1e1mf_20",Lo="_instructions_1e1mf_26",Po="_orderedList_1e1mf_36",Do="_orderedRow_1e1mf_42",Mo="_orderedInput_1e1mf_49",Uo="_orderNumber_1e1mf_56",Oo="_orderActions_1e1mf_63",zo="_listEmpty_1e1mf_69",Re={section:Io,sectionHeading:Eo,twoColumn:$o,instructions:Lo,orderedList:Po,orderedRow:Do,orderedInput:Mo,orderNumber:Uo,orderActions:Oo,listEmpty:zo},Jt={name:"",shortDescription:"",purpose:"",instructions:"",expectedInputs:[],expectedOutputs:[],qualityChecks:[],exampleUseCases:[],recommendedCapabilityGroups:[]};function As(t){const{schemaVersion:n,...i}=t.definition;return{...i,expectedInputs:[...i.expectedInputs],expectedOutputs:[...i.expectedOutputs],qualityChecks:[...i.qualityChecks],exampleUseCases:[...i.exampleUseCases],recommendedCapabilityGroups:[...i.recommendedCapabilityGroups]}}function ft(t){return JSON.stringify(t)}function Ws(t,n){const o=(Array.isArray(t.issues)?t.issues:[])[0];return o?.message?`${o.path?`${o.path}: `:""}${o.message}`:String(t.error||n)}function Ns({fieldPath:t,label:n,helper:i,values:o,onChange:d,placeholder:C,disabled:S=!1,issues:x,fieldRefs:k}){const O=()=>d([...o,""]),B=(K,j)=>{const _=[...o];_[K]=j,d(_)},F=(K,j)=>{const _=K+j;if(_<0||_>=o.length)return;const M=[...o];[M[K],M[_]]=[M[_],M[K]],d(M)},q=x.get(t);return e.jsxs("div",{className:"tf-field-stack",children:[e.jsxs("div",{className:"tf-field-label-row",children:[e.jsx("span",{className:"tf-field-label",children:n}),e.jsxs("button",{type:"button",className:"tf-button-ghost tf-button-compact",disabled:S,onClick:O,children:[e.jsx(xt,{size:13})," Add"]})]}),e.jsx("span",{className:"tf-field-hint",children:i}),e.jsx(qe,{id:`skill-field-${t}-error`,message:q}),o.length===0?e.jsx("div",{className:Re.listEmpty,children:"No items added."}):e.jsx("div",{className:Re.orderedList,children:o.map((K,j)=>{const _=x.get(`${t}.${j}`),M=_||(j===0?q:void 0),W=_?`skill-field-${t}-${j}-error`:`skill-field-${t}-error`;return e.jsxs("div",{className:Re.orderedRow,children:[e.jsx("span",{className:Re.orderNumber,children:j+1}),e.jsxs("div",{className:Re.orderedInput,children:[e.jsx("input",{ref:$=>{k.current[`${t}.${j}`]=$||void 0,j===0&&(k.current[t]=$||void 0)},id:`skill-field-${t}-${j}`,className:"tf-field-shell","aria-label":`${n} item ${j+1}`,"aria-invalid":!!M,"aria-errormessage":M?W:void 0,value:K,placeholder:C,disabled:S,onChange:$=>B(j,$.target.value)}),e.jsx(qe,{id:`skill-field-${t}-${j}-error`,message:_})]}),e.jsxs("div",{className:Re.orderActions,children:[e.jsx("button",{type:"button",className:"tf-control-icon tf-control-icon-compact tf-control-icon-quiet","aria-label":`Move ${n.toLowerCase()} item up`,disabled:S||j===0,onClick:()=>{S||F(j,-1)},children:e.jsx(na,{size:13})}),e.jsx("button",{type:"button",className:"tf-control-icon tf-control-icon-compact tf-control-icon-quiet","aria-label":`Move ${n.toLowerCase()} item down`,disabled:S||j===o.length-1,onClick:()=>{S||F(j,1)},children:e.jsx(aa,{size:13})}),e.jsx("button",{type:"button",className:"tf-control-icon tf-control-icon-compact tf-control-icon-quiet","aria-label":`Remove ${n.toLowerCase()} item`,disabled:S,onClick:()=>d(o.filter(($,re)=>re!==j)),children:e.jsx(Lt,{size:13})})]})]},`${t}-${j}`)})})]})}function Go({workspaceId:t,active:n=!0,libraryPortalTarget:i}){const[o,d]=r.useState([]),[C,S]=r.useState(null),[x,k]=r.useState(Jt),[O,B]=r.useState(ft(Jt)),[F,q]=r.useState(!1),[K,j]=r.useState(!0),[_,M]=r.useState(!1),[W,$]=r.useState(null),[re,ge]=r.useState(null),[$e,Ke]=r.useState(""),[ie,le]=r.useState(!1),[u,b]=r.useState(!1),[Q,X]=r.useState(!1),[E,Ne]=r.useState(!1),H=r.useRef({}),L=o.find(f=>f.id===C)||null,be=ft(x)!==O,Ve=r.useCallback(f=>{if(be&&!window.confirm("Discard unsaved Skill changes?"))return;const w=As(f);S(f.id),k(w),B(ft(w)),q(!1),b(!1),X(!1),$(null),ge(null)},[be]),Te=r.useCallback(async f=>{f?.quiet||j(!0);try{const w=await ht(`/api/taskforce/agent-skills?workspaceId=${encodeURIComponent(t)}&includeRetired=true`,{credentials:"include"}),Y=await w.json().catch(()=>({}));if(!w.ok||Y?.success===!1||!Array.isArray(Y?.skills))throw new Error(Ws(Y,"Unable to load Skills."));const N=Y.skills;d(N),S(Z=>{if(F)return Z;const xe=N.find(p=>p.id===Z)||N.find(p=>p.lifecycleStatus==="active")||N[0]||null;if(xe&&(!be||xe.id===Z)){const p=As(xe);k(p),B(ft(p))}return xe?.id||null}),$(null)}catch(w){$(String(w?.message||w||"Unable to load Skills."))}finally{j(!1)}},[F,be,t]);r.useEffect(()=>{!n||E||(Ne(!0),Te())},[n,Te,E]),r.useEffect(()=>{const f=w=>{const Y=w.detail;String(Y?.workspaceId||"").trim()===t&&Te({quiet:!0})};return window.addEventListener(Dt,f),()=>window.removeEventListener(Dt,f)},[Te,t]),r.useEffect(()=>{if(!be)return;const f=w=>{w.preventDefault(),w.returnValue=""};return window.addEventListener("beforeunload",f),()=>window.removeEventListener("beforeunload",f)},[be]);const z=r.useMemo(()=>{const f=$e.trim().toLocaleLowerCase();return o.filter(w=>!ie&&w.lifecycleStatus==="retired"?!1:f?[w.definition.name,w.definition.shortDescription,w.definition.purpose].some(Y=>Y.toLocaleLowerCase().includes(f)):!0)},[$e,ie,o]),te=r.useMemo(()=>({schemaVersion:1,...x}),[x]),pe=r.useMemo(()=>To(te),[te]),g=r.useMemo(()=>pa(te),[te]),oe=r.useMemo(()=>ca(pe.issues,Q),[pe.issues,Q]),ue=()=>{be&&!window.confirm("Discard unsaved Skill changes?")||(S(null),k(Jt),B(ft(Jt)),q(!0),b(!1),X(!1),$(null),ge(null))},Le=()=>{const f=L?As(L):Jt;k(f),B(ft(f)),b(!1),X(!1),$(null),ge(null)},Xt=async()=>{if(!_){if(!pe.definition){X(!0),$(pe.issues[0]?.message||"Complete the required Skill fields."),da(pe.issues,H.current);return}M(!0),$(null),ge(null);try{const f=L?`/api/taskforce/agent-skills/${encodeURIComponent(L.id)}`:"/api/taskforce/agent-skills",w=await ht(f,{method:L?"PATCH":"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({workspaceId:t,definition:pe.definition,...L?{expectedContentHash:L.contentHash}:{}})}),Y=await w.json().catch(()=>({}));if(!w.ok||Y?.success===!1||!Y?.skill)throw new Error(Ws(Y,"Unable to save Skill."));const N=Y.skill,Z=As(N);d(xe=>xe.some(R=>R.id===N.id)?xe.map(R=>R.id===N.id?N:R):[...xe,N].sort((R,U)=>R.definition.name.localeCompare(U.definition.name))),S(N.id),k(Z),B(ft(Z)),q(!1),X(!1),ge(`Saved ${N.definition.name}.`),In({workspaceId:t,skillId:N.id,reason:L?"update":"create"})}catch(f){$(String(f?.message||f||"Unable to save Skill."))}finally{M(!1)}}},ve=async f=>{if(!(!L||_)){M(!0),$(null),ge(null);try{const w=await ht(`/api/taskforce/agent-skills/${encodeURIComponent(L.id)}/${f}`,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({workspaceId:t})}),Y=await w.json().catch(()=>({}));if(!w.ok||Y?.success===!1||!Y?.skill)throw new Error(Ws(Y,`Unable to ${f} Skill.`));const N=Y.skill;d(Z=>Z.map(xe=>xe.id===N.id?N:xe)),f==="retire"&&le(!0),b(!1),ge(`${f==="retire"?"Retired":"Restored"} ${N.definition.name}.`),In({workspaceId:t,skillId:N.id,reason:f})}catch(w){$(String(w?.message||w||`Unable to ${f} Skill.`))}finally{M(!1)}}},de=L?.usage.workflowCount,Me=L?L.usage.agentCount+(de||0):0,ce=[Me>0?`${Me} known Agent or Workflow configuration${Me===1?" references":"s reference"} this Skill and will require repair before running.`:"No known Agent or Workflow configurations currently reference this Skill.",de===null?"Workflow reference counts are unavailable in this version, so review attached Workflows before retiring it.":""].filter(Boolean).join(" ");return e.jsxs("div",{className:`${T.root} ${i?T.rootExternalLibrary:""}`.trim(),children:[e.jsx(oa,{singularLabel:"Skill",pluralLabel:"Skills",description:"Reusable capabilities that define how an Agent performs a class of work.",icon:e.jsx(vt,{size:15}),items:z.map(f=>({id:f.id,name:f.definition.name,description:f.definition.shortDescription,lifecycleStatus:f.lifecycleStatus})),selectedId:C,searchValue:$e,onSearchChange:Ke,showRetired:ie,onShowRetiredChange:le,loading:K,error:null,emptyMessage:o.length===0?"No Skills configured yet.":"No Skills match this view.",onCreate:ue,onSelect:f=>{const w=o.find(Y=>Y.id===f);w&&Ve(w)},libraryPortalTarget:i}),e.jsxs("main",{className:T.editor,children:[e.jsx(la,{icon:e.jsx(vt,{size:18}),title:F?"New Skill":L?.definition.name||"Skill Manager",description:"Define bounded, reusable guidance for how an Agent performs a class of work.",revision:L?.revision,retired:L?.lifecycleStatus==="retired",showActions:F||!!L,dirty:be,saving:_,onReset:Le,onSave:()=>{Xt()}}),u&&L?e.jsx(ma,{title:`Retire ${L.definition.name}?`,message:ce,entityLabel:"Skill",saving:_,onConfirm:()=>{ve("retire")},onCancel:()=>b(!1)}):null,W?e.jsx(sn,{type:"error",message:W}):null,re?e.jsx(sn,{type:"success",message:re}):null,!F&&!L?e.jsx(ua,{icon:e.jsx(vt,{size:24}),title:"Create your first Skill",description:"Skills package reusable instructions, inputs, outputs, and quality checks without granting tools or permissions.",actionLabel:"New Skill",onCreate:ue}):e.jsxs("div",{className:T.editorGrid,children:[e.jsxs("div",{className:T.formColumn,children:[e.jsxs("section",{className:Re.section,children:[e.jsx("div",{className:Re.sectionHeading,children:e.jsxs("div",{children:[e.jsx("h3",{className:"tf-heading-section",children:"Identity and discovery"}),e.jsx("p",{className:"tf-text-helper",children:"These fields help people find and understand the Skill. They are not added to normal prompts."})]})}),e.jsxs("div",{className:Re.twoColumn,children:[e.jsxs("label",{className:"tf-field-stack",children:[e.jsx("span",{className:"tf-field-label",children:"Name"}),e.jsx("input",{ref:f=>{H.current.name=f||void 0},id:"skill-field-name",className:"tf-field-shell","aria-label":"Name","aria-invalid":!!oe.get("name"),"aria-errormessage":oe.get("name")?"skill-field-name-error":void 0,value:x.name,maxLength:80,disabled:L?.lifecycleStatus==="retired",onChange:f=>k(w=>({...w,name:f.target.value}))}),e.jsx(qe,{id:"skill-field-name-error",message:oe.get("name")})]}),e.jsxs("label",{className:"tf-field-stack",children:[e.jsx("span",{className:"tf-field-label",children:"Short description"}),e.jsx("input",{ref:f=>{H.current.shortDescription=f||void 0},id:"skill-field-short-description",className:"tf-field-shell","aria-label":"Short description","aria-invalid":!!oe.get("shortDescription"),"aria-errormessage":oe.get("shortDescription")?"skill-field-short-description-error":void 0,value:x.shortDescription,maxLength:280,disabled:L?.lifecycleStatus==="retired",onChange:f=>k(w=>({...w,shortDescription:f.target.value}))}),e.jsx(qe,{id:"skill-field-short-description-error",message:oe.get("shortDescription")})]})]}),e.jsxs("label",{className:"tf-field-stack",children:[e.jsx("span",{className:"tf-field-label",children:"Purpose"}),e.jsx("textarea",{ref:f=>{H.current.purpose=f||void 0},id:"skill-field-purpose",className:"tf-field-shell","aria-label":"Purpose","aria-invalid":!!oe.get("purpose"),"aria-errormessage":oe.get("purpose")?"skill-field-purpose-error":void 0,rows:3,value:x.purpose,maxLength:1e3,disabled:L?.lifecycleStatus==="retired",onChange:f=>k(w=>({...w,purpose:f.target.value}))}),e.jsx(qe,{id:"skill-field-purpose-error",message:oe.get("purpose")})]})]}),e.jsxs("section",{className:Re.section,children:[e.jsx("div",{className:Re.sectionHeading,children:e.jsxs("div",{children:[e.jsx("h3",{className:"tf-heading-section",children:"Runtime behavior"}),e.jsx("p",{className:"tf-text-helper",children:"Only this bounded content is compiled into the Agent prompt."})]})}),e.jsxs("label",{className:"tf-field-stack",children:[e.jsx("span",{className:"tf-field-label",children:"Instructions"}),e.jsx("textarea",{ref:f=>{H.current.instructions=f||void 0},id:"skill-field-instructions",className:`tf-field-shell ${Re.instructions}`,"aria-label":"Instructions","aria-describedby":`skill-field-instructions-hint${oe.get("instructions")?" skill-field-instructions-error":""}`,"aria-invalid":!!oe.get("instructions"),"aria-errormessage":oe.get("instructions")?"skill-field-instructions-error":void 0,rows:9,value:x.instructions,maxLength:12e3,disabled:L?.lifecycleStatus==="retired",placeholder:"Describe how the Agent should perform this capability.",onChange:f=>k(w=>({...w,instructions:f.target.value}))}),e.jsx("span",{id:"skill-field-instructions-hint",className:"tf-field-hint",children:"Markdown is supported as text. Scripts and executable bundles are not supported."}),e.jsx(qe,{id:"skill-field-instructions-error",message:oe.get("instructions")})]}),e.jsx(Ns,{fieldPath:"expectedInputs",label:"Expected inputs",helper:"What information or artifacts should be available?",values:x.expectedInputs,placeholder:"e.g. Complete diff",onChange:f=>k(w=>({...w,expectedInputs:f})),disabled:L?.lifecycleStatus==="retired",issues:oe,fieldRefs:H}),e.jsx(Ns,{fieldPath:"expectedOutputs",label:"Expected outputs",helper:"What should this Skill produce?",values:x.expectedOutputs,placeholder:"e.g. Prioritized findings",onChange:f=>k(w=>({...w,expectedOutputs:f})),disabled:L?.lifecycleStatus==="retired",issues:oe,fieldRefs:H}),e.jsx(Ns,{fieldPath:"qualityChecks",label:"Quality checks",helper:"What must be true before the work is considered ready?",values:x.qualityChecks,placeholder:"e.g. Every finding cites evidence",onChange:f=>k(w=>({...w,qualityChecks:f})),disabled:L?.lifecycleStatus==="retired",issues:oe,fieldRefs:H})]}),e.jsxs("section",{className:Re.section,children:[e.jsx("div",{className:Re.sectionHeading,children:e.jsxs("div",{children:[e.jsx("h3",{className:"tf-heading-section",children:"Authoring metadata"}),e.jsx("p",{className:"tf-text-helper",children:"Useful for discovery and recommendations; excluded from runtime prompts and permissions."})]})}),e.jsx(Ns,{fieldPath:"exampleUseCases",label:"Example use cases",helper:"Situations where this Skill is useful.",values:x.exampleUseCases,placeholder:"e.g. Review a pull request",onChange:f=>k(w=>({...w,exampleUseCases:f})),disabled:L?.lifecycleStatus==="retired",issues:oe,fieldRefs:H}),e.jsx(cn,{selectedKeys:x.recommendedCapabilityGroups,title:"Required Tool Access",description:"Select the Taskforce modules this Skill expects. Requirements are saved for discovery but are not enforced or granted yet.",mode:"requirement",showFutureTools:!1,disabled:L?.lifecycleStatus==="retired",onChange:f=>k(w=>({...w,recommendedCapabilityGroups:f}))})]})]}),e.jsx(fa,{entityLabel:"Skill",note:"This is the exact bounded Skill content supplied to the Agent runtime. Discovery and recommendation metadata are excluded.",meta:e.jsxs("span",{className:"tf-chip-count",children:[g.length.toLocaleString()," chars"]}),metrics:L?[{label:"Revision",value:L.revision},{label:"Agent references",value:L.usage.agentCount},{label:"Workflow references",value:L.usage.workflowCount??"Unavailable"},{label:"Status",value:L.lifecycleStatus==="retired"?"Retired":"Active"}]:[],revisions:L?.revisions||[],lifecycleStatus:L?.lifecycleStatus,saving:_,retireDescription:"Remove it from new selection while preserving immutable history.",restoreDescription:"Allow this Skill to resolve for new Agent runs again.",onRetire:()=>b(!0),onRestore:()=>{ve("restore")},children:g?e.jsx("div",{className:T.preview,children:e.jsx(Zs,{variant:"detail",children:g})}):e.jsx("div",{className:T.previewEmpty,children:"Add runtime instructions to preview this Skill."})})]})]})]})}const Qn="Be concise and actionable.",at="New Taskforce Agent",Bo="Message this agent...",Ho=1e4,Rt=[{id:"agents",label:"Agents"},{id:"roles",label:"Roles"},{id:"skills",label:"Skills"},{id:"connections",label:"Connections"},{id:"resources",label:"Resources"}];function Xn(t){const n=t?.usage?.totalTokens;return n==null?"Not reported":`${n} tokens`}function Js(t){return t?.latencyMs===void 0||t?.latencyMs===null?"Not reported":`${t.latencyMs} ms`}function Ys(t){return t?.avatarUrl?ta(t.avatarUrl,t.avatarRevision,t.avatarUpdatedAt):""}function Fo(t){return t?.avatarSourceUrl?ta(t.avatarSourceUrl,t.avatarRevision,t.avatarUpdatedAt):""}function Qs({src:t,fallbackSize:n}){const{activeImageUrl:i,handleImageError:o}=er(t);return i?e.jsx("img",{src:i,alt:"",onError:o}):e.jsx(Tt,{size:n})}function Zn(t){return new Promise((n,i)=>{const o=new FileReader;o.onload=()=>n(String(o.result||"")),o.onerror=()=>i(new Error("Failed to read image file.")),o.readAsDataURL(t)})}function pt(t){if(t==null||t==="")return null;const n=Number(t);return Number.isFinite(n)?Math.max(0,Math.floor(n)):null}function qo(t){const n=String(t||"").replace(/\s+/g," ").trim();return n.length>260?`${n.slice(0,257).trim()}...`:n}function Ko(t){return/^\s*(?:<!doctype\s+html|<html\b)/i.test(String(t||""))}function ea(t){return"Taskforce HQ"}function Xs(t){return t==="fast"?"Fast":t==="advanced"?"Advanced":"Balanced"}function Vo(t){return t==="verified"?"Verified":t==="configured"?"Configured":"Unavailable"}const Wo=/(token|secret|password|credential|api[-_]?key|access[-_]?key)/i;function nn(t){return Array.isArray(t)?t.map(n=>nn(n)):!t||typeof t!="object"?typeof t!="string"?t:t.length>240?`${t.slice(0,237).trim()}...`:t:Object.fromEntries(Object.entries(t).map(([n,i])=>[n,Wo.test(n)?"[redacted]":nn(i)]))}function Jo(t){const n=nn(t||{}),i=JSON.stringify(n,null,2);return i.length>700?`${i.slice(0,697).trim()}...`:i}function Yo(t){const n=String(t||"").replace(/\s+/g," ").trim();return n?n.length>320?`${n.slice(0,317).trim()}...`:n:"No result text returned."}function Qo(t){const n=t.length;if(n===0)return"No tools used";const i=t.filter(d=>!d.ok).length,o=n===1?"tool":"tools";return i>0?`${n} ${o} used, ${i} failed`:`${n} ${o} used`}function Xo(t){const n=t.length,i=t.filter(d=>!d.ok).length,o=n===1?"tool":"tools";return i>0?`Used ${n} Taskforce ${o}; ${i} failed.`:`Used ${n} Taskforce ${o}.`}function Zo(t){return typeof t=="number"&&Number.isFinite(t)?`${t.toLocaleString()} tokens`:"Not configured"}function el(t,n){return t.role==="user"?"You":t.agentName||n}function tl(t){return{id:t.id,workspaceId:t.workspaceId,agentId:t.agentId,taskId:t.taskId,taskReference:t.taskReference,taskTitle:t.taskTitle,context:t.context,title:t.title||t.messages.find(n=>n.role==="user")?.content||"Agent chat",messageCount:t.messages.length,modelProvider:t.modelProvider,modelId:t.modelId,usage:t.usage,latencyMs:t.latencyMs,createdAt:t.createdAt,updatedAt:t.updatedAt}}function an(t){const n=t?.context?.type==="task"?t.context:null,i=String(n?.taskId||t?.taskId||"").trim();if(!i)return null;const o=String(n?.taskReference||t?.taskReference||"").trim(),d=String(n?.taskTitle||t?.taskTitle||"").trim();return{type:"task",taskId:i,taskReference:o,taskTitle:d}}function ha(t,n){return t?!n||n.taskId!==t.taskId?t:{type:"task",taskId:t.taskId,taskReference:t.taskReference||n.taskReference,taskTitle:t.taskTitle||n.taskTitle}:null}function ga(t){const n=String(t.taskReference||"").trim(),i=String(t.taskTitle||"").trim();return n?`${n}${i?` · ${i}`:""}`:i||"Linked task"}function sl(t,n=null){const i=String(t.title||"Agent chat").trim()||"Agent chat",o=Number(t.messageCount||0),d=an(t),C=d?ha(d,n):null,S=o>0?`${i} (${o})`:i;return C?`${ga(C)} · ${S}`:S}function fl({workspaceId:t,agentRosterTrayOpen:n=!0,onCloseAgentRosterTray:i,launchContext:o=null,onClearLaunchContext:d,onOpenTaskContext:C,taskReferences:S,surface:x="module",runtimeMode:k="local",cloudAuthConfigured:O=!1,authSessionResolved:B=!0,isAuthenticated:F=!1,resolveCloudAuthUrl:q,theme:K="dark",rememberedAgentId:j,rememberedConversationId:_,rememberedConversationByAgentId:M,rememberedSelectionReady:W=!0,onRememberSelection:$,onRenderDrawerHeader:re,onOpenConversation:ge}){const $e=r.useRef(1),Ke=r.useRef(null),ie=r.useRef(null),le=r.useRef(null),u=r.useRef(!1),b=r.useRef(!1),Q=r.useRef(null),X=r.useRef(0),E=r.useRef(0),Ne=r.useRef({agents:null,roles:null,skills:null,connections:null,resources:null}),[H,L]=r.useState("agents"),[be,Ve]=r.useState(null),[Te,z]=r.useState(null),[te,pe]=r.useState([]),[g,oe]=r.useState(null),[ue,Le]=r.useState(""),[Xt,ve]=r.useState("taskforce_hq"),[de,Me]=r.useState(En),[ce,f]=r.useState($n),[w,Y]=r.useState("balanced"),[N,Z]=r.useState(()=>Yt(null,{systemPrompt:Qn})),xe=N.workingGuidelines,p=r.useCallback(s=>{b.current=!0,Z(l=>({...l,workingGuidelines:s}))},[]),[R,U]=r.useState(""),[ee,he]=r.useState(!1),[me,ke]=r.useState(!1),[je,Zt]=r.useState(""),[Ie,es]=r.useState(null),[Mt,ts]=r.useState([]),[ss,yt]=r.useState([]),[va,bt]=r.useState(!1),[Cs,rt]=r.useState(""),[_s,ze]=r.useState(""),[kt,Ut]=r.useState(!1),[un,jt]=r.useState(null),[nl,We]=r.useState([]),[Rs,Ot]=r.useState(""),[al,xa]=r.useState(()=>[{id:$e.current++,type:"info",message:"Ready to run this agent through the server-side model gateway.",timestamp:new Date().toLocaleTimeString()}]),[we,mn]=r.useState(!1),[ns,fn]=r.useState(""),[Ue,Ts]=r.useState(null),[St,Is]=r.useState(null),[pn,Es]=r.useState([]),[$s,zt]=r.useState(""),[et,Ls]=r.useState(!1),[At,hn]=r.useState(!1),[ya,gn]=r.useState(!1),[Je,Nt]=r.useState(!1),[Ps,vn]=r.useState(!1),[Gt,Ye]=r.useState(null),[as,rs]=r.useState(null),[is,xn]=r.useState(()=>new Set),[ba,tt]=r.useState({}),[ka,yn]=r.useState(!1),[bn,os]=r.useState(!1),[ja,Ge]=r.useState(null),[Sa,it]=r.useState(null),[Ds,kn]=r.useState(!1),[Bt,Ms]=r.useState(()=>new Set),ot=r.useRef(new Map),Aa=r.useMemo(()=>Ja.filter(s=>Bs(s.key).length>0),[]),wt=r.useMemo(()=>Bs(de),[de]),Qe=r.useMemo(()=>wt.find(s=>s.key===ce)||null,[ce,wt]),I=r.useMemo(()=>te.find(s=>s.id===g)||null,[te,g]),ls=r.useMemo(()=>String(j||"").trim(),[j]),jn=r.useMemo(()=>String(_||"").trim(),[_]),cs=r.useMemo(()=>{const s={};return Object.entries(M||{}).forEach(([l,c])=>{const h=String(l||"").trim(),m=String(c||"").trim();!h||!m||(s[h]=m)}),s},[M]),Be=k==="local"&&O,Na=!Be||B&&F&&!!q,Us=!(k==="local"&&O)||B&&F,lt=r.useMemo(()=>Ys(I),[I]),wa=r.useMemo(()=>Fo(I),[I]),ct=!!(g&&Bt.has(g)),ds=g&&ba[g]||null,st=r.useMemo(()=>Mt.find(s=>s.id===Ie)||null,[Ie,Mt]),Se=r.useMemo(()=>{const s=String(o?.taskId||"").trim();if(!s)return null;const l=String(o?.taskReference||"").trim(),c=String(o?.taskTitle||"").trim();return{type:"task",taskId:s,taskReference:l,taskTitle:c}},[o?.taskId,o?.taskReference,o?.taskTitle]),Sn=r.useMemo(()=>an(st),[st]),He=Ie?Sn?ha(Sn,Se):null:Se,Ca=He?ga(He):"",_a=!!(He&&Se&&!Ie),us=r.useMemo(()=>{const s=String(st?.agentId||g||"").trim();return te.find(l=>l.id===s)||null},[te,g,st?.agentId]),Ra=us?.name||I?.name||ue.trim()||at,ms=us?.color||I?.color||(us?.id?mt(us.id):I?.id?mt(I.id):void 0),An=r.useRef(""),Ee=r.useCallback((s,l)=>{if(!$)return;const c=String(s||"").trim(),h=String(l||"").trim(),m=`${c}:${h}`;An.current!==m&&(An.current=m,$({agentId:c||null,conversationId:h||null}))},[$]),se=r.useCallback((s,l,c)=>{xa(h=>[...h,{id:$e.current++,type:s,message:l,timestamp:new Date().toLocaleTimeString(),...c&&c.length>0?{toolActivity:c}:{}}])},[]),dt=r.useCallback(()=>{E.current+=1,fn(""),Ts(null),Is(null),Es([]),zt(""),Ls(!1)},[]),fs=r.useCallback(s=>{X.current+=1,b.current=!1,le.current=s.id,oe(s.id),Le(s.name),ve("taskforce_hq"),Me(Hs(s.providerKey)),f(Fs(s.modelKey,s.providerKey)),Y(s.modelTier),Z(Yt(s.definition,{systemPrompt:s.systemPrompt})),U(s.color||mt(s.id)),he(!1),ke(!1),u.current=!1,es(null),ts([]),yt([]),bt(!1),rt(""),ze(""),Ut(!1),jt(null),We([]),Ye(null),dt()},[dt]),Os=r.useCallback(s=>{fs(s),Ee(s.id,cs[s.id]||null)},[fs,cs,Ee]),ut=r.useCallback(s=>{X.current+=1;const l=Array.isArray(s?.messages)?s.messages:[],c=[...l].reverse().find(h=>h.role==="assistant");es(s?.id||null),yt(l),bt(!1),rt(""),ze(""),Ut(!1),jt(c?{text:c.content,provider:s?.modelProvider||"taskforce_hq",modelId:s?.modelId||"Not reported",latencyMs:s?.latencyMs??null,usage:s?.usage||null}:null)},[]),Ht=r.useCallback(s=>{const l=tl(s);ts(c=>{const h=c.filter(m=>m.id!==l.id);return[l,...h]})},[]),Nn=r.useCallback(()=>{X.current+=1,b.current=!1,le.current=null,oe(null),Le(""),ve("taskforce_hq"),Me(En),f($n),Y("balanced"),Z(Yt(null,{systemPrompt:Qn})),U(""),he(!1),ke(!1),u.current=!1,es(null),ts([]),yt([]),bt(!1),rt(""),ze(""),Ut(!1),jt(null),We([]),Ye(null),dt(),Ee(null,null)},[Ee,dt]),ps=r.useCallback(s=>{if(s.type==="new"){Nn(),se("info","Started a new Taskforce agent draft.");return}Os(s.agent)},[se,Nn,Os]),Ft=r.useCallback(s=>{if(!(s.type==="agent"&&s.agent.id===le.current)){if(!b.current){ps(s);return}rs(s)}},[ps]),Ta=r.useCallback(()=>{if(!as)return;const s=as;rs(null),b.current=!1,ps(s)},[as,ps]);r.useEffect(()=>{const s=l=>{b.current&&(l.preventDefault(),l.returnValue="")};return window.addEventListener("beforeunload",s),()=>window.removeEventListener("beforeunload",s)},[]);const zs=r.useCallback(async(s,l)=>{Nt(!0);try{const c=await fetch(`/api/taskforce/agents/${encodeURIComponent(s)}/conversation?workspaceId=${encodeURIComponent(t)}&conversationId=${encodeURIComponent(l)}`,{credentials:"include"}),h=typeof c.clone=="function"?await c.clone().text().catch(()=>""):"",m=await c.json().catch(()=>({}));if(!c.ok||m?.success===!1){const v=c.status===404?"Taskforce agent conversation API route is not available. Restart the app server so the latest routes are active.":`Unable to load saved agent conversation. HTTP ${c.status||"unknown"}.`;se("error",String(m?.error||h||v));return}if(le.current!==s)return;const y=m?.conversation||null;ut(y),y&&Ht(y),Ee(s,y?.id||null),We([])}catch(c){se("error",String(c?.message||c||"Unable to load saved agent conversation."))}finally{Nt(!1)}},[se,ut,Ee,Ht,t]),hs=r.useCallback(async s=>{gn(!0),Nt(!0);try{const l=await fetch(`/api/taskforce/agents/${encodeURIComponent(s)}/conversations?workspaceId=${encodeURIComponent(t)}`,{credentials:"include"}),c=typeof l.clone=="function"?await l.clone().text().catch(()=>""):"",h=await l.json().catch(()=>({}));if(!l.ok||h?.success===!1){const y=l.status===404?"Taskforce agent conversation API route is not available. Restart the app server so the latest routes are active.":`Unable to load saved agent conversations. HTTP ${l.status||"unknown"}.`;se("error",String(h?.error||c||y));return}if(le.current!==s)return;const m=Array.isArray(h?.conversations)?h.conversations:[];if(ts(m),m.length>0){const y=cs[s]||(s===ls?jn:""),v=y?m.find(V=>V.id===y):null,A=Se?m.find(V=>an(V)?.taskId===Se.taskId):null,J=v?.id||A?.id||(Se?null:m[0].id);J?await zs(s,J):(ut(null),Ee(s,null),We([]))}else ut(null),Ee(s,null),We([])}catch(l){se("error",String(l?.message||l||"Unable to load saved agent conversations."))}finally{gn(!1),Nt(!1)}},[se,ut,zs,ls,cs,jn,Ee,Se,t]),Fe=r.useCallback(async s=>{const l=s?.quiet===!0;l||(hn(!0),Ye(null));try{const c=await fetch(`/api/taskforce/agents?workspaceId=${encodeURIComponent(t)}`,{credentials:"include"}),h=typeof c.clone=="function"?await c.clone().text().catch(()=>""):"",m=await c.json().catch(()=>({}));if(!c.ok||m?.success===!1){const J=c.status===404?"Taskforce agent API route is not available. Restart the app server so the latest routes are active.":`Unable to load saved agents. HTTP ${c.status||"unknown"}.`,V=String(m?.error||h||J);se("error",V),l||Ye({type:"error",message:V});return}const y=Array.isArray(m?.agents)?m.agents:[];ie.current=t,pe(J=>{const V=new Map(J.map(G=>[G.id,G]));return y.map(G=>{const ne=ot.current.get(G.id),P=pt(G.avatarRevision);if(ne===void 0||P!==null&&P>=ne)return G;const ae=V.get(G.id);return ae?{...G,profileId:ae.profileId||G.profileId||null,avatarUrl:ae.avatarUrl,avatarSourceUrl:ae.avatarSourceUrl,avatarRevision:ae.avatarRevision,avatarUpdatedAt:ae.avatarUpdatedAt}:G})}),Ms(J=>{let V=null;for(const G of J){const ne=ot.current.get(G),P=y.find(ye=>ye.id===G),ae=pt(P?.avatarRevision);ne===void 0||ae===null||ae<ne||(V??=new Set(J),V.delete(G),ot.current.delete(G))}return V||J});const v=le.current,A=v?y.find(J=>J.id===v):null;A&&!u.current&&U(A.color||mt(A.id))}catch(c){const h=String(c?.message||c||"Unable to load saved agents.");se("error",h),l||Ye({type:"error",message:h})}finally{l||hn(!1)}},[se,t]);r.useEffect(()=>{dt()},[dt,t]),r.useEffect(()=>{Fe()},[Fe]),r.useEffect(()=>{if(!W||ie.current!==t||Ke.current===t)return;if(te.length===0){if(At)return;Ee(null,null);return}Ke.current=t;const s=te.find(l=>l.id===ls);b.current||fs(s||te[0])},[te,fs,At,ls,W,Ee,t]),r.useEffect(()=>{const s=l=>{const c=l.detail;if((String(c?.workspaceId||"").trim()||"default")!==t)return;const m=c?.reason;if(!(m==="sync-apply"||m==="agent-avatar-upload"||m==="agent-avatar-remove"||m==="agent-avatar-generate"&&!Be)||(Fe({quiet:!0}),m!=="sync-apply"))return;const v=String(c?.agentId||"").trim(),A=le.current;A&&(!v||v===A)&&hs(A)};return window.addEventListener(Pt,s),()=>window.removeEventListener(Pt,s)},[Fe,hs,Be,t]),r.useEffect(()=>{const s=l=>{const c=l.detail;if((String(c?.workspaceId||"").trim()||"default")!==t||c?.origin==="taskforce-agents-module")return;const m=c?.taskforceAgentAvatar,y=String(m?.agentId||"").trim();if(m&&y){const v=pt(m.avatarRevision)??0;Be&&(ot.current.set(y,v),Ms(A=>new Set(A).add(y))),pe(A=>A.map(J=>J.id===y?{...J,profileId:c.profileId||J.profileId||null,avatarUrl:m.avatarUrl,avatarSourceUrl:m.avatarSourceUrl,avatarRevision:v,avatarUpdatedAt:m.avatarUpdatedAt}:J))}Fe({quiet:!0})};return window.addEventListener(Ln,s),()=>window.removeEventListener(Ln,s)},[Fe,Be,t]),r.useEffect(()=>{const s=window.setInterval(()=>{Fe({quiet:!0})},Ho);return()=>window.clearInterval(s)},[Fe]),r.useEffect(()=>{le.current=g},[g]),r.useEffect(()=>{g&&hs(g)},[hs,g]),r.useEffect(()=>{if(Bt.size===0)return;const s=window.setInterval(()=>{Fe()},4e3);return()=>window.clearInterval(s)},[Bt.size,Fe]),r.useEffect(()=>{if(!(x!=="taskDrawer"||!re))return re(e.jsxs("div",{className:a.taskforceAgentDrawerAgentHeader,children:[e.jsxs("button",{type:"button",className:`${a.taskforceAgentDrawerAgentAvatar} ${a.taskforceAgentDrawerAgentAvatarButton} ${ct?a.taskforceAgentAvatarSyncing:""}`.trim(),onClick:()=>kn(s=>!s),disabled:!g,title:I?`View ${I.name} profile`:"Select an agent to view profile","aria-label":I?`View ${I.name} profile`:"View agent profile","aria-expanded":Ds,children:[lt?e.jsx(Qs,{src:lt,fallbackSize:16}):e.jsx(Tt,{size:16}),ct?e.jsx(Oe,{size:12,className:`${a.spinner} ${a.taskforceAgentAvatarSyncIcon}`}):null]}),e.jsx("label",{className:a.taskforceAgentDrawerAgentPicker,children:e.jsx("select",{className:a.select,value:g||"",onChange:s=>{const l=te.find(c=>c.id===s.target.value);l&&Ft({type:"agent",agent:l})},disabled:!W||At||te.length===0||we,"aria-label":"Agent",children:te.length>0?te.map(s=>e.jsx("option",{value:s.id,children:s.name},s.id)):e.jsx("option",{value:"",children:"No agents configured"})})})]})),()=>re(null)},[te,Ds,ct,At,re,Ft,I,lt,g,x,we]),r.useEffect(()=>{Se&&se("info",`Task context attached: ${Se.taskReference}.`)},[se,Se]),r.useEffect(()=>{Q.current?.scrollIntoView?.({block:"end"})},[ss.length,Je,we]);const wn=r.useCallback(()=>Co({baseDefinition:I?.definition,draft:N,name:ue.trim()||at,providerKey:de,modelKey:ce,tier:Qe?.defaultTier||w}),[ue,N,ce,w,de,I?.definition,Qe?.defaultTier]),Ia=async()=>{const s=ue.trim(),l=N.purpose.trim();if(!s||!l||!ce||Ps)return;const c=!g,h=wn();vn(!0),Ye(null);try{const m=g?`/api/taskforce/agents/${encodeURIComponent(g)}`:"/api/taskforce/agents",y=await fetch(m,{method:g?"PATCH":"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({workspaceId:t,definition:h,lifecycleStatus:I?.lifecycleStatus||(I?.enabled===!1?"disabled":"active"),...g?{expectedDefinitionHash:I?.definitionHash}:{},...ee&&R?{signatureColor:R}:{},...me?{resetSignatureColor:!0}:{}})}),v=await y.json().catch(()=>({}));if(!y.ok||v?.success===!1||!v?.agent){const V=v?.code==="TASKFORCE_AGENT_DEFINITION_CONFLICT"?"This Agent changed after you opened it. Your draft is preserved; reload the Agent before saving again.":String(v?.error||"Unable to save agent.");se("error",V),Ye({type:"error",message:V});return}const A=v.agent;b.current=!1,pe(V=>V.some(ne=>ne.id===A.id)?V.map(ne=>ne.id===A.id?A:ne):[A,...V]),c?Os(A):(Le(A.name),ve("taskforce_hq"),Me(Hs(A.providerKey)),f(Fs(A.modelKey,A.providerKey)),Y(A.modelTier),Z(Yt(A.definition,{systemPrompt:A.systemPrompt})),U(A.color||mt(A.id)),he(!1),ke(!1),u.current=!1);const J=`Saved ${A.name}.`;se("success",J),Ye({type:"success",message:J}),Ze({workspaceId:t,agentId:A.id,reason:"agent-save"}),A.profileId&&ys({workspaceId:t,profileId:A.profileId,reason:"update",origin:"taskforce-agents-module"}),c&&!Ys(A)&&Cn(A)}catch(m){const y=String(m?.message||m||"Unable to save agent.");se("error",y),Ye({type:"error",message:y})}finally{vn(!1)}};async function Cn(s){const l=s.id;if(!l||is.has(l))return!1;if(!Na){const c=B?"Sign in to Taskforce Cloud to generate agent avatars.":"Cloud sign-in is still loading. Try again in a moment.";return tt(h=>({...h,[l]:{error:c,notice:null}})),!1}xn(c=>new Set(c).add(l)),Ge(null),it(null),tt(c=>({...c,[l]:{error:null,notice:null}}));try{const c=`/api/taskforce/agents/${encodeURIComponent(l)}/avatar/generate`,h=Be&&q?q(c):c,m=await fetch(h,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({workspaceId:t})}),y=typeof m.clone=="function"?await m.clone().text().catch(()=>""):"",v=await m.json().catch(()=>({}));if(!m.ok||v?.success===!1||!v?.agent){const ne=m.status?`Unable to generate agent avatar. HTTP ${m.status}.`:"Unable to generate agent avatar.",P=v?.details&&typeof v.details=="object"?v.details:null,ae=[typeof P?.modelId=="string"&&P.modelId?`model ${P.modelId}`:"",typeof P?.region=="string"&&P.region?`region ${P.region}`:""].filter(Boolean),ye=ae.length?` Tried ${ae.join(" in ")}.`:"",nt=Ko(y)?`${ne} Please try again.`:qo(y),gs=`${String(v?.error||nt||ne)}${ye}`;return tt(vs=>({...vs,[l]:{error:gs,notice:null}})),!1}const A=v.agent,J=typeof v?.avatar?.profileId=="string"?v.avatar.profileId.trim():"",V=Be&&q?{...A,avatarUrl:A.avatarUrl?Mn(A.avatarUrl):A.avatarUrl,avatarSourceUrl:A.avatarSourceUrl?Mn(A.avatarSourceUrl):A.avatarSourceUrl}:A,G={...V,profileId:V.profileId||J||s.profileId||null};if(pe(ne=>ne.map(P=>P.id===G.id?{...P,...G,profileId:G.profileId||P.profileId||null}:P)),Be){const ne=pt(G.avatarRevision)??pt(v?.avatar?.avatarRevision)??0;ot.current.set(G.id,ne),Ms(P=>new Set(P).add(G.id)),tt(P=>({...P,[l]:{error:null,notice:`Generated photo for ${G.name} was saved in Taskforce Cloud. The local copy will be retained when sync runs.`}}))}else tt(ne=>({...ne,[l]:{error:null,notice:`Generated photo for ${G.name} was saved.`}}));return Ze({workspaceId:t,agentId:G.id,reason:"agent-avatar-generate"}),ys({workspaceId:t,profileId:typeof v?.avatar?.profileId=="string"?v.avatar.profileId:null,reason:"avatar",origin:"taskforce-agents-module"}),!0}catch(c){const h=String(c?.message||c||"Unable to generate agent avatar.");return tt(m=>({...m,[l]:{error:h,notice:null}})),!1}finally{xn(c=>{const h=new Set(c);return h.delete(l),h})}}const Ea=async()=>!g||!I?!1:_o(I.definition,N)?(Ge("Save the avatar description and art style before generating."),it(null),!1):Cn(I),_n=s=>{const l=String(s?.id||"").trim();l&&pe(c=>c.map(h=>h.profileId===l?{...h,avatarUrl:typeof s.avatarUrl=="string"?s.avatarUrl:null,avatarSourceUrl:typeof s.avatarSourceUrl=="string"?s.avatarSourceUrl:null,avatarRevision:Number.isFinite(Number(s.avatarRevision))?Math.max(0,Math.floor(Number(s.avatarRevision))):h.avatarRevision,avatarUpdatedAt:typeof s.avatarUpdatedAt=="string"?s.avatarUpdatedAt:h.avatarUpdatedAt}:h))},$a=async(s,l,c)=>{const h=String(I?.profileId||"").trim();if(!g||!h)return Ge("Save the agent before editing its profile photo."),!1;if(!s.type.startsWith("image/"))return Ge("Agent profile photo must be an image file."),!1;os(!0),Ge(null),it(null),tt(y=>{const v={...y};return delete v[g],v});const m=Be&&Bt.has(g)&&!!q;try{const y=await Pn(s,{maxBytes:5242880});if(y.exceededLimit)throw new Error(s.type==="image/gif"?"Animated GIF agent photos must be 5 MB or smaller.":"Agent profile photo must be 5 MB or smaller.");let v=null;if(l){const vs=await Pn(l,{maxBytes:5242880});if(vs.exceededLimit)throw new Error(l.type==="image/gif"?"Animated GIF agent source photos must be 5 MB or smaller.":"Agent profile source photo must be 5 MB or smaller.");v=vs.file}const A=y.file,J=await Zn(A),V=v?await Zn(v):null,G={profileId:h,preserveExistingSource:c?.preserveExistingSource===!0,displayImage:{dataUrl:J,mimeType:A.type||"application/octet-stream",originalName:A.name||"display-avatar"}};v&&V&&(G.sourceImage={dataUrl:V,mimeType:v.type||"application/octet-stream",originalName:v.name||"source-avatar"});const ne="/api/taskforce/workspace/ai-profiles/avatar/upload",P=m&&q?Dn(q(ne)):ne,ae=await fetch(P,{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify(G)}),ye=await ae.json().catch(()=>({}));if(!ae.ok||!ye?.profile)throw new Error(String(ye?.error||"Failed to update agent profile photo."));const nt=m&&q?{...ye.profile,avatarUrl:ye.profile.avatarUrl?q(ye.profile.avatarUrl):ye.profile.avatarUrl,avatarSourceUrl:ye.profile.avatarSourceUrl?q(ye.profile.avatarSourceUrl):ye.profile.avatarSourceUrl}:ye.profile;_n(nt);const gs=pt(nt.avatarRevision);return m&&gs!==null&&ot.current.set(g,gs),m||(Ze({workspaceId:t,agentId:g,reason:"agent-avatar-upload"}),ys({workspaceId:t,profileId:h,reason:"avatar",origin:"taskforce-agents-module"})),!0}catch(y){return Ge(String(y?.message||"Failed to update agent profile photo.")),!1}finally{os(!1)}},La=async()=>{const s=String(I?.profileId||"").trim();if(!g||!s)return;os(!0),Ge(null),it(null),tt(c=>{const h={...c};return delete h[g],h});const l=Be&&Bt.has(g)&&!!q;try{const c="/api/taskforce/workspace/ai-profiles/avatar",h=l&&q?Dn(q(c)):c,m=await fetch(h,{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({profileId:s,avatarUrl:null,avatarSourceUrl:null})}),y=await m.json().catch(()=>({}));if(!m.ok||!y?.profile)throw new Error(String(y?.error||"Failed to remove agent profile photo."));_n(y.profile);const v=pt(y.profile.avatarRevision);l&&v!==null&&ot.current.set(g,v),it(l?"Agent profile photo removed in Taskforce Cloud. The local copy will be retained when sync runs.":"Agent profile photo removed."),l||(Ze({workspaceId:t,agentId:g,reason:"agent-avatar-remove"}),ys({workspaceId:t,profileId:s,reason:"avatar",origin:"taskforce-agents-module"}))}catch(c){Ge(String(c?.message||"Failed to remove agent profile photo."))}finally{os(!1)}},Pa=()=>Ft({type:"new"}),Da=s=>{b.current=!0;const l=Hs(s),c=Bs(l);Me(l),f(c[0]?.key||""),Y(c[0]?.defaultTier||"balanced")},Ma=s=>{b.current=!0;const l=Fs(s,de),c=wt.find(h=>h.key===l);f(l),c&&Y(c.defaultTier)},Gs=()=>{kt||(X.current+=1,bt(!1),rt(""),ze(""))},Ua=()=>{!g||!Ie||!st||(X.current+=1,rt(st.title||"Agent chat"),ze(""),bt(!0))},Oa=async s=>{s.preventDefault();const l=Cs.trim();if(!g||!Ie||kt)return;if(!l){ze("Chat name is required.");return}if(l===st?.title){Gs();return}const c=g,h=Ie,m=++X.current;Ut(!0),ze("");try{const y=await fetch(`/api/taskforce/agents/${encodeURIComponent(c)}/conversations/${encodeURIComponent(h)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({workspaceId:t,title:l})}),v=await y.json().catch(()=>({}));if(X.current!==m||le.current!==c)return;if(!y.ok||v?.success===!1||!v?.conversation){ze(String(v?.error||"Unable to rename chat."));return}Ht(v.conversation),bt(!1),rt(""),Ze({workspaceId:t,agentId:c,conversationId:h,reason:"conversation-update"})}catch(y){if(X.current!==m||le.current!==c)return;ze(String(y?.message||y||"Unable to rename chat."))}finally{X.current===m&&Ut(!1)}},za=async()=>{if(!g){Zt(""),yt([]),jt(null),We([]),es(null),se("info","Started a new unsaved chat.");return}Nt(!0),We([]);try{const s=await fetch(`/api/taskforce/agents/${encodeURIComponent(g)}/conversation/new`,{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({workspaceId:t,...Se?{taskId:Se.taskId,taskReference:Se.taskReference,taskTitle:Se.taskTitle}:{}})}),l=await s.json().catch(()=>({}));if(!s.ok||l?.success===!1){se("error",String(l?.error||"Unable to start a new chat."));return}Zt("");const c=l?.conversation||null;ut(c),Ee(g,c?.id||null),c&&Ht(c),Ze({workspaceId:t,agentId:g,conversationId:l?.conversation?.id||null,reason:"conversation-create"}),se("info","Started a new saved chat.")}catch(s){se("error",String(s?.message||s||"Unable to start a new chat."))}finally{Nt(!1)}},Ga=async()=>{const s=ns.trim(),l=ue.trim()||at;if(!s||!N.purpose.trim()||!ce||et)return;const c=wn();if(!Us){zt(B?"Sign in to Taskforce Cloud to test this agent.":"Cloud sign-in is still loading. Try again in a moment.");return}Ls(!0);const h=++E.current;Ts(null),Is(null),Es([]),zt("");try{const m=await fetch("/api/taskforce/agents/model-gateway/test",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({workspaceId:t,agentName:l,providerKey:de,modelKey:ce,prompt:s,messages:[{role:"user",content:s}],draftDefinition:c})}),y=await m.json().catch(()=>({}));if(E.current!==h)return;if(!m.ok||y?.success===!1){zt(String(y?.error||"Agent test failed."));return}Ts(y?.result||null),Is({agentName:l,providerKey:de,modelKey:ce,prompt:s,definition:c});const v=Array.isArray(y?.mcpToolCalls)?y.mcpToolCalls:[];Es(v.reduce((A,J,V)=>{const G=String(J?.name||"").trim();return G&&A.push({id:`draft-${V}-${G}`,name:G,arguments:J.arguments,resultText:J.text,ok:J.ok!==!1}),A},[]))}catch(m){if(E.current!==h)return;zt(String(m?.message||m||"Agent test failed."))}finally{E.current===h&&Ls(!1)}},Rn=async()=>{const s=je.trim(),l=xe.trim(),c=ue.trim()||at;if(!s||!ce||we||Je)return;if(!Us){const y=B?"Sign in to Taskforce Cloud to chat with Taskforce agents.":"Cloud sign-in is still loading. Try again in a moment.";Ot(y),se("error",y);return}mn(!0),jt(null),Ot("");const h=Date.now(),m=[...ss,{role:"user",content:s}];yt(m),Zt(""),We([]),se("info",`Started test prompt for ${c}.`);try{const y=await fetch("/api/taskforce/agents/model-gateway/test",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({workspaceId:t,agentId:g,conversationId:Ie,agentName:c,providerKey:de,modelKey:ce,prompt:s,messages:m,system:l,tier:Qe?.defaultTier||w,...He?{taskId:He.taskId,taskReference:He.taskReference,taskTitle:He.taskTitle}:{}})}),v=await y.json().catch(()=>({}));if(!y.ok||v?.success===!1){const P=String(v?.error||"Model gateway test failed.");Ot(P),se("error",P);return}const A=v?.result||null;jt(A);const J=Array.isArray(v?.mcpToolCalls)?v.mcpToolCalls:[],V=J.reduce((P,ae,ye)=>{const nt=String(ae?.name||"").trim();return nt&&P.push({id:`${h}-${ye}-${nt}`,name:nt,arguments:ae.arguments,resultText:ae.text,ok:ae.ok!==!1}),P},[]);if(We(V),V.length>0){const P=V.some(ae=>!ae.ok);se(P?"error":"success",Xo(V),V)}const G=v?.workflowCompletion;let ne=G?.taskSnapshot||null;G?.executionId&&G.assignmentSnapshot&&(ne=await tr(G,{workspaceId:t,runtimeMode:k})),J.length>0&&V.forEach(P=>{(P.name==="add_comment"||P.name==="add_task_checklist_item"||P.name==="replace_task_checklist"||P.name==="complete_workflow_step")&&P.ok&&sr({workspaceId:t,taskId:(P.name==="complete_workflow_step"?G?.taskId:null)||He?.taskId||String(P.arguments?.taskId||P.arguments?.id||"").trim()||null,reason:P.name==="add_comment"?"agent-comment":P.name==="complete_workflow_step"?"workflow-step":"agent-checklist",...P.name==="complete_workflow_step"&&ne?{authoritativeTask:ne}:{}})}),v?.conversation?(ut(v.conversation),Ee(g,v.conversation.id||Ie||null),Ht(v.conversation),Ze({workspaceId:t,agentId:g,conversationId:v.conversation.id||Ie,reason:"conversation-update"})):yt(A?.text?[...m,{role:"assistant",content:String(A.text),agentId:g||void 0,agentName:c,providerKey:de,providerLabel:qt(de),modelKey:ce,modelLabel:xs(ce),modelId:String(A.modelId||""),...V.length>0?{toolActivity:V.map(({id:P,...ae})=>ae)}:{}}]:m),se("success",`Model gateway completed successfully in ${A?.latencyMs??Date.now()-h} ms.`)}catch(y){const v=String(y?.message||y||"Model gateway test failed.");Ot(v),se("error",v)}finally{mn(!1)}},Ba=s=>{s.key!=="Enter"||s.shiftKey||s.nativeEvent.isComposing||(s.preventDefault(),Rn())},Ha=s=>{!g||!s||s===Ie||zs(g,s)},Fa=s=>e.jsx("div",{className:a.taskforceAgentToolActivityList,children:s.map(l=>e.jsxs("details",{className:`${a.taskforceAgentToolCall} ${l.ok?"":a.taskforceAgentToolCallFailed}`.trim(),children:[e.jsxs("summary",{children:[l.ok?e.jsx(It,{size:13}):e.jsx(gt,{size:13}),e.jsx("span",{className:a.taskforceAgentToolCallName,children:l.name}),e.jsx("span",{className:a.taskforceAgentToolCallStatus,children:l.ok?"ok":"failed"})]}),e.jsxs("div",{className:a.taskforceAgentToolDetailsGrid,children:[e.jsx("span",{children:"Arguments"}),e.jsx("pre",{children:Jo(l.arguments)}),e.jsx("span",{children:"Result"}),e.jsx("pre",{children:Yo(l.resultText)})]})]},l.id))}),Tn=(s,l="Tool Activity")=>e.jsxs("details",{className:a.taskforceAgentToolActivity,children:[e.jsxs("summary",{children:[e.jsx("span",{children:l}),e.jsx("strong",{children:Qo(s)})]}),Fa(s)]}),Ct=H==="agents"?{icon:e.jsx(Tt,{size:14}),title:"Agent Roster",empty:"No agents configured yet."}:H==="roles"?{icon:e.jsx($t,{size:14}),title:"Role Library",empty:"No roles configured yet."}:H==="skills"?{icon:e.jsx(vt,{size:14}),title:"Skill Library",empty:"Browse and manage Skills in the editor."}:H==="connections"?{icon:e.jsx(Qt,{size:14}),title:"Connection Library",empty:"Connections are not available yet."}:{icon:e.jsx(ws,{size:14}),title:"Resource Library",empty:"Resource Collections are not available yet."},qa=e.jsxs("div",{className:a.taskforceAgentBuilderNavigation,children:[e.jsx("div",{className:a.taskforceAgentBuilderTabs,role:"tablist","aria-label":"Taskforce Agent builders",children:Rt.map((s,l)=>{const c=H===s.id;return e.jsx("button",{ref:h=>{Ne.current[s.id]=h},type:"button",className:`${a.taskforceAgentBuilderTab} ${c?a.taskforceAgentBuilderTabActive:""}`.trim(),role:"tab","aria-selected":c,"aria-controls":`taskforce-agent-builder-${s.id}`,id:`taskforce-agent-builder-tab-${s.id}`,tabIndex:c?0:-1,onClick:()=>L(s.id),onKeyDown:h=>{let m=l;if(h.key==="ArrowRight")m=(l+1)%Rt.length;else if(h.key==="ArrowLeft")m=(l-1+Rt.length)%Rt.length;else if(h.key==="Home")m=0;else if(h.key==="End")m=Rt.length-1;else return;h.preventDefault();const y=Rt[m];L(y.id),Ne.current[y.id]?.focus()},children:s.label},s.id)})}),H==="agents"?e.jsxs("button",{type:"button",className:`${a.secondaryHeaderBtn} ${a.taskforceAgentBuilderCreateBtn}`.trim(),onClick:Pa,children:[e.jsx(xt,{size:14}),"New Agent"]}):null]}),Ka=e.jsxs("aside",{className:`${a.docTrayPanel} ${n?a.docTrayPanelOpen:""}`.trim(),"aria-hidden":!n,"aria-label":Ct.title,children:[e.jsxs("div",{className:a.taskforceAgentRosterHeader,children:[e.jsxs("span",{className:a.taskforceAgentRosterTitle,children:[Ct.icon,Ct.title]}),H==="agents"&&At&&e.jsx(Oe,{size:14,className:a.spinner}),i?e.jsx("button",{type:"button",className:"tf-control-icon",onClick:i,title:`Collapse ${Ct.title.toLowerCase()}`,"aria-label":`Collapse ${Ct.title.toLowerCase()}`,children:e.jsx(xr,{size:16})}):null]}),e.jsx("div",{className:`${a.taskforceAgentRosterContent} tf-scrollbar tf-tray-scroll-viewport`,children:H==="roles"?e.jsx("div",{ref:Ve,className:a.taskforceAgentLibraryPortal}):H==="skills"?e.jsx("div",{ref:z,className:a.taskforceAgentLibraryPortal}):H==="connections"?e.jsx(Bn,{kind:"connections"}):H==="resources"?e.jsx(Bn,{kind:"resources"}):H==="agents"&&te.length>0?e.jsx("div",{className:a.taskforceAgentList,children:te.map(s=>{const l=Ys(s),c=s.color||mt(s.id);return e.jsx(nr,{name:s.name,username:s.username,subtitle:"Taskforce Agent",avatar:l?e.jsx(Qs,{src:l,fallbackSize:22}):e.jsx(Tt,{size:22}),avatarStyle:{color:c},selected:s.id===g,disabled:!W,onSelect:()=>Ft({type:"agent",agent:s}),ariaLabel:`Edit ${s.name}`,bottomUtility:e.jsx("span",{className:a.aiProfileGroupSignatureSwatch,style:{backgroundColor:c},title:`Signature color ${c}`,"aria-hidden":"true"})},s.id)})}):e.jsx("p",{className:a.taskforceAgentListEmpty,children:Ct.empty})})]});return x==="taskDrawer"?e.jsxs("div",{className:a.taskforceAgentDrawerSurface,children:[He?e.jsxs("div",{className:a.taskforceAgentContextBanner,children:[e.jsxs("div",{children:[e.jsx("span",{children:"Context"}),e.jsx("strong",{children:Ca})]}),e.jsxs("div",{className:a.taskforceAgentContextActions,children:[C?e.jsx("button",{type:"button",className:"tf-control-icon tf-control-icon-compact",onClick:()=>C(He.taskId),title:"Open task","aria-label":"Open task",children:e.jsx(yr,{size:13})}):null,d&&_a?e.jsx("button",{type:"button",className:"tf-control-icon tf-control-icon-compact",onClick:d,title:"Clear task context","aria-label":"Clear task context",children:e.jsx(Lt,{size:13})}):null]})]}):null,Ds&&I?e.jsxs("section",{className:a.taskforceAgentProfileTray,"aria-label":`${I.name} profile`,children:[e.jsxs("div",{className:a.taskforceAgentProfileTrayHeader,children:[e.jsxs("span",{className:`${a.taskforceAgentAvatarPreview} ${ct?a.taskforceAgentAvatarSyncing:""}`.trim(),"aria-hidden":"true",children:[lt?e.jsx(Qs,{src:lt,fallbackSize:18}):e.jsx(Tt,{size:18}),ct?e.jsx(Oe,{size:13,className:`${a.spinner} ${a.taskforceAgentAvatarSyncIcon}`}):null]}),e.jsxs("div",{className:a.taskforceAgentProfileTrayIdentity,children:[e.jsx("span",{children:"Agent profile"}),e.jsx("strong",{children:I.name}),e.jsxs("small",{children:[qt(I.providerKey)," · ",Xs(I.modelTier)]})]}),e.jsx("button",{type:"button",className:"tf-control-icon tf-control-icon-compact",onClick:()=>kn(!1),title:"Close agent profile","aria-label":"Close agent profile",children:e.jsx(Lt,{size:13})})]}),e.jsxs("dl",{className:a.taskforceAgentProfileTrayDetails,children:[e.jsxs("div",{children:[e.jsx("dt",{children:"Platform"}),e.jsx("dd",{children:ea(I.modelProvider)})]}),e.jsxs("div",{children:[e.jsx("dt",{children:"Provider"}),e.jsx("dd",{children:qt(I.providerKey)})]}),e.jsxs("div",{children:[e.jsx("dt",{children:"Model"}),e.jsx("dd",{children:xs(I.modelKey)})]}),e.jsxs("div",{children:[e.jsx("dt",{children:"Default tier"}),e.jsx("dd",{children:Xs(I.modelTier)})]})]})]}):null,e.jsxs("div",{className:a.taskforceAgentDrawerControls,children:[re?null:e.jsxs("label",{className:a.field,children:[e.jsx("span",{className:a.label,children:"Agent"}),e.jsx("select",{className:a.select,value:g||"",onChange:s=>{const l=te.find(c=>c.id===s.target.value);l&&Ft({type:"agent",agent:l})},disabled:!W||At||te.length===0||we,children:te.length>0?te.map(s=>e.jsxs("option",{value:s.id,children:[s.name," · ",xs(s.modelKey)]},s.id)):e.jsx("option",{value:"",children:"No agents configured"})})]}),va?e.jsxs("form",{className:a.taskforceAgentConversationRename,onSubmit:Oa,children:[e.jsx("input",{className:a.input,"aria-label":"Chat name",value:Cs,onChange:s=>{rt(s.target.value),_s&&ze("")},onKeyDown:s=>{s.key==="Escape"&&(s.preventDefault(),Gs())},maxLength:120,autoFocus:!0,disabled:kt}),e.jsx("button",{type:"submit",className:"tf-control-icon","aria-label":"Save chat name",title:"Save chat name",disabled:kt||!Cs.trim(),children:kt?e.jsx(Oe,{size:14,className:a.spinner}):e.jsx(tn,{size:14})}),e.jsx("button",{type:"button",className:"tf-control-icon",onClick:Gs,"aria-label":"Cancel renaming",title:"Cancel",disabled:kt,children:e.jsx(Lt,{size:14})}),_s?e.jsx("div",{className:a.taskforceAgentConversationRenameError,role:"alert",children:_s}):null]}):e.jsxs("div",{className:a.taskforceAgentDrawerChatControls,children:[g?e.jsx("select",{className:`${a.select} ${a.taskforceAgentConversationSelect}`.trim(),"aria-label":"Saved chats",value:Ie||"",onChange:s=>Ha(s.target.value),disabled:we||Je||ya||Mt.length===0,children:Mt.length>0?e.jsxs(e.Fragment,{children:[Ie?null:e.jsx("option",{value:"",children:"Select chat"}),Mt.map(s=>e.jsx("option",{value:s.id,children:sl(s,Se)},s.id))]}):e.jsx("option",{value:"",children:"No chats"})}):null,e.jsx("button",{type:"button",className:"tf-control-icon",onClick:Ua,disabled:we||Je||!st,"aria-label":"Rename chat",title:"Rename chat",children:e.jsx(br,{size:14})}),e.jsx("button",{type:"button",className:"tf-control-icon",onClick:()=>{za()},disabled:we||Je||!g,"aria-label":"New chat",title:"New chat",children:e.jsx(xt,{size:14})})]})]}),e.jsxs("div",{className:`${a.taskforceAgentConversationList} ${a.taskforceAgentDrawerConversationList} tf-scrollbar`,children:[Je?e.jsx("div",{className:a.taskforceAgentConversationEmpty,children:"Loading saved conversation..."}):ss.length>0?ss.map((s,l)=>e.jsxs("div",{"data-conversation-role":s.role,style:s.role==="assistant"&&ms?{"--conversation-accent":ms}:void 0,className:`${a.taskforceAgentConversationMessage} ${s.role==="user"?a.taskforceAgentConversationMessageUser:a.taskforceAgentConversationMessageAssistant}`.trim(),children:[e.jsx("span",{children:el(s,Ra)}),e.jsx(Zs,{variant:"conversation",className:a.taskforceAgentConversationBody,taskReferences:S,children:s.content}),s.role==="assistant"&&s.toolActivity?.length?Tn(s.toolActivity.map((c,h)=>({...c,id:`${l}-${h}-${c.name}`})),"Taskforce actions"):null]},`${s.role}-${l}`)):we?null:e.jsx("div",{className:a.taskforceAgentConversationEmpty,children:g?"No conversation yet.":"Select an agent to start chatting."}),we&&!Je?e.jsxs("div",{"data-conversation-role":"assistant",style:ms?{"--conversation-accent":ms}:void 0,className:`${a.taskforceAgentConversationMessage} ${a.taskforceAgentConversationMessageAssistant}`.trim(),children:[e.jsx("span",{children:ue.trim()||at}),e.jsx("p",{children:"Waiting for model response..."})]}):null,e.jsx("div",{ref:Q,"aria-hidden":"true"})]}),e.jsxs("div",{className:a.taskforceAgentDrawerPrompt,children:[e.jsxs("label",{className:a.field,children:[e.jsx("span",{className:a.label,children:"Message"}),e.jsx("textarea",{className:a.input,value:je,onChange:s=>{Zt(s.target.value),Rs&&Ot("")},onKeyDown:Ba,disabled:we||Je||!g,placeholder:we?"Waiting for response...":Bo,maxLength:4e3})]}),e.jsxs("button",{type:"button",className:a.secondaryHeaderBtn,onClick:()=>{Rn()},disabled:we||Je||!je.trim()||!ce||!g,children:[we?e.jsx(Oe,{size:14,className:a.spinner}):e.jsx(kr,{size:14}),"Send"]}),Rs?e.jsx("div",{className:a.taskforceAgentDrawerPromptStatus,role:"status",children:Rs}):null]}),e.jsxs("div",{className:a.taskforceAgentDrawerMetrics,"aria-label":"Response metrics",children:[e.jsxs("span",{children:[e.jsx("strong",{children:"Usage"}),Xn(un)]}),e.jsxs("span",{children:[e.jsx("strong",{children:"Latency"}),Js(un)]})]})]}):e.jsxs("div",{className:`${a.standalonePage} ${a.standaloneContent} ${a.taskforceAgentsModuleRoot} ${n?a.taskforceAgentsModuleTrayOpen:""}`.trim(),children:[Ka,e.jsxs("div",{className:`${a.taskforceAgentsModuleMain} tf-scrollbar`,children:[e.jsxs("div",{className:a.settingsContent,style:{maxWidth:1180,margin:"0 auto",width:"100%"},children:[qa,e.jsx("div",{className:`${a.settingGroup} ${a.taskforceAgentBuilderPanel}`,hidden:H!=="agents",children:e.jsxs("div",{className:a.taskforceAgentTestGrid,role:"tabpanel",id:"taskforce-agent-builder-agents","aria-labelledby":"taskforce-agent-builder-tab-agents",children:[e.jsxs("div",{className:a.settingGroup,children:[e.jsxs("div",{className:a.taskforceAgentAvatarPanel,children:[e.jsxs("div",{className:a.taskforceAgentAvatarEditControl,children:[e.jsx(Ya,{label:I?`Edit ${I.name} photo`:"Photo editing is unavailable until agent creation",imageUrl:lt,fallback:e.jsx(Tt,{size:28}),accentColor:R||I?.color,size:88,editBadgeSize:28,editIconSize:14,disabled:!g,loading:!!(g&&is.has(g)),loadingLabel:`Generating ${I?.name||"agent"} photo`,error:!!ds?.error,errorLabel:ds?.error||"Agent photo generation failed",onClick:()=>{Ge(null),it(null),yn(!0)}}),ct?e.jsx(Oe,{size:16,className:`${a.spinner} ${a.taskforceAgentAvatarSyncIcon}`}):null]}),e.jsxs("div",{className:a.taskforceAgentAvatarCopy,children:[e.jsx("strong",{children:ue.trim()||I?.name||at}),e.jsx("span",{className:a.taskforceAgentAvatarRole,children:"Taskforce Agent"}),ct?e.jsx("small",{children:"Syncing avatar..."}):null]}),e.jsxs("div",{className:a.taskforceAgentToolbar,children:[Gt?e.jsxs("span",{className:Gt.type==="error"?"tf-chip-danger":"tf-chip-success",role:Gt.type==="error"?"alert":"status","aria-label":"Agent configuration status",children:[Gt.type==="error"?e.jsx(gt,{size:12}):e.jsx(It,{size:12}),Gt.message]}):null,e.jsxs("button",{type:"button",className:a.secondaryHeaderBtn,onClick:()=>{Ia()},disabled:Ps||!ue.trim()||!N.purpose.trim()||!ce,children:[Ps?e.jsx(Oe,{size:14,className:a.spinner}):e.jsx(tn,{size:14}),"Save"]})]})]}),I?.configurationState&&I.configurationState!=="valid"?e.jsxs("div",{className:a.taskforceAgentTestError,role:"alert",children:[e.jsx(gt,{size:14}),e.jsxs("span",{children:["This Agent configuration is ",I.configurationState.replace(/-/g," "),".",I.configurationIssues?.[0]?.message?` ${I.configurationIssues[0].message}`:" Repair the highlighted configuration before testing it."]})]}):null,e.jsxs("div",{className:a.topRow,children:[e.jsxs("label",{className:a.field,children:[e.jsx("span",{className:a.label,children:"Agent Name"}),e.jsx("input",{className:a.input,value:ue,onChange:s=>{b.current=!0,Le(s.target.value)},placeholder:at,required:!0,maxLength:80})]}),e.jsxs("label",{className:a.field,children:[e.jsx("span",{className:a.label,children:"Platform"}),e.jsx("div",{className:a.taskforceAgentReadonlyField,children:ea()})]}),e.jsxs("label",{className:a.field,children:[e.jsx("span",{className:a.label,children:"Provider"}),e.jsx("select",{className:a.select,value:de,onChange:s=>Da(s.target.value),children:Aa.map(s=>e.jsx("option",{value:s.key,children:s.label},s.key))})]}),e.jsxs("label",{className:a.field,children:[e.jsx("span",{className:a.label,children:"Model"}),e.jsx("select",{className:a.select,value:ce,onChange:s=>Ma(s.target.value),disabled:wt.length===0,children:wt.length>0?wt.map(s=>e.jsx("option",{value:s.key,children:s.label},s.key)):e.jsxs("option",{value:"",children:["No configured ",qt(de)," models yet"]})})]}),e.jsxs("label",{className:a.field,children:[e.jsx("span",{className:a.label,children:"Default Tier"}),e.jsx("div",{className:a.taskforceAgentReadonlyField,children:Qe?Xs(Qe.defaultTier):"No configured tier"})]})]}),e.jsxs("div",{className:a.taskforceAgentSignatureColorField,children:[e.jsxs("div",{children:[e.jsx("span",{className:a.label,children:"Signature Color"}),e.jsx("small",{children:"Identifies this agent across Taskforce."})]}),e.jsxs("div",{className:a.aiProfileColorPicker,"aria-label":"Signature color options",children:[ar.map(s=>{const l=Qa[s];return e.jsx("button",{type:"button",className:a.aiProfileColorOption,style:{backgroundColor:l},"aria-label":`Use ${s}`,"aria-pressed":R.toLowerCase()===l.toLowerCase(),onClick:()=>{b.current=!0,U(l),he(!0),ke(!1),u.current=!0}},s)}),I?e.jsx("button",{type:"button",className:a.secondaryHeaderBtn,onClick:()=>{b.current=!0,U(mt(I.id)),he(!1),ke(!0),u.current=!0},children:"Reset"}):null]})]}),e.jsxs("div",{className:a.taskforceAgentBehaviorGrid,children:[e.jsxs("label",{className:`${a.field} ${a.taskforceAgentBehaviorWide}`,children:[e.jsx("span",{className:a.label,children:"Purpose"}),e.jsx("small",{className:a.taskforceAgentFieldHelper,children:"What should this agent help with?"}),e.jsx("textarea",{className:a.input,"aria-label":"Purpose",value:N.purpose,onChange:s=>{b.current=!0,Z(l=>({...l,purpose:s.target.value}))},maxLength:1e3,rows:3,required:!0})]}),e.jsx("div",{className:a.taskforceAgentBehaviorWide,children:e.jsx(vo,{workspaceId:t,roleRef:N.roleRef,skillRefs:N.skillRefs,onRoleRefChange:s=>{b.current=!0,Z(l=>({...l,roleRef:s}))},onSkillRefsChange:s=>{b.current=!0,Z(l=>({...l,skillRefs:s}))},onManageRoles:()=>L("roles"),onManageSkills:()=>L("skills")})}),e.jsx("div",{className:a.taskforceAgentBehaviorWide,children:e.jsx(cn,{selectedKeys:N.requestedCapabilities,hasCustomOverrides:!!(I?.definition?.toolPolicy.toolOverrides?.length&&!N.toolAccessChanged),onChange:s=>{b.current=!0,Z(l=>({...l,requestedCapabilities:s,toolAccessChanged:!0}))}})}),e.jsx("div",{className:a.taskforceAgentBehaviorWide,children:e.jsx(ci,{hasRole:!!N.roleRef,directSkillCount:N.skillRefs.length,toolKeys:N.requestedCapabilities})}),e.jsxs("label",{className:a.field,children:[e.jsx("span",{className:a.label,children:"Personality and Voice"}),e.jsx("small",{className:a.taskforceAgentFieldHelper,children:"How should this agent behave or portray itself?"}),e.jsxs("select",{className:a.select,"aria-label":"Personality and Voice",value:N.personalitySelection,onChange:s=>{b.current=!0,Z(l=>({...l,personalitySelection:s.target.value,personalityCustom:s.target.value===_e?l.personalityCustom:""}))},children:[e.jsx("option",{value:"",children:"No preset"}),yo.map(s=>e.jsx("option",{value:s.key,children:s.label},s.key)),e.jsx("option",{value:_e,children:"Custom"})]})]}),e.jsxs("label",{className:a.field,children:[e.jsx("span",{className:a.label,children:"Response Style"}),e.jsx("small",{className:a.taskforceAgentFieldHelper,children:"How should answers be written and structured?"}),e.jsxs("select",{className:a.select,"aria-label":"Response Style",value:N.responseStyleSelection,onChange:s=>{b.current=!0,Z(l=>({...l,responseStyleSelection:s.target.value,responseStyleCustom:s.target.value===_e?l.responseStyleCustom:""}))},children:[e.jsx("option",{value:"",children:"No preset"}),bo.map(s=>e.jsx("option",{value:s.key,children:s.label},s.key)),e.jsx("option",{value:_e,children:"Custom"})]})]}),N.personalitySelection===_e?e.jsxs("label",{className:a.field,children:[e.jsx("span",{className:a.label,children:"Custom Personality and Voice"}),e.jsx("textarea",{className:a.input,"aria-label":"Custom Personality and Voice",value:N.personalityCustom,onChange:s=>{b.current=!0,Z(l=>({...l,personalityCustom:s.target.value}))},maxLength:4e3,rows:3})]}):null,N.responseStyleSelection===_e?e.jsxs("label",{className:a.field,children:[e.jsx("span",{className:a.label,children:"Custom Response Style"}),e.jsx("textarea",{className:a.input,"aria-label":"Custom Response Style",value:N.responseStyleCustom,onChange:s=>{b.current=!0,Z(l=>({...l,responseStyleCustom:s.target.value}))},maxLength:4e3,rows:3})]}):null,e.jsxs("label",{className:`${a.field} ${a.taskforceAgentBehaviorWide}`,children:[e.jsx("span",{className:a.label,children:"Working Guidelines"}),e.jsx("small",{className:a.taskforceAgentFieldHelper,children:"How should this agent approach tasks, decisions, and constraints?"}),e.jsx("textarea",{className:a.input,"aria-label":"Working Guidelines",style:{minHeight:108,resize:"vertical"},value:xe,onChange:s=>p(s.target.value),maxLength:8e3})]})]}),e.jsxs("div",{className:a.taskforceAgentPresentationGroup,children:[e.jsxs("div",{children:[e.jsx("span",{className:a.label,children:"Avatar Generation Direction"}),e.jsx("small",{className:a.taskforceAgentFieldHelper,children:"Saved for manual avatar generation only. These details are excluded from normal Agent context."})]}),e.jsxs("label",{className:a.field,children:[e.jsx("span",{className:a.label,children:"Avatar Visual Description"}),e.jsx("textarea",{className:a.input,"aria-label":"Avatar Visual Description",value:N.avatarVisualDescription,onChange:s=>{b.current=!0,Z(l=>({...l,avatarVisualDescription:s.target.value}))},maxLength:4e3,rows:3,placeholder:"Describe what this agent or character looks like."})]}),e.jsxs("label",{className:a.field,children:[e.jsx("span",{className:a.label,children:"Avatar Art Style"}),e.jsxs("select",{className:a.select,"aria-label":"Avatar Art Style",value:N.avatarArtStyleSelection,onChange:s=>{b.current=!0,Z(l=>({...l,avatarArtStyleSelection:s.target.value,avatarArtStyleCustom:s.target.value===_e?l.avatarArtStyleCustom:""}))},children:[e.jsx("option",{value:"",children:jo}),ko.map(s=>e.jsx("option",{value:s.key,children:s.label},s.key)),e.jsx("option",{value:_e,children:"Custom"})]})]}),N.avatarArtStyleSelection===_e?e.jsxs("label",{className:a.field,children:[e.jsx("span",{className:a.label,children:"Custom Avatar Art Style"}),e.jsx("textarea",{className:a.input,"aria-label":"Custom Avatar Art Style",value:N.avatarArtStyleCustom,onChange:s=>{b.current=!0,Z(l=>({...l,avatarArtStyleCustom:s.target.value}))},maxLength:4e3,rows:3,placeholder:"Describe medium, palette, lighting, period, or atmosphere."})]}):null]}),e.jsxs("details",{className:a.taskforceAgentToolActivity,children:[e.jsxs("summary",{children:[e.jsx("span",{children:"Technical model details"}),e.jsx("strong",{children:Qe?Vo(Qe.availability):"Unavailable"})]}),e.jsxs("div",{className:a.taskforceAgentMetaGrid,children:[e.jsxs("div",{children:[e.jsx("span",{children:"Model ID"}),e.jsx("code",{children:Qe?.runtimeModelId||"No configured model"})]}),e.jsxs("div",{children:[e.jsx("span",{children:"Max Output"}),e.jsx("strong",{children:Zo(Qe?.defaultMaxTokens)})]})]})]})]}),e.jsx("div",{className:a.taskforceAgentOutputStack,children:e.jsxs("section",{className:a.taskforceAgentOutputPanel,"aria-labelledby":"taskforce-agent-test-title",children:[e.jsx("div",{className:a.settingTitleRow,children:e.jsxs("div",{className:a.taskforceAgentTestTitle,children:[e.jsx("span",{className:a.taskforceAgentBuilderEmptyIcon,"aria-hidden":"true",children:e.jsx(Un,{size:18})}),e.jsxs("div",{children:[e.jsx("h4",{id:"taskforce-agent-test-title",className:a.settingSubTitle,children:"Test Agent"}),e.jsx("p",{children:"Run one isolated prompt against the current draft, including unsaved changes."})]})]})}),e.jsxs("div",{className:a.taskforceAgentTestNotice,children:[e.jsx(It,{size:14,"aria-hidden":"true"}),e.jsx("span",{children:"Test messages are not saved to conversations and cannot write to task-scoped tools."})]}),e.jsxs("label",{className:a.field,children:[e.jsx("span",{className:a.label,children:"Test Prompt"}),e.jsx("textarea",{className:a.input,value:ns,onChange:s=>fn(s.target.value),placeholder:"Ask the draft agent a representative question...",rows:5,disabled:et})]}),e.jsxs("div",{className:a.taskforceAgentTestActions,children:[e.jsxs("button",{type:"button",className:a.secondaryHeaderBtn,onClick:dt,disabled:et||!ns&&!Ue&&!$s,children:[e.jsx(on,{size:14}),"Reset"]}),g&&ge?e.jsxs("button",{type:"button",className:a.secondaryHeaderBtn,onClick:()=>ge(g),disabled:et,children:[e.jsx(jr,{size:14}),"Open in Conversation"]}):null,e.jsxs("button",{type:"button",className:a.primaryUpdateBtn,onClick:()=>{Ga()},disabled:et||!ns.trim()||!N.purpose.trim()||!ce,children:[et?e.jsx(Oe,{size:14,className:a.spinner}):e.jsx(Un,{size:14}),et?"Testing...":"Run Test"]})]}),Us?null:e.jsx("p",{className:a.taskforceAgentTestRestriction,children:B?"Sign in to Taskforce Cloud to run agent tests.":"Checking Taskforce Cloud sign-in..."}),$s?e.jsxs("div",{className:a.taskforceAgentTestError,role:"alert",children:[e.jsx(gt,{size:14}),e.jsx("span",{children:$s})]}):null,et?e.jsxs("div",{className:a.taskforceAgentTestPending,role:"status",children:[e.jsx(Oe,{size:15,className:a.spinner}),e.jsx("span",{children:"Running isolated test..."})]}):null,Ue?e.jsxs("div",{className:a.taskforceAgentTestResult,role:"status","aria-live":"polite",children:[e.jsxs("div",{className:a.taskforceAgentTestResultHeader,children:[e.jsxs("span",{children:[e.jsx(It,{size:14})," Test completed"]}),e.jsxs("span",{children:[Js(Ue)," · ",Xn(Ue)]})]}),e.jsx("div",{className:a.taskforceAgentTestResponse,children:e.jsx(Zs,{variant:"conversation",children:Ue.text})}),e.jsxs("details",{className:a.taskforceAgentToolActivity,children:[e.jsxs("summary",{children:[e.jsx("span",{children:"Response Details"}),e.jsx("strong",{children:xs(St?.modelKey||ce)})]}),e.jsxs("div",{className:a.taskforceAgentMetaGrid,children:[e.jsxs("div",{children:[e.jsx("span",{children:"Tested agent"}),e.jsx("strong",{children:St?.agentName||ue.trim()||at})]}),e.jsxs("div",{children:[e.jsx("span",{children:"Provider"}),e.jsx("strong",{children:qt(St?.providerKey||de)})]}),e.jsxs("div",{children:[e.jsx("span",{children:"Runtime model"}),e.jsx("code",{children:Ue.modelId||"Not reported"})]}),e.jsxs("div",{children:[e.jsx("span",{children:"Test prompt"}),e.jsx("strong",{children:St?.prompt||"Not reported"})]}),e.jsxs("div",{children:[e.jsx("span",{children:"Tested purpose"}),e.jsx("strong",{children:St?.definition.purpose||"Not reported"})]}),e.jsxs("div",{children:[e.jsx("span",{children:"Tested working guidelines"}),e.jsx("strong",{children:St?.definition.behavior.workingGuidelines||"None"})]}),e.jsxs("div",{children:[e.jsx("span",{children:"Stop reason"}),e.jsx("strong",{children:Ue.stopReason||"Not reported"})]}),e.jsxs("div",{children:[e.jsx("span",{children:"Input tokens"}),e.jsx("strong",{children:Ue.usage?.inputTokens??"Not reported"})]}),e.jsxs("div",{children:[e.jsx("span",{children:"Output tokens"}),e.jsx("strong",{children:Ue.usage?.outputTokens??"Not reported"})]}),e.jsxs("div",{children:[e.jsx("span",{children:"Total tokens"}),e.jsx("strong",{children:Ue.usage?.totalTokens??"Not reported"})]}),e.jsxs("div",{children:[e.jsx("span",{children:"Latency"}),e.jsx("strong",{children:Js(Ue)})]})]}),pn.length>0?Tn(pn,"Managed Tool Activity"):null]})]}):null]})})]})}),e.jsx("section",{className:a.taskforceAgentBuilderPanel,role:"tabpanel",id:"taskforce-agent-builder-roles","aria-labelledby":"taskforce-agent-builder-tab-roles",hidden:H!=="roles",children:H==="roles"?e.jsx(to,{workspaceId:t,libraryPortalTarget:be}):null}),e.jsx("section",{className:a.taskforceAgentBuilderPanel,role:"tabpanel",id:"taskforce-agent-builder-skills","aria-labelledby":"taskforce-agent-builder-tab-skills",hidden:H!=="skills",children:e.jsx(Go,{workspaceId:t,active:H==="skills",libraryPortalTarget:Te},t)}),e.jsx("section",{className:a.taskforceAgentBuilderPanel,role:"tabpanel",id:"taskforce-agent-builder-connections","aria-labelledby":"taskforce-agent-builder-tab-connections",hidden:H!=="connections",children:H==="connections"?e.jsx(Hn,{kind:"connections"}):null}),e.jsx("section",{className:a.taskforceAgentBuilderPanel,role:"tabpanel",id:"taskforce-agent-builder-resources","aria-labelledby":"taskforce-agent-builder-tab-resources",hidden:H!=="resources",children:H==="resources"?e.jsx(Hn,{kind:"resources"}):null})]}),e.jsx(Xa,{isOpen:!!as,onClose:()=>rs(null),title:"Discard unsaved changes?",size:"sm",theme:K,closeOnOverlayClick:!1,footer:e.jsxs(e.Fragment,{children:[e.jsx("button",{type:"button",className:"tf-button-secondary",onClick:()=>rs(null),"data-modal-initial-focus":!0,children:"Keep editing"}),e.jsx("button",{type:"button",className:"tf-button-destructive",onClick:Ta,children:"Discard changes"})]}),children:e.jsx("p",{children:"Your unsaved Agent changes will be lost."})}),e.jsx(Za,{isOpen:ka,theme:K,title:"Edit Agent Profile Photo",currentImageUrl:lt,editorImageUrl:wa,fallbackInitial:(I?.name||"Agent").charAt(0).toUpperCase(),accept:"image/png,image/jpeg,image/webp,image/gif",busy:bn,generating:!!(g&&is.has(g)),generateLabel:I?.avatarUrl?"Regenerate":"Generate",hasPendingImage:!1,canRemove:!!I?.avatarUrl,error:ja||ds?.error||null,notice:Sa||ds?.notice||null,onClose:()=>{bn||(yn(!1),Ge(null),it(null))},onApplyImage:$a,onGenerateImage:g&&!is.has(g)?Ea:void 0,onRemoveImage:La},g||"agent-avatar-draft")]})]})}export{fl as TaskforceAgentsModule};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
._toolAccess_2stgb_1,._skillSelector_2stgb_2,._effectiveSummary_2stgb_3{display:grid;gap:14px;min-width:0;padding:16px;border:1px solid var(--border-divider);border-radius:var(--radius-md);background:var(--surface-inset)}._sectionHeader_2stgb_13,._workspaceHeader_2stgb_14{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}._sectionHeader_2stgb_13>div,._workspaceHeader_2stgb_14>div{min-width:0}._sectionHeader_2stgb_13 p,._workspaceHeader_2stgb_14 p{margin-top:5px}._sectionHeader_2stgb_13>span,._titleLine_2stgb_32>span{flex:0 0 auto}._moduleGrid_2stgb_36{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}._moduleOption_2stgb_42,._unavailableCapability_2stgb_43{display:grid;grid-template-columns:auto auto minmax(0,1fr) auto;align-items:center;gap:9px;min-width:0;padding:10px;border:1px solid var(--border-default);border-radius:var(--radius-md);background:var(--surface-panel)}._moduleOption_2stgb_42{cursor:pointer;transition:background-color var(--transition-base),border-color var(--transition-base)}._moduleOption_2stgb_42:hover{border-color:var(--border-strong)}._moduleOptionSelected_2stgb_66{border-color:var(--brand-primary-border);background:var(--surface-accent-soft)}._moduleOption_2stgb_42 input{margin:0;accent-color:var(--brand-primary)}._moduleIcon_2stgb_76,._selectedSkillIcon_2stgb_77,._provenanceIcon_2stgb_78{width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;border:1px solid var(--border-default);border-radius:var(--radius-md);background:var(--surface-inset);color:var(--text-secondary)}._moduleCopy_2stgb_91,._moduleCopy_2stgb_91 strong,._moduleCopy_2stgb_91 small{display:block;min-width:0}._moduleCopy_2stgb_91 strong{color:var(--text-title);font-size:.8125rem}._moduleCopy_2stgb_91 small{margin-top:2px;color:var(--text-helper);font-size:.72rem;line-height:1.35}._futureGroups_2stgb_110{display:grid;gap:8px;padding-top:12px;border-top:1px solid var(--border-divider)}._unavailableCapability_2stgb_43{grid-template-columns:auto minmax(0,1fr) auto;opacity:.78}._unknownNotice_2stgb_122,._disabledExplanation_2stgb_123{display:flex;align-items:flex-start;gap:9px;padding:10px 12px;border:1px solid color-mix(in srgb,var(--status-warning) 28%,var(--border-default));border-radius:var(--radius-md);background:var(--status-warning-bg);color:var(--status-warning-text);font-size:.75rem;line-height:1.4}._unknownNotice_2stgb_122 svg,._disabledExplanation_2stgb_123 svg{flex:0 0 auto;margin-top:1px}._unknownNotice_2stgb_122>button{flex:0 0 auto;margin-left:auto}._catalogError_2stgb_147{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;border:1px solid var(--status-error);border-radius:var(--radius-md);background:var(--status-error-bg);color:var(--status-error-text);font-size:.75rem}._selectedSkills_2stgb_160{display:grid;gap:7px;margin:0;padding:0;list-style:none}._skillSearch_2stgb_168{position:relative;display:block}._skillSearch_2stgb_168>svg{position:absolute;z-index:1;top:50%;left:11px;color:var(--text-helper);pointer-events:none;transform:translateY(-50%)}._skillSearch_2stgb_168 input{width:100%;padding-left:34px}._skillResults_2stgb_188{display:grid;gap:7px;max-height:230px;overflow-y:auto}._skillResults_2stgb_188>button{appearance:none;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;padding:9px 10px;border:1px solid var(--border-default);border-radius:var(--radius-md);background:var(--surface-panel);color:inherit;text-align:left;cursor:pointer}._skillResults_2stgb_188>button:hover:not(:disabled){border-color:var(--border-strong);background:var(--surface-hover)}._skillResults_2stgb_188 strong,._skillResults_2stgb_188 small{display:block}._skillResults_2stgb_188 strong{color:var(--text-title);font-size:.8125rem}._skillResults_2stgb_188 small{margin-top:2px;overflow:hidden;color:var(--text-helper);font-size:.72rem;text-overflow:ellipsis;white-space:nowrap}._selectedSkills_2stgb_160 li{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:9px;padding:9px 10px;border:1px solid var(--border-default);border-radius:var(--radius-md);background:var(--surface-panel)}._selectedSkills_2stgb_160 li>span:nth-child(2),._selectedSkills_2stgb_160 strong,._selectedSkills_2stgb_160 small{display:block;min-width:0}._selectedSkills_2stgb_160 strong{color:var(--text-title);font-size:.8125rem}._selectedSkills_2stgb_160 small{margin-top:2px;overflow:hidden;color:var(--text-helper);font-size:.72rem;text-overflow:ellipsis;white-space:nowrap}._emptySelection_2stgb_266{margin:0;padding:12px;border:1px dashed var(--border-default);border-radius:var(--radius-md);color:var(--text-helper);font-size:.75rem}._provenanceGrid_2stgb_275{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}._provenanceGrid_2stgb_275>div{display:flex;align-items:center;gap:9px;min-width:0;padding:10px;border:1px solid var(--border-default);border-radius:var(--radius-md);background:var(--surface-panel)}._provenanceGrid_2stgb_275 small,._provenanceGrid_2stgb_275 strong{display:block}._provenanceGrid_2stgb_275 small{color:var(--text-helper);font-size:.68rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase}._provenanceGrid_2stgb_275 strong{margin-top:2px;color:var(--text-title);font-size:.78rem;line-height:1.35}._unavailableProvenance_2stgb_312{opacity:.72}._previewCaveat_2stgb_316{margin:0;color:var(--text-helper);font-size:.72rem;line-height:1.45}._librarySummary_2stgb_323{min-height:220px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:18px;color:var(--text-helper);text-align:center}._librarySummary_2stgb_323 strong{color:var(--text-secondary);font-size:.82rem}._librarySummary_2stgb_323>span:not([class]){max-width:26ch;font-size:.74rem;line-height:1.45}._workspacePanel_2stgb_346{display:grid;gap:22px;min-height:min(620px,72vh);padding:22px;border:1px solid var(--border-default);border-radius:var(--radius-lg);background:var(--surface-panel)}._futureAction_2stgb_356:disabled{border-color:var(--border-default);background:var(--surface-inset);color:var(--text-muted);box-shadow:none;cursor:not-allowed;opacity:1}._workspaceHeader_2stgb_14{display:grid;grid-template-columns:auto minmax(0,1fr) auto}._workspaceTitleIcon_2stgb_370,._previewCardIcon_2stgb_371{width:42px;height:42px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border-default);border-radius:var(--radius-md);background:var(--surface-inset);color:var(--text-secondary)}._titleLine_2stgb_32{display:flex;align-items:center;gap:9px}._relationshipFlow_2stgb_389{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));align-items:center;gap:18px;padding:12px;border:1px solid var(--border-divider);border-radius:var(--radius-md);background:var(--surface-inset)}._relationshipFlow_2stgb_389 span,._relationshipFlow_2stgb_389 strong{position:relative;min-width:0;color:var(--text-secondary);font-size:.75rem;text-align:center}._relationshipFlow_2stgb_389 strong{color:var(--brand-primary-strong)}._relationshipFlow_2stgb_389>*:not(:last-child):after{content:"→";position:absolute;right:-14px;color:var(--text-helper)}._previewCards_2stgb_420{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}._previewCard_2stgb_371{display:grid;align-content:start;gap:12px;min-width:0;padding:16px;border:1px solid var(--border-default);border-radius:var(--radius-md);background:var(--surface-inset);opacity:.78}._previewCardAvailable_2stgb_438{background:var(--surface-panel);opacity:1}._previewCard_2stgb_371 p{margin-top:5px}._previewCard_2stgb_371>span{width:fit-content}._disabledExplanation_2stgb_123{margin-top:auto}._disabledExplanation_2stgb_123 div,._disabledExplanation_2stgb_123 strong,._disabledExplanation_2stgb_123 span{display:block}._disabledExplanation_2stgb_123 strong{color:var(--status-warning-text)}._disabledExplanation_2stgb_123 span{margin-top:2px;color:var(--text-secondary)}@container agent-behavior-manager (max-width: 620px){._moduleGrid_2stgb_36,._provenanceGrid_2stgb_275{grid-template-columns:1fr}}@media(max-width:760px){._sectionHeader_2stgb_13,._workspaceHeader_2stgb_14{grid-template-columns:1fr;flex-direction:column}._workspaceHeader_2stgb_14>button{width:100%}._relationshipFlow_2stgb_389{grid-template-columns:1fr;gap:7px}._relationshipFlow_2stgb_389>*:not(:last-child):after{content:"↓";position:static;display:block;margin-top:5px}._previewCards_2stgb_420{grid-template-columns:1fr}._unavailableCapability_2stgb_43,._selectedSkills_2stgb_160 li{grid-template-columns:auto minmax(0,1fr)}._unknownNotice_2stgb_122{flex-wrap:wrap}._unknownNotice_2stgb_122>button{width:100%;margin-left:23px}._unavailableCapability_2stgb_43>span:last-child,._selectedSkills_2stgb_160 button{grid-column:2;justify-self:start}}._root_kwk43_1{display:grid;grid-template-columns:minmax(230px,280px) minmax(0,1fr);width:100%;min-height:0;height:100%;color:var(--text-body);background:var(--surface-page)}._rootExternalLibrary_kwk43_11{grid-template-columns:minmax(0,1fr)}._library_kwk43_15{display:flex;min-width:0;flex-direction:column;gap:12px;padding:16px 12px;border-right:1px solid var(--border-divider);background:var(--surface-panel);overflow-y:auto}._libraryExternal_kwk43_26{width:100%;height:100%;padding:12px 0 16px;border-right:0;background:transparent;overflow:hidden}._libraryExternal_kwk43_26>button{width:100%}._libraryHeader_kwk43_39{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}._libraryHeader_kwk43_39 p{margin-top:3px}._search_kwk43_50{display:flex;align-items:center;gap:7px;min-height:34px;padding:0 9px;border:1px solid var(--field-border);border-radius:var(--radius-md);color:var(--text-helper);background:var(--field-bg)}._search_kwk43_50:focus-within{border-color:var(--field-focus-border);box-shadow:0 0 0 3px var(--field-focus-ring)}._search_kwk43_50 input{min-width:0;width:100%;border:0;outline:0;color:var(--field-text);background:transparent;font:inherit;font-size:.8125rem}._retiredToggle_kwk43_78{display:inline-flex;align-items:center;gap:6px;color:var(--text-secondary);font-size:.75rem}._libraryList_kwk43_86{display:flex;min-height:0;flex:1;flex-direction:column;gap:7px;overflow-y:auto}._libraryState_kwk43_95{display:flex;min-height:96px;align-items:center;justify-content:center;gap:8px;padding:16px;color:var(--text-helper);text-align:center;font-size:.8125rem}._libraryError_kwk43_107{flex-direction:column;color:var(--status-error-text)}._libraryStateIcon_kwk43_112{display:inline-flex;color:var(--brand-primary)}._libraryCard_kwk43_117{display:grid;grid-template-columns:30px minmax(0,1fr) auto;align-items:center;gap:8px;width:100%;min-width:0;padding:10px;border:1px solid var(--agent-card-border);border-radius:var(--radius-md);color:var(--text-body);text-align:left;background:var(--agent-card-bg);box-shadow:var(--agent-card-shadow);cursor:pointer}._libraryCard_kwk43_117:hover{border-color:var(--agent-card-hover-border);background:var(--agent-card-hover-bg)}._libraryCardSelected_kwk43_139{border-color:var(--agent-card-selected-border);background:var(--agent-card-selected-bg);box-shadow:var(--agent-card-selected-shadow)}._libraryCardIcon_kwk43_145{display:inline-flex;width:30px;height:30px;align-items:center;justify-content:center;border-radius:var(--radius-md);color:var(--brand-primary);background:var(--brand-primary-soft)}._libraryCardBody_kwk43_156{display:flex;min-width:0;flex-direction:column;gap:3px}._libraryCardBody_kwk43_156 strong,._libraryCardBody_kwk43_156 span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._libraryCardBody_kwk43_156 strong{color:var(--text-title);font-size:.8125rem}._libraryCardBody_kwk43_156 span{color:var(--text-helper);font-size:.72rem}._editor_kwk43_180{min-width:0;overflow-y:auto;container-name:agent-behavior-manager;container-type:inline-size}._editorHeader_kwk43_187{position:sticky;top:0;z-index:3;display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:18px clamp(18px,3vw,32px);border-bottom:1px solid var(--border-divider);background:color-mix(in srgb,var(--surface-page) 94%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}._editorTitle_kwk43_201{display:flex;min-width:0;align-items:flex-start;gap:10px;color:var(--brand-primary)}._editorTitle_kwk43_201>div{min-width:0}._editorTitleLine_kwk43_213{display:flex;align-items:center;flex-wrap:wrap;gap:8px}._editorTitleLine_kwk43_213 h2{color:var(--text-title)}._editorTitle_kwk43_201 p{margin-top:5px}._headerActions_kwk43_228{display:flex;flex:0 0 auto;align-items:center;gap:8px}._feedbackError_kwk43_235,._feedbackSuccess_kwk43_236,._confirmation_kwk43_237{margin:16px clamp(18px,3vw,32px) 0;padding:10px 12px;border-radius:var(--radius-md);font-size:.8125rem}._feedbackError_kwk43_235,._feedbackSuccess_kwk43_236{display:flex;align-items:center;gap:7px}._feedbackError_kwk43_235{border:1px solid color-mix(in srgb,var(--status-error) 35%,transparent);color:var(--status-error-text);background:var(--status-error-bg)}._feedbackSuccess_kwk43_236{border:1px solid color-mix(in srgb,var(--status-success) 35%,transparent);color:var(--status-success-text);background:var(--status-success-bg)}._fieldError_kwk43_263{color:var(--status-error-text);font-size:.72rem;line-height:1.4}._confirmation_kwk43_237{display:flex;align-items:center;gap:12px;border:1px solid color-mix(in srgb,var(--status-warning) 40%,var(--border-default));background:var(--status-warning-bg)}._confirmation_kwk43_237>div{display:flex;flex:1;flex-direction:column;gap:3px}._confirmation_kwk43_237 span{color:var(--text-secondary)}._empty_kwk43_288{min-height:420px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:32px}._emptyIcon_kwk43_298{width:48px;height:48px;display:grid;place-items:center;border:1px solid var(--brand-primary-border);border-radius:var(--radius-full);color:var(--brand-primary);background:var(--brand-primary-soft)}._editorGrid_kwk43_309{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(280px,.78fr);gap:20px;width:min(100%,1040px);margin:0 auto;padding:8px clamp(18px,3vw,32px) 48px;align-items:start}._formColumn_kwk43_319{display:flex;min-width:0;flex-direction:column}._previewColumn_kwk43_325{position:sticky;top:92px;min-width:0;margin-top:20px;padding:16px;border:1px solid var(--border-divider);border-radius:var(--radius-md);background:var(--surface-inset)}._previewHeader_kwk43_336{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}._previewHeader_kwk43_336 h3{margin-top:4px}._previewNote_kwk43_347{margin:12px 0 0;color:var(--text-helper);font-size:.75rem;line-height:1.5}._preview_kwk43_325{max-height:460px;min-height:120px;margin:14px 0 0;padding:14px;overflow:auto;border:1px solid var(--code-block-border);border-radius:var(--radius-md);color:var(--code-block-text);background:var(--code-block-bg);font-size:.75rem;line-height:1.55}._previewEmpty_kwk43_368{display:flex;min-height:96px;align-items:center;justify-content:center;margin-top:14px;padding:16px;border:1px dashed var(--border-default);border-radius:var(--radius-md);color:var(--text-helper);text-align:center;font-size:.8125rem}._metrics_kwk43_382{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:14px}._metrics_kwk43_382>div{display:flex;flex-direction:column;gap:4px;padding:10px;border:1px solid var(--border-default);border-radius:var(--radius-md);background:var(--surface-page)}._metrics_kwk43_382 span,._lifecycleAction_kwk43_400 span{color:var(--text-helper);font-size:.72rem}._metrics_kwk43_382 strong{color:var(--text-title);font-size:.8125rem}._history_kwk43_410{margin-top:14px;color:var(--text-secondary);font-size:.75rem}._history_kwk43_410 summary{display:inline-flex;align-items:center;gap:5px;cursor:pointer;font-weight:600}._history_kwk43_410 ol{display:flex;flex-direction:column;gap:8px;margin:10px 0 0;padding:0;list-style:none}._history_kwk43_410 li{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:8px;align-items:center}._history_kwk43_410 li span,._history_kwk43_410 code{color:var(--text-helper)}._history_kwk43_410 code{font-size:.625rem}._lifecycleAction_kwk43_400{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:14px;padding-top:14px;border-top:1px solid var(--border-divider)}._lifecycleAction_kwk43_400>div{display:flex;flex-direction:column;gap:3px}._spinner_kwk43_465{animation:_behavior-manager-spin_kwk43_1 .9s linear infinite}._visuallyHidden_kwk43_469{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@keyframes _behavior-manager-spin_kwk43_1{to{transform:rotate(360deg)}}@container agent-behavior-manager (max-width: 680px){._editorGrid_kwk43_309{grid-template-columns:1fr}._previewColumn_kwk43_325{position:static;margin-top:0}}@container agent-behavior-manager (max-width: 620px){._editorHeader_kwk43_187,._confirmation_kwk43_237,._lifecycleAction_kwk43_400{align-items:stretch;flex-direction:column}._headerActions_kwk43_228{width:100%}._headerActions_kwk43_228>button{flex:1}}@container agent-behavior-manager (max-width: 480px){._metrics_kwk43_382{grid-template-columns:1fr}._history_kwk43_410 li{grid-template-columns:1fr auto}._history_kwk43_410 li span{grid-column:1 / -1;grid-row:2}}@media(max-width:760px){._root_kwk43_1{display:block;height:auto}._library_kwk43_15{max-height:280px;border-right:0;border-bottom:1px solid var(--border-divider)}._libraryExternal_kwk43_26{max-height:none;border-bottom:0}._editor_kwk43_180{overflow:visible}._editorHeader_kwk43_187{position:static}}._formSection_dyv9a_1{display:flex;flex-direction:column;gap:16px;padding:20px 0;border-bottom:1px solid var(--border-divider)}._sectionHeader_dyv9a_9 p{margin-top:5px}._fieldGrid_dyv9a_13{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}._formSection_dyv9a_1 textarea{resize:vertical}._formSection_dyv9a_1 [aria-invalid=true]{border-color:var(--status-error)}._configurationPreview_dyv9a_27{display:grid;gap:12px;padding-top:20px}._resourcesPreview_dyv9a_33{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:12px;padding:16px;border:1px solid var(--border-divider);border-radius:var(--radius-md);background:var(--surface-inset);opacity:.78}._resourcesPreview_dyv9a_33 p{margin-top:5px}._previewCode_dyv9a_49{font-family:var(--font-mono);white-space:pre-wrap}@container agent-behavior-manager (max-width: 620px){._fieldGrid_dyv9a_13,._resourcesPreview_dyv9a_33{grid-template-columns:1fr}._resourcesPreview_dyv9a_33>span,._resourcesPreview_dyv9a_33>button{justify-self:start}}._assignments_omv6h_1{display:grid;grid-column:1 / -1;gap:14px;min-width:0}._section_omv6h_8{min-width:0;border:1px solid var(--border-default);border-radius:var(--radius-md);background:var(--surface-panel);padding:12px}._sectionHeader_omv6h_16{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px}._sectionHeading_omv6h_24{display:flex;gap:9px;min-width:0}._sectionHeading_omv6h_24 svg{flex:0 0 auto;margin-top:2px;color:var(--text-helper)}._sectionHeading_omv6h_24 strong,._sectionHeading_omv6h_24 small{display:block}._sectionHeading_omv6h_24 strong{color:var(--text-title);font-size:14px;line-height:1.3}._sectionHeading_omv6h_24 small,._referenceCopy_omv6h_48 small,._empty_omv6h_49{color:var(--text-helper);font-size:12px;line-height:1.4}._sectionHeader_omv6h_16>button{flex:0 0 auto;align-self:center;white-space:nowrap}._roleControls_omv6h_61,._skillAdd_omv6h_62{display:grid;grid-template-columns:minmax(180px,1fr) minmax(120px,160px) minmax(110px,140px);gap:10px}._roleControls_omv6h_61>*,._skillAdd_omv6h_62>*{min-width:0}._skillAdd_omv6h_62{grid-template-columns:minmax(180px,1fr) auto;align-items:end;margin-bottom:10px}._skillAdd_omv6h_62>button{justify-self:end}._referenceList_omv6h_83{display:grid;gap:8px;margin:0;padding:0;list-style:none}._referenceRow_omv6h_91{display:grid;grid-template-columns:minmax(160px,1fr) minmax(105px,140px) minmax(95px,125px) auto;align-items:center;gap:8px;border:1px solid var(--border-default);border-radius:var(--radius-md);padding:9px 10px;background:var(--surface-inset)}._referenceCopy_omv6h_48{min-width:0}._referenceCopy_omv6h_48 strong,._referenceCopy_omv6h_48 small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._rowActions_omv6h_114{display:flex;gap:4px}._issue_omv6h_119{display:flex;align-items:flex-start;gap:7px;margin-top:10px;color:var(--color-warning);font-size:12px}._issue_omv6h_119 svg{flex:0 0 auto;margin-top:1px}._loadError_omv6h_133{color:var(--status-error-text);font-size:12px}@media(max-width:860px){._roleControls_omv6h_61,._referenceRow_omv6h_91{grid-template-columns:1fr}._rowActions_omv6h_114{justify-content:flex-end}}@media(max-width:560px){._skillAdd_omv6h_62{grid-template-columns:1fr}._sectionHeader_omv6h_16{flex-direction:column;align-items:stretch}._sectionHeader_omv6h_16>button{width:100%}}._section_1e1mf_1{display:flex;flex-direction:column;gap:16px;padding:20px 0;border-bottom:1px solid var(--border-divider)}._sectionHeading_1e1mf_9{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}._sectionHeading_1e1mf_9 p{margin-top:5px}._twoColumn_1e1mf_20{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}._instructions_1e1mf_26{min-height:180px;resize:vertical;font-family:var(--font-mono)}._section_1e1mf_1 [aria-invalid=true]{border-color:var(--status-error)}._orderedList_1e1mf_36{display:flex;flex-direction:column;gap:6px}._orderedRow_1e1mf_42{display:grid;grid-template-columns:24px minmax(0,1fr) auto;align-items:center;gap:7px}._orderedInput_1e1mf_49{display:flex;min-width:0;flex-direction:column;gap:4px}._orderNumber_1e1mf_56{color:var(--text-helper);text-align:center;font-size:.72rem;font-family:var(--font-mono)}._orderActions_1e1mf_63{display:flex;align-items:center;gap:2px}._listEmpty_1e1mf_69{padding:10px;border:1px dashed var(--border-default);border-radius:var(--radius-md);color:var(--text-helper);font-size:.75rem}@container agent-behavior-manager (max-width: 620px){._sectionHeading_1e1mf_9{align-items:stretch;flex-direction:column}._twoColumn_1e1mf_20{grid-template-columns:1fr}._orderedRow_1e1mf_42{grid-template-columns:20px minmax(0,1fr)}._orderActions_1e1mf_63{grid-column:2;justify-content:flex-end}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as n,j as e}from"./vendor-react-CKJs5o3c.js";import{a1 as ze,a2 as Me,a3 as Oe,a4 as He,a5 as Le,a6 as Fe,M as Be,t as $,a7 as Ue,a8 as Ge,a9 as Je,T as Ye,aa as _e,ab as Ze}from"./index-Cx7vZJHL.js";import{h as J,af as le,Z as Qe,P as pe,q as je,b1 as Xe,b2 as et,x as tt,b3 as st,b4 as nt,y as rt,a as at,i as lt,g as it,f as ot,T as ct}from"./vendor-icons-B8ZNsH1g.js";import"./vendor-markdown-_lhNCyq-.js";import"./vendor-dnd-CJ-AjP-Y.js";import"./vendor-router-AqJMU8Lz.js";const dt="_root_1bn9e_1",ut="_main_1bn9e_13",ft="_trayOpen_1bn9e_21",mt="_libraryHeader_1bn9e_25",pt="_libraryTitle_1bn9e_34",bt="_libraryContent_1bn9e_41",ht="_libraryList_1bn9e_48",wt="_libraryItem_1bn9e_54",xt="_libraryItemSelected_1bn9e_75",yt="_libraryItemCopy_1bn9e_80",gt="_libraryItemName_1bn9e_84",_t="_libraryItemMeta_1bn9e_94",jt="_libraryBadges_1bn9e_101",Nt="_statusRow_1bn9e_102",vt="_content_1bn9e_109",kt="_visuallyHidden_1bn9e_115",St="_pageHeader_1bn9e_127",Ct="_pageHeading_1bn9e_136",Dt="_detailHeader_1bn9e_144",Et="_metadataEditor_1bn9e_148",Wt="_titleRow_1bn9e_154",Tt="_editor_1bn9e_169",It="_stickyToolbar_1bn9e_173",Kt="_toolbarGroup_1bn9e_188",Rt="_versionSelect_1bn9e_194",$t="_description_1bn9e_211",qt="_metrics_1bn9e_217",Vt="_metric_1bn9e_217",Pt="_section_1bn9e_249",At="_sectionHeader_1bn9e_253",zt="_stepToolbar_1bn9e_254",Mt="_stepActions_1bn9e_255",Ot="_stepList_1bn9e_266",Ht="_stepEditor_1bn9e_273",Lt="_stepToolbarExpanded_1bn9e_285",Ft="_stepExpandButton_1bn9e_289",Bt="_stepSummary_1bn9e_311",Ut="_stepFields_1bn9e_328",Gt="_fullField_1bn9e_335",Jt="_stepToggles_1bn9e_337",Yt="_requiredToggle_1bn9e_345",Zt="_stepsEmpty_1bn9e_356",Qt="_stepNumber_1bn9e_376",Xt="_emptyState_1bn9e_382",es="_loadingState_1bn9e_383",ts="_emptyStateInner_1bn9e_391",ss="_errorBanner_1bn9e_399",ns="_errorMessage_1bn9e_407",s={root:dt,main:ut,trayOpen:ft,libraryHeader:mt,libraryTitle:pt,libraryContent:bt,libraryList:ht,libraryItem:wt,libraryItemSelected:xt,libraryItemCopy:yt,libraryItemName:gt,libraryItemMeta:_t,libraryBadges:jt,statusRow:Nt,content:vt,visuallyHidden:kt,pageHeader:St,pageHeading:Ct,detailHeader:Dt,metadataEditor:Et,titleRow:Wt,editor:Tt,stickyToolbar:It,toolbarGroup:Kt,versionSelect:Rt,description:$t,metrics:qt,metric:Vt,section:Pt,sectionHeader:At,stepToolbar:zt,stepActions:Mt,stepList:Ot,stepEditor:Ht,stepToolbarExpanded:Lt,stepExpandButton:Ft,stepSummary:Bt,stepFields:Ut,fullField:Gt,stepToggles:Jt,requiredToggle:Yt,stepsEmpty:Zt,stepNumber:Qt,emptyState:Xt,loadingState:es,emptyStateInner:ts,errorBanner:ss,errorMessage:ns};function rs(c){const[_,k]=n.useState([]),[u,w]=n.useState(""),[E,g]=n.useState(null),[q,i]=n.useState(!0),[O,H]=n.useState(!1),[Y,L]=n.useState(!1),[Z,F]=n.useState(!1),[B,Q]=n.useState(!1),[ie,X]=n.useState(!1),[oe,ce]=n.useState(0),[de,x]=n.useState(null),m=n.useRef(0),p=n.useRef(c);p.current=c;const y=n.useCallback(async()=>{const r=++m.current;i(!0),x(null);try{const o=await ze();if(r!==m.current)return;k(o),w(f=>f&&o.some(({template:C})=>C.id===f)?f:o[0]?.template.id||"")}catch(o){if(r!==m.current)return;x(String(o?.message||o||"Unable to load workflows."))}finally{r===m.current&&i(!1)}},[c]);n.useEffect(()=>{k([]),w(""),g(null),y()},[y,c]),n.useEffect(()=>{let r=!1;if(!u){g(null),H(!1);return}return H(!0),x(null),Me(u).then(o=>{r||g(o)}).catch(o=>{r||(g(null),x(String(o?.message||o||"Unable to load workflow.")))}).finally(()=>{r||H(!1)}),()=>{r=!0}},[oe,u]);const S=n.useCallback(()=>{if(u&&!E){ce(r=>r+1);return}y()},[y,E,u]),j=n.useCallback(async r=>{const o=c;L(!0),x(null);try{const f=await Oe(r);return p.current!==o||(g(f),w(f.template.id),await y(),p.current===o&&w(f.template.id)),!0}catch(f){return p.current!==o||x(String(f?.message||f||"Unable to create workflow.")),!1}finally{L(!1)}},[y,c]),V=n.useCallback(async r=>{if(!u)return!1;const o=c,f=u;F(!0),x(null);try{const C=await He(f,{name:r.name,description:r.description,steps:r.steps});return p.current!==o||(g(C),await y(),p.current===o&&w(f)),!0}catch(C){return p.current!==o||x(String(C?.message||C||"Unable to save workflow draft.")),!1}finally{F(!1)}},[y,u,c]),I=n.useCallback(async()=>{if(!u)return!1;const r=c,o=u;Q(!0),x(null);try{const f=await Le(o);return p.current!==r||(g(f),await y(),p.current===r&&w(o)),!0}catch(f){return p.current!==r||x(String(f?.message||f||"Unable to publish workflow.")),!1}finally{Q(!1)}},[y,u,c]),P=n.useCallback(async()=>{if(!u)return!1;const r=c,o=u;X(!0),x(null);try{const f=await Fe(o);return p.current!==r||(g(f),await y(),p.current===r&&w(o)),!0}catch(f){return p.current!==r||x(String(f?.message||f||"Unable to create workflow draft.")),!1}finally{X(!1)}},[y,u,c]);return{workflows:_,selectedWorkflowId:u,selectedWorkflow:E,loadingLibrary:q,loadingDetails:O,creatingWorkflow:Y,savingWorkflow:Z,publishingWorkflow:B,creatingDraft:ie,error:de,setSelectedWorkflowId:w,refreshLibrary:y,retry:S,createWorkflow:j,saveDraft:V,publishDraft:I,createNextDraft:P,clearError:()=>x(null)}}const as="_title_lvjgs_1",ls="_message_lvjgs_7",is="_actions_lvjgs_13",be={title:as,message:ls,actions:is};function os({isOpen:c,workflowName:_,versionNumber:k,busy:u,onCancel:w,onPublish:E,theme:g}){return e.jsx(Be,{isOpen:c,onClose:w,title:e.jsxs("span",{className:be.title,children:[e.jsx(le,{size:18})," Publish Workflow"]}),size:"sm",closeOnOverlayClick:!1,closeDisabled:u,theme:g,footer:e.jsxs("div",{className:be.actions,children:[e.jsx("button",{type:"button",className:"tf-button-secondary",onClick:w,disabled:u,"data-modal-initial-focus":!0,children:"Cancel"}),e.jsxs("button",{type:"button",className:"tf-button-primary",onClick:E,disabled:u,children:[u?e.jsx(J,{size:15,className:$.spinner}):e.jsx(le,{size:15}),"Publish Version ",k]})]}),children:e.jsxs("p",{className:be.message,children:["Publish ",e.jsx("strong",{children:_})," as Version ",k,"? Published versions are immutable. Future changes require a new draft."]})})}const re="draft";function cs(c){return c.draftVersionId&&c.latestPublishedVersion?.versionNumber?`Version ${c.latestPublishedVersion.versionNumber} published`:c.draftVersionId?"Unpublished":c.latestPublishedVersion?.versionNumber?`Version ${c.latestPublishedVersion.versionNumber}`:"No version"}function ds(c){if(!c)return"Not published";const _=new Date(c);return Number.isNaN(_.getTime())?"Not published":_.toLocaleDateString()}function ae(c,_,k){return JSON.stringify({name:c,description:_,steps:k.map(({clientKey:u,...w})=>w)})}function ws({workspaceId:c,libraryTrayOpen:_=!0,onCloseLibraryTray:k,assigneeOptions:u=[],theme:w,onUnsavedChangesChange:E}){const{workflows:g,selectedWorkflowId:q,selectedWorkflow:i,loadingLibrary:O,loadingDetails:H,creatingWorkflow:Y,savingWorkflow:L,publishingWorkflow:Z,creatingDraft:F,error:B,setSelectedWorkflowId:Q,retry:ie,createWorkflow:X,saveDraft:oe,publishDraft:ce,createNextDraft:de,clearError:x}=rs(c),[m,p]=n.useState(!1),[y,S]=n.useState(!1),[j,V]=n.useState(""),[I,P]=n.useState(""),[r,o]=n.useState([]),[f,C]=n.useState(""),[A,ee]=n.useState(!1),[te,U]=n.useState(""),[ue,W]=n.useState(new Set),[he,fe]=n.useState(null),[Ne,z]=n.useState(!1),me=n.useRef(null),se=n.useRef(new Map),K=n.useRef(null),D=n.useMemo(()=>i?te===re&&i.draft?i.draft:i.publishedVersions.find(({version:a})=>a.id===te)||i.draft||i.publishedVersions[0]||null:null,[te,i]),we=D?.version.status==="draft"?re:D?.version.id||"",ve=n.useMemo(()=>ae(j,I,r),[I,j,r]),N=m||D?.version.status==="draft",T=N&&ve!==f,b=Y||L||Z||F,ke=(i?.publishedVersions[0]?.version.versionNumber||0)+1,xe=n.useMemo(()=>u.filter(({kind:t,archivedAt:a})=>t!=="unassigned"&&!a),[u]),Se=n.useMemo(()=>Ue(xe),[xe]);n.useEffect(()=>{p(!1),S(!1),U(""),W(new Set),z(!1),K.current=null},[c]),n.useEffect(()=>{if(!i||m||!D)return;const t=D.version.name||i.template.name,a=D.version.description??i.template.description??"",d=D.steps.map(h=>({...h,clientKey:h.id}));V(t),P(a),o(d),C(ae(t,a,d));const l=K.current;S(!1),l?(W(new Set(d.filter((h,v)=>l.has(v)).map(({clientKey:h})=>h))),K.current=null):W(new Set),ee(!1)},[m,D,i]),n.useEffect(()=>{if(!T)return;const t=a=>{a.preventDefault(),a.returnValue=""};return window.addEventListener("beforeunload",t),()=>window.removeEventListener("beforeunload",t)},[T]),n.useEffect(()=>(E?.(T),()=>E?.(!1)),[T,E]);const ne=t=>{if(!T){t();return}fe(()=>t)},Ce=()=>{const t=he;fe(null),t?.()},ye=()=>{ne(()=>{x();const t=[];p(!0),S(!0),V(""),P(""),o(t),C(ae("","",t)),W(new Set),ee(!1),window.setTimeout(()=>me.current?.focus(),0)})},De=()=>{ne(()=>{if(x(),p(!1),S(!1),i){const t=i.draft?.version.name||i.template.name,a=i.draft?.version.description??i.publishedVersions[0]?.version.description??i.template.description??"",d=(i.draft?.steps||i.publishedVersions[0]?.steps||[]).map(l=>({...l,clientKey:l.id}));V(t),P(a),o(d),C(ae(t,a,d))}})},Ee=()=>{const t=`new-step-${Date.now()}-${r.length}`;o(a=>[...a,{id:t,clientKey:t,workflowVersionId:i?.draft?.version.id||"",position:a.length,name:"",instructions:"",ownerType:null,ownerId:null,expectedArtifact:null,requiresCommentEvidence:!1,isRequired:!0}]),W(a=>new Set(a).add(t)),window.setTimeout(()=>se.current.get(t)?.focus(),0)},M=(t,a)=>{o(d=>d.map(l=>l.clientKey===t?{...l,...a}:l))},ge=(t,a)=>{const d=t+a;d<0||d>=r.length||o(l=>{const h=[...l];return[h[t],h[d]]=[h[d],h[t]],h.map((v,R)=>({...v,position:R}))})},We=()=>r.map(t=>{const{clientKey:a,id:d,workflowVersionId:l,position:h,...v}=t;return{...v,name:t.name.trim(),instructions:t.instructions,ownerType:t.ownerType??null,ownerId:t.ownerId??null,expectedArtifact:t.expectedArtifact??null,requiresCommentEvidence:t.requiresCommentEvidence===!0,isRequired:t.isRequired}}),Te=async()=>{if(ee(!0),!j.trim()){S(!0),window.setTimeout(()=>me.current?.focus(),0);return}const t=r.find(l=>!l.name.trim());if(t){W(l=>new Set(l).add(t.clientKey)),window.setTimeout(()=>se.current.get(t.clientKey)?.focus(),0);return}const a={name:j.trim(),description:I.trim(),steps:We()};K.current=new Set(r.map((l,h)=>ue.has(l.clientKey)?h:-1).filter(l=>l>=0)),(m?await X(a):await oe(a))?(p(!1),ee(!1)):K.current=null},Ie=t=>{W(a=>{const d=new Set(a);return d.has(t)?d.delete(t):d.add(t),d})},Ke=t=>{t!==we&&ne(()=>{S(!1),U(t)})},Re=async()=>{K.current=new Set(r.map((a,d)=>ue.has(a.clientKey)?d:-1).filter(a=>a>=0)),await ce()||(K.current=null),z(!1)},$e=async()=>{const t=te;U(re),await de()||U(t)},qe=t=>{t===q&&!m||ne(()=>{p(!1),S(!1),U(""),z(!1),Q(t)})},Ve=e.jsxs("aside",{className:`${$.docTrayPanel} ${_?$.docTrayPanelOpen:""}`.trim(),"aria-hidden":!_,children:[e.jsxs("div",{className:s.libraryHeader,children:[e.jsxs("span",{className:`${s.libraryTitle} tf-label-micro`,children:[e.jsx(le,{size:14})," Workflow Library"]}),O?e.jsx(J,{size:14,className:$.spinner}):null,k?e.jsx("button",{type:"button",className:"tf-control-icon",onClick:k,title:"Collapse workflow library","aria-label":"Collapse workflow library",children:e.jsx(Qe,{size:16})}):null]}),e.jsx("div",{className:`${s.libraryContent} tf-scrollbar tf-tray-scroll-viewport`,children:g.length>0?e.jsx("div",{className:s.libraryList,children:g.map(t=>e.jsxs("button",{type:"button",className:`${s.libraryItem} ${t.template.id===q&&!m?s.libraryItemSelected:""}`.trim(),disabled:b,onClick:()=>qe(t.template.id),"aria-pressed":t.template.id===q&&!m,children:[e.jsxs("span",{className:s.libraryItemCopy,children:[e.jsx("span",{className:s.libraryItemName,children:t.template.name}),e.jsx("span",{className:s.libraryItemMeta,children:cs(t)})]}),e.jsxs("span",{className:s.libraryBadges,children:[t.draftVersionId?e.jsx("span",{className:"tf-chip-warning",children:"Draft"}):null,t.latestPublishedVersion?e.jsx("span",{className:"tf-chip-success",children:"Published"}):null]})]},t.template.id))}):O?null:e.jsx("p",{className:"tf-text-helper",children:"No workflows configured yet."})})]}),Pe=m||!!i;return e.jsxs("div",{className:`${s.root} ${_?s.trayOpen:""}`.trim(),children:[Ve,e.jsx("main",{className:`${s.main} tf-scrollbar`,children:e.jsxs("div",{className:s.content,children:[e.jsxs("header",{className:s.pageHeader,children:[e.jsxs("div",{className:s.pageHeading,children:[e.jsx("h2",{className:"tf-heading-section",children:"Workflow Manager"}),e.jsx("p",{className:"tf-text-helper",children:"Design reusable workflows for Taskforce agents."})]}),e.jsxs("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:ye,disabled:b,children:[e.jsx(pe,{size:15})," New Workflow"]})]}),B?e.jsxs("div",{className:`${s.errorBanner} tf-surface-inset tf-text-error`,role:"alert",children:[e.jsxs("span",{className:s.errorMessage,children:[e.jsx(je,{size:14})," ",B]}),e.jsx("button",{type:"button",className:"tf-button-ghost tf-button-compact",onClick:ie,children:"Retry"})]}):null,H||O&&!i&&!m?e.jsx("div",{className:s.loadingState,"aria-live":"polite",children:e.jsx(J,{size:20,className:$.spinner})}):B&&q&&!i&&!m?e.jsx("div",{className:s.emptyState,children:e.jsxs("div",{className:s.emptyStateInner,children:[e.jsx(je,{size:24}),e.jsx("h3",{className:"tf-heading-card",children:"Workflow details unavailable"}),e.jsx("p",{className:"tf-text-helper",children:"Retry the request to load this workflow."})]})}):Pe?e.jsxs("div",{className:s.editor,children:[e.jsxs("div",{className:s.stickyToolbar,role:"toolbar","aria-label":N?"Workflow draft actions":"Workflow version actions",children:[N?e.jsxs("div",{className:s.toolbarGroup,children:[e.jsxs("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:Ee,disabled:b,children:[e.jsx(pe,{size:14})," Add Step"]}),e.jsx("button",{type:"button",className:"tf-control-icon",onClick:()=>W(new Set(r.map(({clientKey:t})=>t))),disabled:r.length===0,title:"Expand all steps","aria-label":"Expand all steps",children:e.jsx(Xe,{size:15})}),e.jsx("button",{type:"button",className:"tf-control-icon",onClick:()=>W(new Set),disabled:r.length===0,title:"Collapse all steps","aria-label":"Collapse all steps",children:e.jsx(et,{size:15})})]}):e.jsx("span",{}),e.jsxs("div",{className:s.toolbarGroup,children:[!m&&i?e.jsxs("select",{className:`${s.versionSelect} tf-field-shell`,"aria-label":"Workflow version",value:we,onChange:t=>Ke(t.target.value),disabled:b,children:[i.draft?e.jsx("option",{value:re,children:"Draft"}):null,i.publishedVersions.map(({version:t})=>e.jsxs("option",{value:t.id,children:["Version ",t.versionNumber]},t.id))]}):null,m?e.jsx("span",{className:"tf-chip-warning",children:"Draft"}):null,m?e.jsx("button",{type:"button",className:"tf-button-ghost tf-button-compact",onClick:De,disabled:b,children:"Cancel"}):null,N?e.jsxs(e.Fragment,{children:[e.jsx("span",{className:s.visuallyHidden,role:"status","aria-live":"polite",children:T?"Workflow has unsaved changes.":"Workflow draft is saved."}),e.jsxs("button",{type:"button",className:"tf-button-primary tf-button-compact",onClick:()=>{Te()},disabled:!T||b,children:[Y||L?e.jsx(J,{size:15,className:$.spinner}):e.jsx(tt,{size:15})," Save Draft"]}),m?null:e.jsxs("button",{type:"button",className:"tf-button-secondary tf-button-compact",onClick:()=>z(!0),disabled:T||r.length===0||b,title:T?"Save the draft before publishing.":r.length===0?"Add at least one step before publishing.":"Publish this workflow version",children:[e.jsx(st,{size:15})," Publish"]})]}):i?.draft?null:e.jsxs("button",{type:"button",className:"tf-button-primary tf-button-compact",onClick:()=>{$e()},disabled:b,children:[F?e.jsx(J,{size:15,className:$.spinner}):e.jsx(nt,{size:15})," Create New Draft"]})]})]}),e.jsx("div",{className:s.detailHeader,children:e.jsx("div",{className:s.metadataEditor,children:y?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"tf-field-stack",children:[e.jsx("label",{className:"tf-field-label",htmlFor:"workflow-draft-name",children:"Workflow name"}),e.jsx("input",{id:"workflow-draft-name",ref:me,className:"tf-field-shell",value:j,onChange:t=>V(t.target.value),"aria-invalid":A&&!j.trim(),"aria-describedby":A&&!j.trim()?"workflow-draft-name-error":void 0,readOnly:b}),A&&!j.trim()?e.jsx("span",{id:"workflow-draft-name-error",className:"tf-text-error",children:"Workflow name is required."}):null]}),e.jsxs("div",{className:"tf-field-stack",children:[e.jsx("label",{className:"tf-field-label",htmlFor:"workflow-draft-description",children:"Description"}),e.jsx("textarea",{id:"workflow-draft-description",className:"tf-field-shell",rows:3,value:I,onChange:t=>P(t.target.value),readOnly:b})]})]}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:s.titleRow,children:[e.jsx("h3",{className:"tf-heading-card",children:j||"Untitled workflow"}),e.jsx("div",{className:s.statusRow,children:N&&!m?e.jsx("button",{type:"button",className:"tf-control-icon",onClick:()=>S(!0),title:"Edit workflow details","aria-label":"Edit workflow details",children:e.jsx(rt,{size:14})}):null})]}),I?e.jsx("p",{className:`${s.description} tf-text-body`,children:I}):null]})})}),!m&&i?e.jsxs("div",{className:s.metrics,children:[e.jsxs("div",{className:s.metric,children:[e.jsx("span",{className:"tf-label-micro",children:"Current version"}),e.jsx("strong",{children:D?.version.status==="draft"?"Draft":`Version ${D?.version.versionNumber||1}`})]}),e.jsxs("div",{className:s.metric,children:[e.jsx("span",{className:"tf-label-micro",children:"Steps"}),e.jsx("strong",{children:r.length})]}),e.jsxs("div",{className:s.metric,children:[e.jsx("span",{className:"tf-label-micro",children:"Last published"}),e.jsx("strong",{children:ds(i.publishedVersions[0]?.version.publishedAt)})]})]}):null,e.jsxs("section",{className:s.section,children:[e.jsx("div",{className:s.sectionHeader,children:e.jsx("h4",{className:"tf-heading-card",children:"Workflow Steps"})}),r.length>0?e.jsx("div",{className:s.stepList,children:r.map((t,a)=>{const d=ue.has(t.clientKey);return e.jsxs("div",{className:s.stepEditor,children:[e.jsxs("div",{className:`${s.stepToolbar} ${d?s.stepToolbarExpanded:""}`.trim(),children:[e.jsxs("button",{type:"button",className:s.stepExpandButton,onClick:()=>Ie(t.clientKey),"aria-expanded":d,"aria-controls":`workflow-step-fields-${t.clientKey}`,children:[d?e.jsx(at,{size:15}):e.jsx(lt,{size:15}),e.jsx("span",{className:s.stepNumber,children:a+1}),e.jsx("strong",{children:t.name.trim()||"Untitled step"})]}),e.jsxs("div",{className:s.stepSummary,children:[e.jsx("span",{children:Ge(t.ownerId,u)}),e.jsx("span",{className:t.isRequired?"tf-chip-neutral":"tf-chip-warning",children:t.isRequired?"Required":"Optional"})]}),N?e.jsxs("div",{className:s.stepActions,children:[e.jsx("button",{type:"button",className:"tf-control-icon",title:"Move step up","aria-label":`Move step ${a+1} up`,onClick:()=>ge(a,-1),disabled:b||a===0,children:e.jsx(it,{size:14})}),e.jsx("button",{type:"button",className:"tf-control-icon",title:"Move step down","aria-label":`Move step ${a+1} down`,onClick:()=>ge(a,1),disabled:b||a===r.length-1,children:e.jsx(ot,{size:14})}),e.jsx("button",{type:"button",className:"tf-control-icon",title:"Remove step","aria-label":`Remove step ${a+1}`,onClick:()=>o(l=>l.filter(({clientKey:h})=>h!==t.clientKey)),disabled:b,children:e.jsx(ct,{size:14})})]}):null]}),d?e.jsxs("div",{id:`workflow-step-fields-${t.clientKey}`,className:s.stepFields,children:[e.jsxs("div",{className:"tf-field-stack",children:[e.jsx("label",{className:"tf-field-label",htmlFor:`workflow-step-name-${t.clientKey}`,children:"Step name"}),e.jsx("input",{id:`workflow-step-name-${t.clientKey}`,ref:l=>{l?se.current.set(t.clientKey,l):se.current.delete(t.clientKey)},className:"tf-field-shell",value:t.name,onChange:l=>M(t.clientKey,{name:l.target.value}),"aria-invalid":A&&!t.name.trim(),"aria-describedby":A&&!t.name.trim()?`workflow-step-name-error-${t.clientKey}`:void 0,disabled:!N,readOnly:b}),A&&!t.name.trim()?e.jsx("span",{id:`workflow-step-name-error-${t.clientKey}`,className:"tf-text-error",children:"Step name is required."}):null]}),e.jsxs("div",{className:"tf-field-stack",children:[e.jsx("label",{className:"tf-field-label",id:`workflow-step-owner-label-${t.clientKey}`,children:"Owner"}),(()=>{const l=Je(Se,t.ownerId),h=l.find(({value:v})=>String(v)===String(t.ownerId||"unassigned"))||l[0];return e.jsx(Ye,{value:t.ownerId||"unassigned",options:l,disabled:!N||b,ariaLabelledBy:`workflow-step-owner-label-${t.clientKey}`,portalPanel:!0,panelMinWidth:280,panelAlign:"start",searchable:!0,searchPlaceholder:"Search owners...",noResultsText:"No owners found.",triggerContent:h?e.jsx(_e,{option:h}):void 0,renderOptionContent:v=>{const R=l.find(({value:G})=>String(G)===String(v.value));return R?e.jsx(_e,{option:R}):v.label},onChange:v=>{const R=String(v),G=l.find(({value:Ae})=>String(Ae)===R);M(t.clientKey,{ownerId:G?.kind==="unassigned"?null:R,ownerType:G?.kind==="agent"?"agent":G?.kind==="member"?"user":null})}})})()]}),e.jsxs("div",{className:`${s.fullField} tf-field-stack`,children:[e.jsx("label",{className:"tf-field-label",htmlFor:`workflow-step-instructions-${t.clientKey}`,children:"Instructions"}),e.jsx("textarea",{id:`workflow-step-instructions-${t.clientKey}`,className:"tf-field-shell",rows:4,value:t.instructions,onChange:l=>M(t.clientKey,{instructions:l.target.value}),placeholder:"Describe the work to complete in this step.",disabled:!N,readOnly:b})]}),e.jsxs("div",{className:"tf-field-stack",children:[e.jsx("label",{className:"tf-field-label",htmlFor:`workflow-step-artifact-${t.clientKey}`,children:"Output label"}),e.jsx("input",{id:`workflow-step-artifact-${t.clientKey}`,className:"tf-field-shell",value:t.expectedArtifact||"",onChange:l=>M(t.clientKey,{expectedArtifact:l.target.value||null}),placeholder:"Optional output description",disabled:!N,readOnly:b})]}),e.jsxs("div",{className:s.stepToggles,children:[e.jsxs("label",{className:s.requiredToggle,title:"Requires the step owner to add a task comment before completing this step.",children:[e.jsx("input",{type:"checkbox",checked:t.requiresCommentEvidence===!0,onChange:l=>M(t.clientKey,{requiresCommentEvidence:l.target.checked}),disabled:!N||b}),"Require task comment"]}),e.jsxs("label",{className:s.requiredToggle,title:"Marks this step as mandatory when execution policy is enforced.",children:[e.jsx("input",{type:"checkbox",checked:t.isRequired,onChange:l=>M(t.clientKey,{isRequired:l.target.checked}),disabled:!N||b}),"Required step"]})]})]}):null]},t.clientKey)})}):e.jsx("div",{className:s.stepsEmpty,children:e.jsx("p",{className:"tf-text-helper",children:"No steps have been added yet."})})]})]}):e.jsx("div",{className:s.emptyState,children:e.jsxs("div",{className:s.emptyStateInner,children:[e.jsx(le,{size:30}),e.jsx("h3",{className:"tf-heading-card",children:"No workflows yet"}),e.jsx("p",{className:"tf-text-helper",children:"Create a workflow to begin defining a reusable process."}),e.jsxs("button",{type:"button",className:"tf-button-primary",onClick:ye,children:[e.jsx(pe,{size:15})," New Workflow"]})]})})]})}),e.jsx(Ze,{isOpen:!!he,onKeepEditing:()=>fe(null),onDiscard:Ce,theme:w}),e.jsx(os,{isOpen:Ne,workflowName:j,versionNumber:ke,busy:Z,onCancel:()=>z(!1),onPublish:()=>{Re()},theme:w})]})}export{ws as WorkflowManagerModule};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
._root_1bn9e_1{--workflow-library-width: min(332px, calc(100vw - 96px) );--doc-tray-width: var(--workflow-library-width);position:relative;display:flex;flex:1;min-width:0;min-height:0;width:100%;overflow:hidden}._main_1bn9e_13{flex:1;min-width:0;min-height:0;overflow:auto;transition:margin-left .22s cubic-bezier(.4,0,.2,1)}._trayOpen_1bn9e_21 ._main_1bn9e_13{margin-left:var(--workflow-library-width)}._libraryHeader_1bn9e_25{display:flex;align-items:center;gap:8px;min-height:49px;padding:10px 0;border-bottom:1px solid var(--border-divider)}._libraryTitle_1bn9e_34{flex:1;display:inline-flex;align-items:center;gap:6px}._libraryContent_1bn9e_41{flex:1;min-height:0;padding:12px 0 16px;overflow-y:auto}._libraryList_1bn9e_48{display:flex;flex-direction:column;gap:8px}._libraryItem_1bn9e_54{width:100%;min-height:64px;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;padding:10px;text-align:left;border:1px solid var(--border-default);border-radius:var(--radius-md);background:var(--surface-panel);color:var(--text-body);cursor:pointer}._libraryItem_1bn9e_54:hover{border-color:var(--border-strong);background:var(--surface-hover)}._libraryItemSelected_1bn9e_75{border-color:var(--brand-primary-border);background:var(--brand-primary-soft)}._libraryItemCopy_1bn9e_80{min-width:0}._libraryItemName_1bn9e_84{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-title);font-size:.82rem;font-weight:700}._libraryItemMeta_1bn9e_94{display:block;margin-top:3px;color:var(--text-helper);font-size:.72rem}._libraryBadges_1bn9e_101,._statusRow_1bn9e_102{display:flex;align-items:center;flex-wrap:wrap;gap:6px}._content_1bn9e_109{width:min(100%,980px);margin:0 auto;padding:28px clamp(20px,4vw,44px) 48px}._visuallyHidden_1bn9e_115{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}._pageHeader_1bn9e_127{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-bottom:16px;border-bottom:1px solid var(--border-divider)}._pageHeading_1bn9e_136{min-width:0}._pageHeading_1bn9e_136 p{margin:5px 0 0}._detailHeader_1bn9e_144{padding:22px 0 18px}._metadataEditor_1bn9e_148{min-width:0;display:grid;gap:14px}._titleRow_1bn9e_154{display:flex;min-width:0;align-items:center;justify-content:space-between;gap:12px}._titleRow_1bn9e_154 h3{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._editor_1bn9e_169{min-width:0}._stickyToolbar_1bn9e_173{position:sticky;top:0;z-index:5;display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 calc(-1*clamp(20px,4vw,44px));padding:10px clamp(20px,4vw,44px);border-bottom:1px solid var(--border-divider);background:color-mix(in srgb,var(--surface-panel) 94%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}._toolbarGroup_1bn9e_188{display:flex;align-items:center;gap:6px}._versionSelect_1bn9e_194{width:116px;min-width:116px;min-height:32px;padding-block:5px}._titleRow_1bn9e_154>:first-child{flex:1;min-width:0}._titleRow_1bn9e_154 ._statusRow_1bn9e_102{flex:0 0 auto;justify-content:flex-end}._description_1bn9e_211{max-width:720px;margin:8px 0 0;white-space:pre-wrap}._metrics_1bn9e_217{display:grid;grid-template-columns:repeat(3,minmax(120px,1fr));border-top:1px solid var(--border-divider);border-bottom:1px solid var(--border-divider)}._metric_1bn9e_217{min-width:0;padding:14px 18px;border-right:1px solid var(--border-divider)}._metric_1bn9e_217:first-child{padding-left:0}._metric_1bn9e_217:last-child{border-right:0}._metric_1bn9e_217 strong,._metric_1bn9e_217 span{display:block}._metric_1bn9e_217 strong{margin-top:4px;color:var(--text-title);font-size:.9rem}._section_1bn9e_249{padding-top:22px}._sectionHeader_1bn9e_253,._stepToolbar_1bn9e_254,._stepActions_1bn9e_255{display:flex;align-items:center}._sectionHeader_1bn9e_253,._stepToolbar_1bn9e_254{justify-content:space-between;gap:12px}._stepList_1bn9e_266{display:flex;flex-direction:column;gap:8px;margin-top:12px}._stepEditor_1bn9e_273{border:1px solid var(--border-default);border-radius:var(--radius-md);background:var(--surface-panel);overflow:hidden}._stepToolbar_1bn9e_254{min-height:48px;padding:7px 9px}._stepToolbarExpanded_1bn9e_285{border-bottom:1px solid var(--border-divider)}._stepExpandButton_1bn9e_289{min-width:0;flex:1;display:flex;align-items:center;gap:8px;padding:4px;border:0;background:transparent;color:var(--text-body);text-align:left;cursor:pointer}._stepExpandButton_1bn9e_289 strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.82rem}._stepSummary_1bn9e_311{display:flex;align-items:center;gap:8px;color:var(--text-helper);font-size:.72rem}._stepSummary_1bn9e_311>:first-child{max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._stepActions_1bn9e_255{gap:4px}._stepFields_1bn9e_328{display:grid;grid-template-columns:minmax(0,1fr) minmax(180px,.55fr);gap:14px;padding:14px}._fullField_1bn9e_335{grid-column:1 / -1}._stepToggles_1bn9e_337{display:flex;align-items:end;justify-content:flex-start;gap:18px;min-height:36px}._requiredToggle_1bn9e_345{display:inline-flex;align-items:center;align-self:end;gap:8px;min-height:36px;color:var(--text-body);font-size:.78rem;font-weight:600}._stepsEmpty_1bn9e_356{display:flex;align-items:center;gap:12px;margin-top:12px;padding:16px 0;border-top:1px solid var(--border-divider)}._stepsEmpty_1bn9e_356 p{margin:0}._stepRow_1bn9e_367{display:grid;grid-template-columns:28px minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--border-divider)}._stepNumber_1bn9e_376{color:var(--text-helper);font-family:var(--font-mono);font-size:.72rem}._emptyState_1bn9e_382,._loadingState_1bn9e_383{display:flex;min-height:280px;align-items:center;justify-content:center;text-align:center}._emptyStateInner_1bn9e_391{max-width:390px}._emptyStateInner_1bn9e_391 p{margin:8px 0 16px}._errorBanner_1bn9e_399{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:16px}._errorMessage_1bn9e_407{display:inline-flex;min-width:0;align-items:center;gap:6px}@media(max-width:760px){._trayOpen_1bn9e_21 ._main_1bn9e_13{margin-left:0}._metrics_1bn9e_217{grid-template-columns:1fr}._metric_1bn9e_217,._metric_1bn9e_217:first-child{padding:12px 0;border-right:0;border-bottom:1px solid var(--border-divider)}._metric_1bn9e_217:last-child{border-bottom:0}._pageHeader_1bn9e_127{align-items:flex-start}._stepFields_1bn9e_328{grid-template-columns:1fr}._fullField_1bn9e_335{grid-column:auto}._stepSummary_1bn9e_311>:first-child{display:none}}@media(max-width:520px){._pageHeader_1bn9e_127{flex-direction:column}._content_1bn9e_109{padding-inline:20px}._stickyToolbar_1bn9e_173{margin-inline:-20px;padding-inline:20px}._stickyToolbar_1bn9e_173,._toolbarGroup_1bn9e_188{flex-wrap:wrap}}._title_lvjgs_1{display:inline-flex;align-items:center;gap:8px}._message_lvjgs_7{margin:0;padding:20px 24px;color:var(--text-body)}._actions_lvjgs_13{display:flex;justify-content:flex-end;gap:8px}
|
|
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>
|
|
Binary file
|
|
@@ -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>
|