Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,6 @@ async function execute({
return router.push(
ROUTES.projects
.detail({ id: projectId })
.commits.detail({ uuid: commitUuid }).preview.root,
.commits.detail({ uuid: commitUuid }).agent.root,
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ import { Text } from '@latitude-data/web-ui/atoms/Text'
import { Icon } from '@latitude-data/web-ui/atoms/Icons'
import { Button } from '@latitude-data/web-ui/atoms/Button'
import Chat from '$/app/(private)/projects/[projectId]/versions/[commitUuid]/documents/[documentUuid]/_components/DocumentEditor/Editor/V2Playground/Chat'
import { ActiveTrigger } from '$/app/(private)/projects/[projectId]/versions/[commitUuid]/preview/_components/TriggersList'
import { useCurrentCommit } from '$/app/providers/CommitProvider'
import { useCurrentProject } from '$/app/providers/ProjectProvider'
import { useAutoScroll } from '@latitude-data/web-ui/hooks/useAutoScroll'
Expand Down Expand Up @@ -57,7 +56,7 @@ export function RunAgentHeader() {

export function RunAgentBody({
executeCompleteOnboarding,
activeTrigger,
parameters,
}: {
executeCompleteOnboarding: ({
projectId,
Expand All @@ -66,7 +65,7 @@ export function RunAgentBody({
projectId: number
commitUuid: string
}) => void
activeTrigger: ActiveTrigger
parameters: Record<string, unknown>
}) {
const { project } = useCurrentProject()
const { commit } = useCurrentCommit()
Expand Down Expand Up @@ -118,7 +117,7 @@ export function RunAgentBody({
<Chat
showHeader={false}
playground={playground}
parameters={activeTrigger.parameters}
parameters={parameters}
/>
<div className='sticky bottom-0 w-full bg-background pb-6'>
<div className='flex relative flex-row w-full items-center justify-center'>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ import useIntegrations from '$/stores/integrations'
import {
getPipedreamUnconfiguredIntegrations,
UnconfiguredIntegrations,
} from '$/app/(private)/projects/[projectId]/versions/[commitUuid]/preview/_components/UnconfiguredIntegrations'
import { ConfiguredIntegrations } from '$/app/(private)/projects/[projectId]/versions/[commitUuid]/preview/_components/ConfiguredIntegrations'
} from '$/components/Integrations/UnconfiguredIntegrations'
import { ConfiguredIntegrations } from '$/components/Integrations/ConfiguredIntegrations'
import { IsLoadingOnboardingItem } from '../../../lib/IsLoadingOnboardingItem'
import { OnboardingStepKey } from '@latitude-data/constants/onboardingSteps'
import { OnboardingStep } from '../../../lib/OnboardingStep'
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { DocumentTriggerType } from '@latitude-data/constants'
import {
Commit,
DocumentTrigger,
DocumentVersion,
IntegrationDto,
Expand All @@ -8,33 +9,25 @@ import { Button } from '@latitude-data/web-ui/atoms/Button'
import { Text } from '@latitude-data/web-ui/atoms/Text'
import { cn } from '@latitude-data/web-ui/utils'
import { useCallback, useMemo } from 'react'
import { TriggerEventsList } from '$/app/(private)/projects/[projectId]/versions/[commitUuid]/preview/_components/TriggerEventsList'
import { OnRunTriggerFn } from '$/app/(private)/projects/[projectId]/versions/[commitUuid]/preview/_components/TriggersList'
import { useCurrentCommit } from '$/app/providers/CommitProvider'
import useDocumentVersions from '$/stores/documentVersions'
import { useTriggerInfo } from '$/components/TriggersManagement/hooks/useTriggerInfo'
import {
isChatTrigger,
RunDocumentProps,
RUNNABLE_TRIGGERS,
} from '$/app/(private)/projects/[projectId]/versions/[commitUuid]/preview/_components/TriggerWrapper'
import { Icon } from '@latitude-data/web-ui/atoms/Icons'
import { useTriggerInfo } from '$/components/TriggersManagement/hooks/useTriggerInfo'

function isIntegrationTrigger(
trigger: DocumentTrigger,
): trigger is DocumentTrigger<DocumentTriggerType.Integration> {
return trigger.triggerType === DocumentTriggerType.Integration
}
RunTriggerProps,
} from '$/components/TriggersManagement/types'
import { TriggerEventsList } from '$/components/TriggersManagement/TriggerCard/TriggerEventsList'
import useDocumentTriggerEvents from '$/stores/documentTriggerEvents'

export function RunTrigger({
trigger,
integrations,
onRunTrigger,
onRunChatTrigger,
}: {
trigger: DocumentTrigger
integrations: IntegrationDto[]
onRunTrigger: OnRunTriggerFn
onRunChatTrigger: () => void
onRunTrigger: (props: RunDocumentProps) => void
}) {
const { commit } = useCurrentCommit()
const { data: documents } = useDocumentVersions({
Expand All @@ -52,27 +45,27 @@ export function RunTrigger({

return (
<RunTriggerWrapper
commit={commit}
trigger={trigger}
integrations={integrations}
document={document}
integrations={integrations}
onRunTrigger={onRunTrigger}
onRunChatTrigger={onRunChatTrigger}
/>
)
}

export function RunTriggerWrapper({
function RunTriggerWrapper({
commit,
document,
trigger,
integrations,
document,
onRunTrigger,
onRunChatTrigger,
}: {
commit: Commit
document: DocumentVersion
trigger: DocumentTrigger
integrations: IntegrationDto[]
document: DocumentVersion
onRunTrigger: OnRunTriggerFn
onRunChatTrigger: () => void
onRunTrigger: (props: RunDocumentProps) => void
}) {
const { image, title, description } = useTriggerInfo({
trigger,
Expand All @@ -81,20 +74,27 @@ export function RunTriggerWrapper({
})
const canRunTrigger = RUNNABLE_TRIGGERS.includes(trigger.triggerType)

const handleRunTrigger = useCallback(() => {
if (isIntegrationTrigger(trigger)) {
onRunTrigger({ document, parameters: {}, aiParameters: true })
return
}
const { data: triggerEvents, isLoading: isLoadingTriggerEvents } =
useDocumentTriggerEvents({
projectId: trigger.projectId,
commitUuid: commit.uuid,
triggerUuid: trigger.uuid,
})

if (isChatTrigger(trigger)) {
onRunChatTrigger()
return
}

// Schedule triggers don't have parameters
const handleRunScheduled = useCallback(() => {
onRunTrigger({ document, parameters: {} })
}, [onRunTrigger, onRunChatTrigger, trigger, document])
}, [onRunTrigger, document])

const handleRunWithAI = useCallback(() => {
onRunTrigger({ document, parameters: {}, aiParameters: true })
}, [onRunTrigger, document])

const handleRunFromEvent = useCallback(
(props: RunTriggerProps) => {
onRunTrigger({ document, ...props })
},
[onRunTrigger, document],
)

return (
<div className='flex flex-col relative border rounded-lg w-full'>
Expand Down Expand Up @@ -131,7 +131,7 @@ export function RunTriggerWrapper({
fancy
variant='outline'
iconProps={{ name: 'circlePlay' }}
onClick={handleRunTrigger}
onClick={handleRunScheduled}
>
Run
</Button>
Expand All @@ -141,35 +141,21 @@ export function RunTriggerWrapper({
fancy
variant='outline'
iconProps={{ name: 'bot' }}
onClick={handleRunTrigger}
onClick={handleRunWithAI}
>
Simulate with AI
</Button>
) : null}
</div>
{!RUNNABLE_TRIGGERS.includes(trigger.triggerType) ? (
<TriggerEventsList
document={document}
trigger={trigger}
onRunTrigger={onRunTrigger}
emptyState={<TriggerEventsEmptyState title={title} />}
triggerEvents={triggerEvents}
isLoading={isLoadingTriggerEvents}
isOpen
handleRun={handleRunFromEvent}
/>
) : null}
</div>
)
}

function TriggerEventsEmptyState({ title }: { title: string }) {
return (
<div className='flex items-center justify-center '>
<div className='flex flex-col items-center justify-center py-4 px-5 gap-y-3'>
<Icon name='clockFading' size='large' color='foregroundMuted' />
<Text.H5M>Waiting for events...</Text.H5M>
<Text.H5 centered color='foregroundMuted'>
To use this trigger to preview your agent, perform the action that
triggers <Text.H5M color='foregroundMuted'>{title}</Text.H5M>.
</Text.H5>
</div>
</div>
)
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { useCallback, useMemo, useState } from 'react'
import { useCallback, useMemo } from 'react'
import { Text } from '@latitude-data/web-ui/atoms/Text'
import { Icon } from '@latitude-data/web-ui/atoms/Icons'
import useDocumentTriggers from '$/stores/documentTriggers'
Expand All @@ -7,17 +7,11 @@ import { useCurrentProject } from '$/app/providers/ProjectProvider'
import { DocumentTriggerType } from '@latitude-data/constants'
import { RunTrigger } from './_components/RunTrigger'
import useIntegrations from '$/stores/integrations'
import { ChatTriggerTextarea } from '$/app/(private)/projects/[projectId]/versions/[commitUuid]/preview/_components/ChatTriggerTextarea'
import { useActiveChatTrigger } from '$/app/(private)/projects/[projectId]/versions/[commitUuid]/preview/_components/useActiveTrigger'
import {
ActiveTrigger,
OnRunTriggerFn,
} from '$/app/(private)/projects/[projectId]/versions/[commitUuid]/preview/_components/TriggersList'
import { IsLoadingOnboardingItem } from '../../../lib/IsLoadingOnboardingItem'
import { OnboardingStepKey } from '@latitude-data/constants/onboardingSteps'
import { useTriggerSockets } from '$/app/(private)/projects/[projectId]/versions/[commitUuid]/preview/_components/useTriggerSockets'
import { OnboardingStep } from '../../../lib/OnboardingStep'
import { usePlayground } from '../../../lib/PlaygroundProvider'
import { RunDocumentProps } from '$/components/TriggersManagement/types'

export function TriggerAgentHeader() {
return (
Expand All @@ -37,45 +31,24 @@ export function TriggerAgentHeader() {

export function TriggerAgentBody({
moveNextOnboardingStep,
setActiveTrigger,
setParameters,
}: {
moveNextOnboardingStep: ({
currentStep,
}: {
currentStep: OnboardingStepKey
}) => void
setActiveTrigger: (trigger: ActiveTrigger) => void
setParameters: (parameters: Record<string, unknown>) => void
}) {
const { project } = useCurrentProject()
const { commit } = useCurrentCommit()
const { playground } = usePlayground()

const {
data: triggers,
isLoading: isLoadingTriggers,
mutate,
} = useDocumentTriggers({
const { data: triggers, isLoading: isLoadingTriggers } = useDocumentTriggers({
projectId: project.id,
commitUuid: commit.uuid,
})

useTriggerSockets({ commit: commit, project: project, mutate })

const activeChatTrigger = useActiveChatTrigger({
commit: commit,
project: project,
triggers,
})

const [openChatInput, setOpenChatInput] = useState<boolean>(false)
const toggleOpenChatInput = useCallback(() => {
if (openChatInput) {
setOpenChatInput(false)
} else {
setOpenChatInput(true)
}
}, [openChatInput])

const { data: integrations, isLoading: isLoadingIntegrations } =
useIntegrations()

Expand All @@ -85,13 +58,18 @@ export function TriggerAgentBody({
})
}, [triggers])

const onRunTrigger: OnRunTriggerFn = useCallback(
({ document, parameters, userMessage, aiParameters = false }) => {
setActiveTrigger({ document, parameters, userMessage })
const onRunTrigger = useCallback(
({
document,
parameters,
userMessage,
aiParameters = false,
}: RunDocumentProps) => {
setParameters(parameters)
playground.start({ document, parameters, userMessage, aiParameters })
moveNextOnboardingStep({ currentStep: OnboardingStepKey.TriggerAgent })
},
[setActiveTrigger, moveNextOnboardingStep, playground],
[setParameters, moveNextOnboardingStep, playground],
)

return (
Expand All @@ -108,28 +86,12 @@ export function TriggerAgentBody({
key={trigger.uuid}
trigger={trigger}
onRunTrigger={onRunTrigger}
onRunChatTrigger={toggleOpenChatInput}
integrations={integrations}
/>
))
)}
</div>
<div className='flex flex-col gap-6 w-full max-w-[500px]'>
{activeChatTrigger.active && openChatInput ? (
<div className='sticky bottom-6'>
<ChatTriggerTextarea
key={activeChatTrigger.activeKey}
commit={commit}
project={project}
document={activeChatTrigger.active.document}
chatTrigger={activeChatTrigger.active.trigger}
chatFocused={openChatInput}
onRunTrigger={onRunTrigger}
options={activeChatTrigger.options}
onChange={activeChatTrigger.onChange}
/>
</div>
) : null}
<div className='flex flex-col gap-2 w-full max-w-[600px]'>
<Text.H5 centered color='foregroundMuted'>
Agent will start running automatically
Expand Down
Loading
Loading