import { useMemo, useState } from 'react'; import type { Capability } from '@feltdb/core'; import { useCapability, useCollection } from '@feltdb/core/react'; import { projects } from '../feltdb'; import { useAuth } from '../context/AuthContext'; import { runProjectAssistant } from '../../agents/project-assistant'; import { runActivityAssistant } from '../../agents/activity-assistant'; export function Agents() { const { user, organization } = useAuth(); const projectState = useCollection(projects); const [projectId, setProjectId] = useState(''); const projectCapability = useMemo(() => ({ id: 'run-project-assistant', name: 'Run Project Assistant', execute: () => runProjectAssistant({ projectId, organization: organization!.id, user: user!.id }) }), [projectId, organization, user]); const activityCapability = useMemo(() => ({ id: 'run-activity-assistant', name: 'Run Activity Assistant', execute: () => runActivityAssistant({ organization: organization!.id, user: user!.id }) }), [organization, user]); const projectAgent = useCapability<[], { title: string; summary: string; activityCount: number }>(projectCapability); const activityAgent = useCapability<[], { summary: string; total: number }>(activityCapability); return
Authorized agents

Assistants

Each assistant invokes bounded capabilities over the state you can already access.

Project Assistant · project-summary

Explain a project

{projectAgent.result &&
{projectAgent.result.title}

{projectAgent.result.summary}

{projectAgent.result.activityCount} related activity events
}
Activity Assistant · activity-summary

Explain recent activity

Reads authorized AuditEvent state and records its own execution.

{activityAgent.result &&

{activityAgent.result.summary}

}
; }