@@ -17,6 +17,8 @@ import { ColleagueCard } from '../colleague-card'
1717import { ColleagueForm } from '../colleague-form'
1818import { UserSelection } from '../../AdvancedComponents/user-selection'
1919import { DigitalColleagueClone } from '../foundary-clone'
20+ import { DigitalColleagueSelection } from '../digital-colleague-selection'
21+ import { AddColleagueToTeamForm } from '../add-colleague-to-team-form'
2022import { ColleagueTypeSelection } from '../colleague-type-selection'
2123import { DigitalColleagueOptions } from '../foundary-options'
2224import {
@@ -28,6 +30,7 @@ import {
2830 type DigitalColleague ,
2931 // type KnowledgeDocument,
3032 type User as UserType ,
33+ type Team ,
3134} from '../types'
3235import { motion , AnimatePresence } from 'motion/react'
3336import { DashboardHero } from '../../Heros/DashboardHero'
@@ -37,12 +40,14 @@ interface ColleaguesViewProps {
3740 onColleagueAdd ?: ( colleague : Colleague ) => void
3841 onColleagueEdit ?: ( colleague : Colleague ) => void
3942 onColleagueDelete ?: ( colleague : string , type : 'human' | 'digital' ) => void
43+ onColleagueAddToTeam ?: ( colleague : DigitalColleague , teamId : number ) => void
4044 compactView ?: boolean
4145 departments ?: string [ ]
4246 className ?: string
4347 // New props for user and colleague selection
4448 availableUsers ?: UserType [ ]
4549 existingDigitalColleagues ?: DigitalColleague [ ]
50+ currentTeam ?: Team
4651 availableKnowledgeDocuments ?: Knowledge [ ]
4752 availableCapabilities ?: Array < {
4853 relationTo : 'mcpTools' | 'capabilities' | 'internalTools' | 'digital-colleagues'
@@ -59,11 +64,13 @@ export default function ColleaguesView({
5964 onColleagueAdd,
6065 onColleagueEdit,
6166 onColleagueDelete,
67+ onColleagueAddToTeam,
6268 compactView = false ,
6369 departments = [ 'Design' , 'Engineering' , 'Marketing' , 'Product' , 'Sales' , 'Operations' ] ,
6470 className,
6571 availableUsers = [ ] ,
6672 existingDigitalColleagues = [ ] ,
73+ currentTeam,
6774 availableKnowledgeDocuments = [ ] ,
6875 availableCapabilities = [ ] ,
6976 availableModels = [ ] ,
@@ -75,6 +82,7 @@ export default function ColleaguesView({
7582 const [ activeTab , setActiveTab ] = useState ( 'all' )
7683 const [ editingColleague , setEditingColleague ] = useState < DigitalColleague | null > ( null )
7784 const [ viewingColleague , setViewingColleague ] = useState < DigitalColleague | null > ( null )
85+ const [ selectedColleagueForTeam , setSelectedColleagueForTeam ] = useState < DigitalColleague | null > ( null )
7886
7987 useEffect ( ( ) => {
8088 setColleagues ( initialColleagues || [ ] )
@@ -88,7 +96,7 @@ export default function ColleaguesView({
8896
8997 // New state for selection flows
9098 const [ currentView , setCurrentView ] = useState <
91- 'main' | 'typeSelection' | 'userSelection' | 'digitalOptions' | 'digitalClone' | 'form' | 'view'
99+ 'main' | 'typeSelection' | 'userSelection' | 'digitalOptions' | 'digitalClone' | 'digitalSelection' | 'addToTeam' | ' form' | 'view'
92100 > ( 'main' )
93101
94102 const filteredColleagues = colleagues . filter ( ( colleague ) => {
@@ -184,6 +192,31 @@ export default function ColleaguesView({
184192 setCurrentView ( 'main' )
185193 }
186194
195+ const handleDigitalColleagueSelect = ( selectedColleague : DigitalColleague ) => {
196+ if ( ! selectedColleague || ! selectedColleague . id ) {
197+ console . error (
198+ 'Invalid selected colleague provided to handleDigitalColleagueSelect:' ,
199+ selectedColleague ,
200+ )
201+ return
202+ }
203+
204+ setSelectedColleagueForTeam ( selectedColleague )
205+ setCurrentView ( 'addToTeam' )
206+ }
207+
208+ const handleAddColleagueToTeam = ( colleague : DigitalColleague , teamId : number ) => {
209+ onColleagueAddToTeam ?.( colleague , teamId )
210+ setColleagues ( ( prev ) => [ ...prev , { ...colleague , type : 'digital' } ] )
211+ setSelectedColleagueForTeam ( null )
212+ setCurrentView ( 'main' )
213+ }
214+
215+ const handleCancelAddToTeam = ( ) => {
216+ setSelectedColleagueForTeam ( null )
217+ setCurrentView ( 'digitalSelection' )
218+ }
219+
187220 const handleCreateNewDigital = ( ) => {
188221 setEditingColleague ( null )
189222 setCurrentView ( 'form' )
@@ -304,13 +337,39 @@ export default function ColleaguesView({
304337 if ( currentView === 'digitalOptions' ) {
305338 return (
306339 < DigitalColleagueOptions
340+ onAddExisting = { ( ) => setCurrentView ( 'digitalSelection' ) }
307341 onCloneExisting = { ( ) => setCurrentView ( 'digitalClone' ) }
308342 onCreateNew = { handleCreateNewDigital }
309343 onCancel = { ( ) => setCurrentView ( 'typeSelection' ) }
310344 />
311345 )
312346 }
313347
348+ if ( currentView === 'digitalSelection' ) {
349+ return (
350+ < DigitalColleagueSelection
351+ digitalColleagues = { safeExistingDigitalColleagues }
352+ onColleagueSelect = { handleDigitalColleagueSelect }
353+ onCancel = { ( ) => setCurrentView ( 'digitalOptions' ) }
354+ />
355+ )
356+ }
357+
358+ if ( currentView === 'addToTeam' ) {
359+ if ( ! selectedColleagueForTeam || ! currentTeam ) {
360+ setCurrentView ( 'digitalSelection' )
361+ return null
362+ }
363+ return (
364+ < AddColleagueToTeamForm
365+ colleague = { selectedColleagueForTeam }
366+ team = { currentTeam }
367+ onSave = { handleAddColleagueToTeam }
368+ onCancel = { handleCancelAddToTeam }
369+ />
370+ )
371+ }
372+
314373 if ( currentView === 'digitalClone' ) {
315374 return (
316375 < DigitalColleagueClone
0 commit comments