mirror of
https://github.com/simstudioai/sim.git
synced 2026-04-06 03:00:16 -04:00
feat(templates): landing page templates workflow states
This commit is contained in:
@@ -35,6 +35,8 @@ export interface PreviewWorkflow {
|
||||
color: string
|
||||
blocks: PreviewBlock[]
|
||||
edges: Array<{ id: string; source: string; target: string }>
|
||||
/** Public JSON export used to seed the landing-page import flow */
|
||||
seedPath?: string
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -8,6 +8,7 @@ const OCR_INVOICE_WORKFLOW: PreviewWorkflow = {
|
||||
id: 'tpl-ocr-invoice',
|
||||
name: 'OCR Invoice to DB',
|
||||
color: '#2ABBF8',
|
||||
seedPath: '/landing-page-templates/ocr-invoice-db-d502887e-8750-40a3-a98b-fb2a4e725a4d.json',
|
||||
blocks: [
|
||||
{
|
||||
id: 'starter-1',
|
||||
@@ -57,6 +58,7 @@ const GITHUB_RELEASE_WORKFLOW: PreviewWorkflow = {
|
||||
id: 'tpl-github-release',
|
||||
name: 'GitHub Release Agent',
|
||||
color: '#00F701',
|
||||
seedPath: '/landing-page-templates/gh-release-agent-d3bed10e-fc87-4fdb-b458-80d8e43757d3.json',
|
||||
blocks: [
|
||||
{
|
||||
id: 'github-1',
|
||||
@@ -108,6 +110,8 @@ const MEETING_FOLLOWUP_WORKFLOW: PreviewWorkflow = {
|
||||
id: 'tpl-meeting-followup',
|
||||
name: 'Meeting Follow-up Agent',
|
||||
color: '#FFCC02',
|
||||
seedPath:
|
||||
'/landing-page-templates/meeting-followup-agent-a2357a2f-67f7-40c1-8e64-301bcd604239.json',
|
||||
blocks: [
|
||||
{
|
||||
id: 'gcal-1',
|
||||
@@ -159,6 +163,7 @@ const CV_SCANNER_WORKFLOW: PreviewWorkflow = {
|
||||
id: 'tpl-cv-scanner',
|
||||
name: 'CV/Resume Scanner',
|
||||
color: '#FA4EDF',
|
||||
seedPath: '/landing-page-templates/resume-parser-d083c931-8788-4c6e-814c-0788830e164d.json',
|
||||
blocks: [
|
||||
{
|
||||
id: 'starter-2',
|
||||
@@ -208,6 +213,7 @@ const EMAIL_TRIAGE_WORKFLOW: PreviewWorkflow = {
|
||||
id: 'tpl-email-triage',
|
||||
name: 'Email Triage Agent',
|
||||
color: '#FF6B2C',
|
||||
seedPath: '/landing-page-templates/email-triage-57e84f83-c583-4e74-b73a-080d25f2074d.json',
|
||||
blocks: [
|
||||
{
|
||||
id: 'gmail-2',
|
||||
@@ -273,6 +279,7 @@ const COMPETITOR_MONITOR_WORKFLOW: PreviewWorkflow = {
|
||||
id: 'tpl-competitor-monitor',
|
||||
name: 'Competitor Monitor',
|
||||
color: '#6366F1',
|
||||
seedPath: '/landing-page-templates/competitor-monitor-52454688-49ae-4279-894a-aa6494f10e3a.json',
|
||||
blocks: [
|
||||
{
|
||||
id: 'schedule-1',
|
||||
@@ -325,6 +332,7 @@ const SOCIAL_LISTENING_WORKFLOW: PreviewWorkflow = {
|
||||
id: 'tpl-social-listening',
|
||||
name: 'Social Listening Agent',
|
||||
color: '#F43F5E',
|
||||
seedPath: '/landing-page-templates/brand-mention-d2578496-d153-4db1-8ef1-c738cfa94a96.json',
|
||||
blocks: [
|
||||
{
|
||||
id: 'schedule-2',
|
||||
@@ -377,6 +385,7 @@ const DATA_ENRICHMENT_WORKFLOW: PreviewWorkflow = {
|
||||
id: 'tpl-data-enrichment',
|
||||
name: 'Data Enrichment Pipeline',
|
||||
color: '#14B8A6',
|
||||
seedPath: '/landing-page-templates/lead-enricher-6ed8dede-1df6-4962-95f4-887abf524b38.json',
|
||||
blocks: [
|
||||
{
|
||||
id: 'starter-3',
|
||||
@@ -426,6 +435,8 @@ const FEEDBACK_DIGEST_WORKFLOW: PreviewWorkflow = {
|
||||
id: 'tpl-feedback-digest',
|
||||
name: 'Customer Feedback Digest',
|
||||
color: '#F59E0B',
|
||||
seedPath:
|
||||
'/landing-page-templates/customer-feedback-digest-2a1c59de-fdcc-4ae0-b448-69a58b36c29a.json',
|
||||
blocks: [
|
||||
{
|
||||
id: 'schedule-3',
|
||||
@@ -478,6 +489,7 @@ const PR_REVIEW_WORKFLOW: PreviewWorkflow = {
|
||||
id: 'tpl-pr-review',
|
||||
name: 'PR Review Agent',
|
||||
color: '#06B6D4',
|
||||
seedPath: '/landing-page-templates/pr-review-cb5f2d92-a324-4958-8303-4710c572b71d.json',
|
||||
blocks: [
|
||||
{
|
||||
id: 'github-2',
|
||||
@@ -529,6 +541,7 @@ const KNOWLEDGE_QA_WORKFLOW: PreviewWorkflow = {
|
||||
id: 'tpl-knowledge-qa',
|
||||
name: 'Knowledge Base QA',
|
||||
color: '#84CC16',
|
||||
seedPath: '/landing-page-templates/knowledge-base-qa-e9dcd9f1-18bd-4163-b5d8-3e239a297526.json',
|
||||
blocks: [
|
||||
{
|
||||
id: 'starter-4',
|
||||
|
||||
@@ -1,13 +1,17 @@
|
||||
'use client'
|
||||
|
||||
import { useRef, useState } from 'react'
|
||||
import { useCallback, useRef, useState } from 'react'
|
||||
import { createLogger } from '@sim/logger'
|
||||
import { type MotionValue, motion, useScroll, useTransform } from 'framer-motion'
|
||||
import dynamic from 'next/dynamic'
|
||||
import Link from 'next/link'
|
||||
import { useRouter } from 'next/navigation'
|
||||
import { Badge, ChevronDown } from '@/components/emcn'
|
||||
import { LandingWorkflowSeedStorage } from '@/lib/core/utils/browser-storage'
|
||||
import { cn } from '@/lib/core/utils/cn'
|
||||
import { TEMPLATE_WORKFLOWS } from '@/app/(home)/components/templates/template-workflows'
|
||||
|
||||
const logger = createLogger('LandingTemplates')
|
||||
|
||||
const LandingPreviewWorkflow = dynamic(
|
||||
() =>
|
||||
import(
|
||||
@@ -344,6 +348,8 @@ const TEMPLATES_PANEL_ID = 'templates-panel'
|
||||
export default function Templates() {
|
||||
const sectionRef = useRef<HTMLDivElement>(null)
|
||||
const [activeIndex, setActiveIndex] = useState(0)
|
||||
const [isPreparingTemplate, setIsPreparingTemplate] = useState(false)
|
||||
const router = useRouter()
|
||||
|
||||
const { scrollYProgress } = useScroll({
|
||||
target: sectionRef,
|
||||
@@ -353,6 +359,45 @@ export default function Templates() {
|
||||
const activeWorkflow = TEMPLATE_WORKFLOWS[activeIndex]
|
||||
const activeDepth = DEPTH_CONFIGS[activeWorkflow.id]
|
||||
|
||||
const handleUseTemplate = useCallback(async () => {
|
||||
if (isPreparingTemplate) return
|
||||
|
||||
setIsPreparingTemplate(true)
|
||||
|
||||
try {
|
||||
if (activeWorkflow.seedPath) {
|
||||
const response = await fetch(activeWorkflow.seedPath)
|
||||
|
||||
if (!response.ok) {
|
||||
throw new Error(`Failed to fetch template seed: ${response.status}`)
|
||||
}
|
||||
|
||||
const workflowJson = await response.text()
|
||||
LandingWorkflowSeedStorage.store({
|
||||
templateId: activeWorkflow.id,
|
||||
workflowName: activeWorkflow.name,
|
||||
color: activeWorkflow.color,
|
||||
workflowJson,
|
||||
})
|
||||
}
|
||||
} catch (error) {
|
||||
logger.error('Failed to prepare landing template workflow seed', {
|
||||
templateId: activeWorkflow.id,
|
||||
error,
|
||||
})
|
||||
} finally {
|
||||
setIsPreparingTemplate(false)
|
||||
router.push('/signup')
|
||||
}
|
||||
}, [
|
||||
activeWorkflow.color,
|
||||
activeWorkflow.id,
|
||||
activeWorkflow.name,
|
||||
activeWorkflow.seedPath,
|
||||
isPreparingTemplate,
|
||||
router,
|
||||
])
|
||||
|
||||
return (
|
||||
<section
|
||||
ref={sectionRef}
|
||||
@@ -508,11 +553,13 @@ export default function Templates() {
|
||||
fitViewOptions={{ padding: 0.15, maxZoom: 1.3 }}
|
||||
/>
|
||||
</div>
|
||||
<Link
|
||||
href='/signup'
|
||||
className='group/cta absolute top-[16px] right-[16px] z-10 inline-flex h-[32px] items-center gap-[6px] rounded-[5px] border border-[#33C482] bg-[#33C482] px-[10px] font-[430] font-season text-[14px] text-black transition-[filter] hover:brightness-110'
|
||||
<button
|
||||
type='button'
|
||||
onClick={handleUseTemplate}
|
||||
disabled={isPreparingTemplate}
|
||||
className='group/cta absolute top-[16px] right-[16px] z-10 inline-flex h-[32px] cursor-pointer items-center gap-[6px] rounded-[5px] border border-[#33C482] bg-[#33C482] px-[10px] font-[430] font-season text-[14px] text-black transition-[filter] hover:brightness-110'
|
||||
>
|
||||
Use template
|
||||
{isPreparingTemplate ? 'Preparing...' : 'Use template'}
|
||||
<span className='relative h-[10px] w-[10px] shrink-0'>
|
||||
<ChevronDown className='-rotate-90 absolute inset-0 h-[10px] w-[10px] transition-opacity duration-150 group-hover/cta:opacity-0' />
|
||||
<svg
|
||||
@@ -531,7 +578,7 @@ export default function Templates() {
|
||||
/>
|
||||
</svg>
|
||||
</span>
|
||||
</Link>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -2,8 +2,14 @@
|
||||
|
||||
import { useCallback, useEffect, useRef, useState } from 'react'
|
||||
import { createLogger } from '@sim/logger'
|
||||
import { useParams } from 'next/navigation'
|
||||
import { LandingPromptStorage } from '@/lib/core/utils/browser-storage'
|
||||
import { useParams, useRouter } from 'next/navigation'
|
||||
import {
|
||||
LandingPromptStorage,
|
||||
LandingTemplateStorage,
|
||||
type LandingWorkflowSeed,
|
||||
LandingWorkflowSeedStorage,
|
||||
} from '@/lib/core/utils/browser-storage'
|
||||
import { persistImportedWorkflow } from '@/lib/workflows/operations/import-export'
|
||||
import { MessageContent, MothershipView, UserInput } from './components'
|
||||
import { useChat } from './hooks'
|
||||
|
||||
@@ -15,19 +21,80 @@ interface HomeProps {
|
||||
|
||||
export function Home({ chatId }: HomeProps = {}) {
|
||||
const { workspaceId } = useParams<{ workspaceId: string }>()
|
||||
const router = useRouter()
|
||||
const [inputValue, setInputValue] = useState('')
|
||||
const hasCheckedLandingPromptRef = useRef(false)
|
||||
const hasCheckedLandingStorageRef = useRef(false)
|
||||
|
||||
const createWorkflowFromLandingSeed = useCallback(
|
||||
async (seed: LandingWorkflowSeed) => {
|
||||
try {
|
||||
const result = await persistImportedWorkflow({
|
||||
content: seed.workflowJson,
|
||||
filename: `${seed.workflowName}.json`,
|
||||
workspaceId,
|
||||
nameOverride: seed.workflowName,
|
||||
descriptionOverride: seed.workflowDescription || 'Imported from landing template',
|
||||
colorOverride: seed.color,
|
||||
createWorkflow: async ({ name, description, color, workspaceId }) => {
|
||||
const response = await fetch('/api/workflows', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({
|
||||
name,
|
||||
description,
|
||||
color,
|
||||
workspaceId,
|
||||
}),
|
||||
})
|
||||
|
||||
if (!response.ok) {
|
||||
const errorData = await response.json().catch(() => ({}))
|
||||
throw new Error(errorData.error || 'Failed to create workflow')
|
||||
}
|
||||
|
||||
return response.json()
|
||||
},
|
||||
})
|
||||
|
||||
if (result?.workflowId) {
|
||||
window.location.href = `/workspace/${workspaceId}/w/${result.workflowId}`
|
||||
return
|
||||
}
|
||||
|
||||
logger.warn('Landing workflow seed did not produce a workflow', {
|
||||
templateId: seed.templateId,
|
||||
})
|
||||
} catch (error) {
|
||||
logger.error('Error creating workflow from landing workflow seed:', error)
|
||||
}
|
||||
},
|
||||
[workspaceId]
|
||||
)
|
||||
|
||||
useEffect(() => {
|
||||
if (hasCheckedLandingPromptRef.current) return
|
||||
hasCheckedLandingPromptRef.current = true
|
||||
if (hasCheckedLandingStorageRef.current) return
|
||||
hasCheckedLandingStorageRef.current = true
|
||||
|
||||
const workflowSeed = LandingWorkflowSeedStorage.consume()
|
||||
if (workflowSeed) {
|
||||
logger.info('Retrieved landing page workflow seed, creating workflow in workspace')
|
||||
void createWorkflowFromLandingSeed(workflowSeed)
|
||||
return
|
||||
}
|
||||
|
||||
const templateId = LandingTemplateStorage.consume()
|
||||
if (templateId) {
|
||||
logger.info('Retrieved landing page template, redirecting to template detail')
|
||||
router.replace(`/workspace/${workspaceId}/templates/${templateId}?use=true`)
|
||||
return
|
||||
}
|
||||
|
||||
const prompt = LandingPromptStorage.consume()
|
||||
if (prompt) {
|
||||
logger.info('Retrieved landing page prompt, populating home input')
|
||||
setInputValue(prompt)
|
||||
}
|
||||
}, [])
|
||||
}, [createWorkflowFromLandingSeed, workspaceId, router])
|
||||
|
||||
const {
|
||||
messages,
|
||||
|
||||
@@ -3,10 +3,9 @@ import { createLogger } from '@sim/logger'
|
||||
import { useQueryClient } from '@tanstack/react-query'
|
||||
import { useRouter } from 'next/navigation'
|
||||
import {
|
||||
extractWorkflowName,
|
||||
extractWorkflowsFromFiles,
|
||||
extractWorkflowsFromZip,
|
||||
parseWorkflowJson,
|
||||
persistImportedWorkflow,
|
||||
sanitizePathSegment,
|
||||
} from '@/lib/workflows/operations/import-export'
|
||||
import { folderKeys, useCreateFolder } from '@/hooks/queries/folders'
|
||||
@@ -42,75 +41,25 @@ export function useImportWorkflow({ workspaceId }: UseImportWorkflowProps) {
|
||||
*/
|
||||
const importSingleWorkflow = useCallback(
|
||||
async (content: string, filename: string, folderId?: string, sortOrder?: number) => {
|
||||
const { data: workflowData, errors: parseErrors } = parseWorkflowJson(content)
|
||||
|
||||
if (!workflowData || parseErrors.length > 0) {
|
||||
logger.warn(`Failed to parse ${filename}:`, parseErrors)
|
||||
return null
|
||||
}
|
||||
|
||||
const workflowName = extractWorkflowName(content, filename)
|
||||
clearDiff()
|
||||
|
||||
const workflowColor =
|
||||
(workflowData.metadata as { color?: string } | undefined)?.color || '#3972F6'
|
||||
|
||||
const result = await createWorkflowMutation.mutateAsync({
|
||||
name: workflowName,
|
||||
description: workflowData.metadata?.description || 'Imported from JSON',
|
||||
const result = await persistImportedWorkflow({
|
||||
content,
|
||||
filename,
|
||||
workspaceId,
|
||||
folderId: folderId || undefined,
|
||||
folderId,
|
||||
sortOrder,
|
||||
color: workflowColor,
|
||||
})
|
||||
const newWorkflowId = result.id
|
||||
|
||||
const stateResponse = await fetch(`/api/workflows/${newWorkflowId}/state`, {
|
||||
method: 'PUT',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify(workflowData),
|
||||
createWorkflow: async ({ name, description, color, workspaceId, folderId, sortOrder }) =>
|
||||
createWorkflowMutation.mutateAsync({
|
||||
name,
|
||||
description,
|
||||
color,
|
||||
workspaceId,
|
||||
folderId,
|
||||
sortOrder,
|
||||
}),
|
||||
})
|
||||
|
||||
if (!stateResponse.ok) {
|
||||
logger.error(`Failed to save workflow state for ${newWorkflowId}`)
|
||||
}
|
||||
|
||||
if (workflowData.variables) {
|
||||
const variablesArray = Array.isArray(workflowData.variables)
|
||||
? workflowData.variables
|
||||
: Object.values(workflowData.variables)
|
||||
|
||||
if (variablesArray.length > 0) {
|
||||
const variablesRecord: Record<
|
||||
string,
|
||||
{ id: string; workflowId: string; name: string; type: string; value: unknown }
|
||||
> = {}
|
||||
|
||||
for (const v of variablesArray) {
|
||||
const id = typeof v.id === 'string' && v.id.trim() ? v.id : crypto.randomUUID()
|
||||
variablesRecord[id] = {
|
||||
id,
|
||||
workflowId: newWorkflowId,
|
||||
name: v.name,
|
||||
type: v.type,
|
||||
value: v.value,
|
||||
}
|
||||
}
|
||||
|
||||
const variablesResponse = await fetch(`/api/workflows/${newWorkflowId}/variables`, {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({ variables: variablesRecord }),
|
||||
})
|
||||
|
||||
if (!variablesResponse.ok) {
|
||||
logger.error(`Failed to save variables for ${newWorkflowId}`)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
logger.info(`Imported workflow: ${workflowName}`)
|
||||
return newWorkflowId
|
||||
return result?.workflowId ?? null
|
||||
},
|
||||
[clearDiff, createWorkflowMutation, workspaceId]
|
||||
)
|
||||
|
||||
@@ -104,6 +104,8 @@ export class BrowserStorage {
|
||||
*/
|
||||
export const STORAGE_KEYS = {
|
||||
LANDING_PAGE_PROMPT: 'sim_landing_page_prompt',
|
||||
LANDING_PAGE_TEMPLATE: 'sim_landing_page_template',
|
||||
LANDING_PAGE_WORKFLOW_SEED: 'sim_landing_page_workflow_seed',
|
||||
} as const
|
||||
|
||||
/**
|
||||
@@ -187,3 +189,104 @@ export class LandingPromptStorage {
|
||||
return BrowserStorage.removeItem(LandingPromptStorage.KEY)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Specialized utility for managing a template selection from the landing page.
|
||||
* Stores the marketplace template ID so it can be consumed after signup.
|
||||
*/
|
||||
export class LandingTemplateStorage {
|
||||
private static readonly KEY = STORAGE_KEYS.LANDING_PAGE_TEMPLATE
|
||||
|
||||
/**
|
||||
* Store a template ID selected on the landing page
|
||||
* @param templateId - The marketplace template UUID
|
||||
*/
|
||||
static store(templateId: string): boolean {
|
||||
if (!templateId || templateId.trim().length === 0) {
|
||||
return false
|
||||
}
|
||||
|
||||
return BrowserStorage.setItem(LandingTemplateStorage.KEY, {
|
||||
templateId: templateId.trim(),
|
||||
timestamp: Date.now(),
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve and consume the stored template ID
|
||||
* @param maxAge - Maximum age in milliseconds (default: 24 hours)
|
||||
*/
|
||||
static consume(maxAge: number = 24 * 60 * 60 * 1000): string | null {
|
||||
const data = BrowserStorage.getItem<{ templateId: string; timestamp: number } | null>(
|
||||
LandingTemplateStorage.KEY,
|
||||
null
|
||||
)
|
||||
|
||||
if (!data || !data.templateId || !data.timestamp) {
|
||||
return null
|
||||
}
|
||||
|
||||
if (Date.now() - data.timestamp > maxAge) {
|
||||
LandingTemplateStorage.clear()
|
||||
return null
|
||||
}
|
||||
|
||||
LandingTemplateStorage.clear()
|
||||
return data.templateId
|
||||
}
|
||||
|
||||
static clear(): boolean {
|
||||
return BrowserStorage.removeItem(LandingTemplateStorage.KEY)
|
||||
}
|
||||
}
|
||||
|
||||
export interface LandingWorkflowSeed {
|
||||
templateId: string
|
||||
workflowName: string
|
||||
workflowDescription?: string
|
||||
color?: string
|
||||
workflowJson: string
|
||||
}
|
||||
|
||||
/**
|
||||
* Specialized utility for managing a landing-page workflow seed.
|
||||
* Stores a workflow export JSON so it can be imported after signup.
|
||||
*/
|
||||
export class LandingWorkflowSeedStorage {
|
||||
private static readonly KEY = STORAGE_KEYS.LANDING_PAGE_WORKFLOW_SEED
|
||||
|
||||
static store(seed: LandingWorkflowSeed): boolean {
|
||||
if (!seed.templateId || !seed.workflowName || !seed.workflowJson) {
|
||||
return false
|
||||
}
|
||||
|
||||
return BrowserStorage.setItem(LandingWorkflowSeedStorage.KEY, {
|
||||
...seed,
|
||||
timestamp: Date.now(),
|
||||
})
|
||||
}
|
||||
|
||||
static consume(maxAge: number = 24 * 60 * 60 * 1000): LandingWorkflowSeed | null {
|
||||
const data = BrowserStorage.getItem<(LandingWorkflowSeed & { timestamp: number }) | null>(
|
||||
LandingWorkflowSeedStorage.KEY,
|
||||
null
|
||||
)
|
||||
|
||||
if (!data || !data.templateId || !data.workflowName || !data.timestamp || !data.workflowJson) {
|
||||
return null
|
||||
}
|
||||
|
||||
if (Date.now() - data.timestamp > maxAge) {
|
||||
LandingWorkflowSeedStorage.clear()
|
||||
return null
|
||||
}
|
||||
|
||||
LandingWorkflowSeedStorage.clear()
|
||||
const { timestamp: _timestamp, ...seed } = data
|
||||
return seed
|
||||
}
|
||||
|
||||
static clear(): boolean {
|
||||
return BrowserStorage.removeItem(LandingWorkflowSeedStorage.KEY)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -616,6 +616,114 @@ export function parseWorkflowJson(
|
||||
}
|
||||
}
|
||||
|
||||
interface CreateImportedWorkflowInput {
|
||||
name: string
|
||||
description: string
|
||||
color: string
|
||||
workspaceId: string
|
||||
folderId?: string
|
||||
sortOrder?: number
|
||||
}
|
||||
|
||||
interface CreatedImportedWorkflow {
|
||||
id: string
|
||||
}
|
||||
|
||||
interface PersistImportedWorkflowOptions {
|
||||
content: string
|
||||
filename: string
|
||||
workspaceId: string
|
||||
folderId?: string
|
||||
sortOrder?: number
|
||||
nameOverride?: string
|
||||
descriptionOverride?: string
|
||||
colorOverride?: string
|
||||
createWorkflow: (input: CreateImportedWorkflowInput) => Promise<CreatedImportedWorkflow>
|
||||
}
|
||||
|
||||
export async function persistImportedWorkflow({
|
||||
content,
|
||||
filename,
|
||||
workspaceId,
|
||||
folderId,
|
||||
sortOrder,
|
||||
nameOverride,
|
||||
descriptionOverride,
|
||||
colorOverride,
|
||||
createWorkflow,
|
||||
}: PersistImportedWorkflowOptions): Promise<{ workflowId: string; workflowName: string } | null> {
|
||||
const { data: workflowData, errors: parseErrors } = parseWorkflowJson(content)
|
||||
|
||||
if (!workflowData || parseErrors.length > 0) {
|
||||
logger.warn(`Failed to parse imported workflow ${filename}:`, parseErrors)
|
||||
return null
|
||||
}
|
||||
|
||||
const workflowName = nameOverride || extractWorkflowName(content, filename)
|
||||
const workflowColor =
|
||||
colorOverride || (workflowData.metadata as { color?: string } | undefined)?.color || '#3972F6'
|
||||
|
||||
const createdWorkflow = await createWorkflow({
|
||||
name: workflowName,
|
||||
description: descriptionOverride || workflowData.metadata?.description || 'Imported from JSON',
|
||||
workspaceId,
|
||||
folderId,
|
||||
sortOrder,
|
||||
color: workflowColor,
|
||||
})
|
||||
|
||||
const newWorkflowId = createdWorkflow.id
|
||||
|
||||
const stateResponse = await fetch(`/api/workflows/${newWorkflowId}/state`, {
|
||||
method: 'PUT',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify(workflowData),
|
||||
})
|
||||
|
||||
if (!stateResponse.ok) {
|
||||
throw new Error(`Failed to save workflow state for ${newWorkflowId}`)
|
||||
}
|
||||
|
||||
if (workflowData.variables) {
|
||||
const variablesArray = Array.isArray(workflowData.variables)
|
||||
? workflowData.variables
|
||||
: Object.values(workflowData.variables)
|
||||
|
||||
if (variablesArray.length > 0) {
|
||||
const variablesRecord: Record<
|
||||
string,
|
||||
{ id: string; workflowId: string; name: string; type: string; value: unknown }
|
||||
> = {}
|
||||
|
||||
for (const variable of variablesArray) {
|
||||
const id =
|
||||
typeof variable.id === 'string' && variable.id.trim() ? variable.id : crypto.randomUUID()
|
||||
|
||||
variablesRecord[id] = {
|
||||
id,
|
||||
workflowId: newWorkflowId,
|
||||
name: variable.name,
|
||||
type: variable.type,
|
||||
value: variable.value,
|
||||
}
|
||||
}
|
||||
|
||||
const variablesResponse = await fetch(`/api/workflows/${newWorkflowId}/variables`, {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({ variables: variablesRecord }),
|
||||
})
|
||||
|
||||
if (!variablesResponse.ok) {
|
||||
throw new Error(`Failed to save variables for ${newWorkflowId}`)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
logger.info(`Imported workflow: ${workflowName}`)
|
||||
return { workflowId: newWorkflowId, workflowName }
|
||||
}
|
||||
|
||||
export interface GenerateWorkflowJsonOptions {
|
||||
workflowId: string
|
||||
name?: string
|
||||
|
||||
@@ -0,0 +1,467 @@
|
||||
{
|
||||
"version": "1.0",
|
||||
"exportedAt": "2026-03-09T21:40:19.012Z",
|
||||
"state": {
|
||||
"blocks": {
|
||||
"c08eabea-4a15-43dd-ab0e-324f8473cdda": {
|
||||
"id": "c08eabea-4a15-43dd-ab0e-324f8473cdda",
|
||||
"type": "schedule",
|
||||
"name": "Schedule",
|
||||
"position": {
|
||||
"x": 150,
|
||||
"y": 150
|
||||
},
|
||||
"enabled": true,
|
||||
"horizontalHandles": true,
|
||||
"advancedMode": false,
|
||||
"triggerMode": true,
|
||||
"height": 114,
|
||||
"subBlocks": {
|
||||
"timezone": {
|
||||
"id": "timezone",
|
||||
"type": "short-input",
|
||||
"value": "UTC"
|
||||
},
|
||||
"inputFormat": {
|
||||
"id": "inputFormat",
|
||||
"type": "input-format",
|
||||
"value": [
|
||||
{
|
||||
"id": "6bad8048-89f7-418a-8419-bd04b1783fc5",
|
||||
"name": "",
|
||||
"type": "string",
|
||||
"value": "",
|
||||
"collapsed": false
|
||||
}
|
||||
]
|
||||
},
|
||||
"hourlyMinute": {
|
||||
"id": "hourlyMinute",
|
||||
"type": "short-input",
|
||||
"value": "0"
|
||||
},
|
||||
"scheduleType": {
|
||||
"id": "scheduleType",
|
||||
"type": "short-input",
|
||||
"value": "hourly"
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"files": {
|
||||
"type": "file[]",
|
||||
"description": "User uploaded files"
|
||||
},
|
||||
"input": {
|
||||
"type": "string",
|
||||
"description": "Primary user input or message"
|
||||
},
|
||||
"conversationId": {
|
||||
"type": "string",
|
||||
"description": "Conversation thread identifier"
|
||||
}
|
||||
},
|
||||
"data": {},
|
||||
"locked": false
|
||||
},
|
||||
"a6d33ecb-4115-4979-9a3b-d3f1caf67288": {
|
||||
"id": "a6d33ecb-4115-4979-9a3b-d3f1caf67288",
|
||||
"type": "notion_v2",
|
||||
"name": "Notion",
|
||||
"position": {
|
||||
"x": 1150,
|
||||
"y": 150
|
||||
},
|
||||
"enabled": true,
|
||||
"horizontalHandles": true,
|
||||
"advancedMode": false,
|
||||
"triggerMode": false,
|
||||
"height": 230,
|
||||
"subBlocks": {
|
||||
"query": {
|
||||
"id": "query",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"sorts": {
|
||||
"id": "sorts",
|
||||
"type": "code",
|
||||
"value": null
|
||||
},
|
||||
"title": {
|
||||
"id": "title",
|
||||
"type": "short-input",
|
||||
"value": "Brand Mentions Report"
|
||||
},
|
||||
"filter": {
|
||||
"id": "filter",
|
||||
"type": "code",
|
||||
"value": null
|
||||
},
|
||||
"pageId": {
|
||||
"id": "pageId",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"content": {
|
||||
"id": "content",
|
||||
"type": "short-input",
|
||||
"value": "<brandmentiontracker.summary>\n\nTotal Mentions: <brandmentiontracker.totalMentions>\n\nSentiment Breakdown:\n- Positive: <brandmentiontracker.sentimentBreakdown.positive>\n- Negative: <brandmentiontracker.sentimentBreakdown.negative>\n- Neutral: <brandmentiontracker.sentimentBreakdown.neutral>\n\nDetailed Mentions:\n<brandmentiontracker.mentions>"
|
||||
},
|
||||
"pageSize": {
|
||||
"id": "pageSize",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"parentId": {
|
||||
"id": "parentId",
|
||||
"type": "short-input",
|
||||
"value": "placeholder_database_id"
|
||||
},
|
||||
"operation": {
|
||||
"id": "operation",
|
||||
"type": "short-input",
|
||||
"value": "notion_create_page"
|
||||
},
|
||||
"credential": {
|
||||
"id": "credential",
|
||||
"type": "oauth-input",
|
||||
"value": null
|
||||
},
|
||||
"databaseId": {
|
||||
"id": "databaseId",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"filterType": {
|
||||
"id": "filterType",
|
||||
"type": "dropdown",
|
||||
"value": null
|
||||
},
|
||||
"properties": {
|
||||
"id": "properties",
|
||||
"type": "code",
|
||||
"value": null
|
||||
},
|
||||
"pageSelector": {
|
||||
"id": "pageSelector",
|
||||
"type": "file-selector",
|
||||
"value": null
|
||||
},
|
||||
"parentSelector": {
|
||||
"id": "parentSelector",
|
||||
"type": "file-selector",
|
||||
"value": null
|
||||
},
|
||||
"databaseSelector": {
|
||||
"id": "databaseSelector",
|
||||
"type": "project-selector",
|
||||
"value": null
|
||||
},
|
||||
"manualCredential": {
|
||||
"id": "manualCredential",
|
||||
"type": "short-input",
|
||||
"value": ""
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"id": {
|
||||
"type": "string",
|
||||
"description": "Page UUID"
|
||||
},
|
||||
"url": {
|
||||
"type": "string",
|
||||
"description": "Notion page URL"
|
||||
},
|
||||
"title": {
|
||||
"type": "string",
|
||||
"description": "Page title"
|
||||
},
|
||||
"created_time": {
|
||||
"type": "string",
|
||||
"description": "ISO 8601 creation timestamp"
|
||||
},
|
||||
"last_edited_time": {
|
||||
"type": "string",
|
||||
"description": "ISO 8601 last edit timestamp"
|
||||
}
|
||||
},
|
||||
"data": {
|
||||
"canonicalModes": {
|
||||
"pageId": "basic",
|
||||
"parentId": "basic",
|
||||
"databaseId": "basic",
|
||||
"oauthCredential": "basic"
|
||||
}
|
||||
},
|
||||
"locked": false
|
||||
},
|
||||
"e17ebe08-1e34-4a5a-920e-ebbc12e616c7": {
|
||||
"id": "e17ebe08-1e34-4a5a-920e-ebbc12e616c7",
|
||||
"type": "agent",
|
||||
"name": "brandMentionTracker",
|
||||
"position": {
|
||||
"x": 650,
|
||||
"y": 150
|
||||
},
|
||||
"enabled": true,
|
||||
"horizontalHandles": true,
|
||||
"advancedMode": false,
|
||||
"triggerMode": false,
|
||||
"height": 259,
|
||||
"subBlocks": {
|
||||
"model": {
|
||||
"id": "model",
|
||||
"type": "short-input",
|
||||
"value": "gemini-2.5-flash"
|
||||
},
|
||||
"tools": {
|
||||
"id": "tools",
|
||||
"type": "short-input",
|
||||
"value": [
|
||||
{
|
||||
"type": "reddit",
|
||||
"title": "Reddit Search",
|
||||
"params": {
|
||||
"credential": "cred_278965807788f2194a89d8926339c9bc"
|
||||
},
|
||||
"toolId": "reddit_search",
|
||||
"operation": "search",
|
||||
"isExpanded": true,
|
||||
"usageControl": "auto"
|
||||
},
|
||||
{
|
||||
"type": "x",
|
||||
"title": "X Search",
|
||||
"params": {
|
||||
"sortOrder": "recency",
|
||||
"credential": "cred_bca17ade6b5e43c6929f0716e239aa1d"
|
||||
},
|
||||
"toolId": "x_search",
|
||||
"operation": "x_search_tweets",
|
||||
"isExpanded": true,
|
||||
"usageControl": "auto"
|
||||
}
|
||||
]
|
||||
},
|
||||
"apiKey": {
|
||||
"id": "apiKey",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"skills": {
|
||||
"id": "skills",
|
||||
"type": "skill-input",
|
||||
"value": null
|
||||
},
|
||||
"messages": {
|
||||
"id": "messages",
|
||||
"type": "short-input",
|
||||
"value": "[{\"role\":\"user\",\"content\":\"Search for brand mentions on Reddit and X (Twitter). Find all recent mentions, discussions, and conversations about our brand. Compile a detailed report of what people are saying.\"}]"
|
||||
},
|
||||
"maxTokens": {
|
||||
"id": "maxTokens",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"verbosity": {
|
||||
"id": "verbosity",
|
||||
"type": "dropdown",
|
||||
"value": null
|
||||
},
|
||||
"memoryType": {
|
||||
"id": "memoryType",
|
||||
"type": "dropdown",
|
||||
"value": "none"
|
||||
},
|
||||
"temperature": {
|
||||
"id": "temperature",
|
||||
"type": "short-input",
|
||||
"value": 0.3
|
||||
},
|
||||
"azureEndpoint": {
|
||||
"id": "azureEndpoint",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"bedrockRegion": {
|
||||
"id": "bedrockRegion",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"thinkingLevel": {
|
||||
"id": "thinkingLevel",
|
||||
"type": "dropdown",
|
||||
"value": null
|
||||
},
|
||||
"vertexProject": {
|
||||
"id": "vertexProject",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"conversationId": {
|
||||
"id": "conversationId",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"responseFormat": {
|
||||
"id": "responseFormat",
|
||||
"type": "short-input",
|
||||
"value": "{\n \"name\": \"brand_mentions_report\",\n \"schema\": {\n \"additionalProperties\": false,\n \"properties\": {\n \"mentions\": {\n \"description\": \"Array of individual brand mentions\",\n \"items\": {\n \"additionalProperties\": false,\n \"properties\": {\n \"author\": {\n \"description\": \"Username of the person who posted\",\n \"type\": \"string\"\n },\n \"content\": {\n \"description\": \"Text content of the mention\",\n \"type\": \"string\"\n },\n \"engagement\": {\n \"description\": \"Engagement metrics like likes, retweets, upvotes\",\n \"type\": \"string\"\n },\n \"platform\": {\n \"description\": \"Platform where mention was found (Reddit or X)\",\n \"type\": \"string\"\n },\n \"sentiment\": {\n \"description\": \"Sentiment analysis (positive, negative, neutral)\",\n \"type\": \"string\"\n },\n \"timestamp\": {\n \"description\": \"When the mention was posted\",\n \"type\": \"string\"\n },\n \"url\": {\n \"description\": \"URL link to the post\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"platform\",\n \"author\",\n \"content\",\n \"url\",\n \"sentiment\",\n \"engagement\",\n \"timestamp\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"sentimentBreakdown\": {\n \"additionalProperties\": false,\n \"properties\": {\n \"negative\": {\n \"description\": \"Count of negative mentions\",\n \"type\": \"number\"\n },\n \"neutral\": {\n \"description\": \"Count of neutral mentions\",\n \"type\": \"number\"\n },\n \"positive\": {\n \"description\": \"Count of positive mentions\",\n \"type\": \"number\"\n }\n },\n \"required\": [\n \"positive\",\n \"negative\",\n \"neutral\"\n ],\n \"type\": \"object\"\n },\n \"summary\": {\n \"description\": \"Executive summary of brand mentions found\",\n \"type\": \"string\"\n },\n \"totalMentions\": {\n \"description\": \"Total number of brand mentions found\",\n \"type\": \"number\"\n }\n },\n \"required\": [\n \"summary\",\n \"totalMentions\",\n \"mentions\",\n \"sentimentBreakdown\"\n ],\n \"type\": \"object\"\n },\n \"strict\": true\n}"
|
||||
},
|
||||
"vertexLocation": {
|
||||
"id": "vertexLocation",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"azureApiVersion": {
|
||||
"id": "azureApiVersion",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"reasoningEffort": {
|
||||
"id": "reasoningEffort",
|
||||
"type": "dropdown",
|
||||
"value": null
|
||||
},
|
||||
"bedrockSecretKey": {
|
||||
"id": "bedrockSecretKey",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"manualCredential": {
|
||||
"id": "manualCredential",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"vertexCredential": {
|
||||
"id": "vertexCredential",
|
||||
"type": "oauth-input",
|
||||
"value": null
|
||||
},
|
||||
"slidingWindowSize": {
|
||||
"id": "slidingWindowSize",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"bedrockAccessKeyId": {
|
||||
"id": "bedrockAccessKeyId",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"slidingWindowTokens": {
|
||||
"id": "slidingWindowTokens",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"previousInteractionId": {
|
||||
"id": "previousInteractionId",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"summary": {
|
||||
"type": "string",
|
||||
"description": "Executive summary of brand mentions found"
|
||||
},
|
||||
"mentions": {
|
||||
"type": "array",
|
||||
"description": "Array of individual brand mentions"
|
||||
},
|
||||
"totalMentions": {
|
||||
"type": "number",
|
||||
"description": "Total number of brand mentions found"
|
||||
},
|
||||
"sentimentBreakdown": {
|
||||
"type": "object",
|
||||
"description": "Field from Agent: sentimentBreakdown"
|
||||
}
|
||||
},
|
||||
"data": {
|
||||
"canonicalModes": {
|
||||
"oauthCredential": "basic",
|
||||
"reddit:oauthCredential": "basic"
|
||||
}
|
||||
},
|
||||
"locked": false
|
||||
},
|
||||
"afb267b1-a20e-4755-8364-e4bb2ea99090": {
|
||||
"id": "afb267b1-a20e-4755-8364-e4bb2ea99090",
|
||||
"type": "note",
|
||||
"name": "Agent Instructions",
|
||||
"position": {
|
||||
"x": 648.353914639655,
|
||||
"y": -11.896402103479907
|
||||
},
|
||||
"enabled": true,
|
||||
"horizontalHandles": true,
|
||||
"advancedMode": false,
|
||||
"triggerMode": false,
|
||||
"height": 0,
|
||||
"subBlocks": {
|
||||
"content": {
|
||||
"id": "content",
|
||||
"type": "short-input",
|
||||
"value": "**Connect Reddit OAuth and X (Twitter) OAuth** for the tools"
|
||||
}
|
||||
},
|
||||
"outputs": {},
|
||||
"data": {},
|
||||
"locked": false
|
||||
},
|
||||
"197d74b5-3de0-4b52-af6c-a37d6b9eae5b": {
|
||||
"id": "197d74b5-3de0-4b52-af6c-a37d6b9eae5b",
|
||||
"type": "note",
|
||||
"name": "Notion Instructions",
|
||||
"position": {
|
||||
"x": 1142.0546019340711,
|
||||
"y": -5.948201051739943
|
||||
},
|
||||
"enabled": true,
|
||||
"horizontalHandles": true,
|
||||
"advancedMode": false,
|
||||
"triggerMode": false,
|
||||
"height": 0,
|
||||
"subBlocks": {
|
||||
"content": {
|
||||
"id": "content",
|
||||
"type": "short-input",
|
||||
"value": "**Connect Notion OAuth** and set your Brand Mentions database ID"
|
||||
}
|
||||
},
|
||||
"outputs": {},
|
||||
"data": {},
|
||||
"locked": false
|
||||
}
|
||||
},
|
||||
"edges": [
|
||||
{
|
||||
"id": "2861a55b-5cbe-4a8c-a313-ffe55d6a7bbf",
|
||||
"source": "c08eabea-4a15-43dd-ab0e-324f8473cdda",
|
||||
"target": "e17ebe08-1e34-4a5a-920e-ebbc12e616c7",
|
||||
"sourceHandle": "source",
|
||||
"targetHandle": "target",
|
||||
"type": "default",
|
||||
"data": {}
|
||||
},
|
||||
{
|
||||
"id": "525229fd-2095-4bea-84bc-bdc3c38f57bc",
|
||||
"source": "e17ebe08-1e34-4a5a-920e-ebbc12e616c7",
|
||||
"target": "a6d33ecb-4115-4979-9a3b-d3f1caf67288",
|
||||
"sourceHandle": "source",
|
||||
"targetHandle": "target",
|
||||
"type": "default",
|
||||
"data": {}
|
||||
}
|
||||
],
|
||||
"loops": {},
|
||||
"parallels": {},
|
||||
"metadata": {
|
||||
"name": "brand-mention",
|
||||
"description": "New workflow",
|
||||
"color": "#9333ea",
|
||||
"exportedAt": "2026-03-09T21:40:19.012Z"
|
||||
},
|
||||
"variables": {}
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,985 @@
|
||||
{
|
||||
"version": "1.0",
|
||||
"exportedAt": "2026-03-09T21:40:19.011Z",
|
||||
"state": {
|
||||
"blocks": {
|
||||
"8c66431f-268e-4a9f-8a82-911a87852551": {
|
||||
"id": "8c66431f-268e-4a9f-8a82-911a87852551",
|
||||
"type": "schedule",
|
||||
"name": "Schedule",
|
||||
"position": {
|
||||
"x": 150,
|
||||
"y": 150
|
||||
},
|
||||
"enabled": true,
|
||||
"horizontalHandles": true,
|
||||
"advancedMode": false,
|
||||
"triggerMode": true,
|
||||
"height": 143,
|
||||
"subBlocks": {
|
||||
"timezone": {
|
||||
"id": "timezone",
|
||||
"type": "short-input",
|
||||
"value": "UTC"
|
||||
},
|
||||
"dailyTime": {
|
||||
"id": "dailyTime",
|
||||
"type": "short-input",
|
||||
"value": "09:00"
|
||||
},
|
||||
"inputFormat": {
|
||||
"id": "inputFormat",
|
||||
"type": "input-format",
|
||||
"value": [
|
||||
{
|
||||
"id": "302f0e72-397c-447a-a606-7288ed3a4783",
|
||||
"name": "",
|
||||
"type": "string",
|
||||
"value": "",
|
||||
"collapsed": false
|
||||
}
|
||||
]
|
||||
},
|
||||
"scheduleType": {
|
||||
"id": "scheduleType",
|
||||
"type": "short-input",
|
||||
"value": "daily"
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"files": {
|
||||
"type": "file[]",
|
||||
"description": "User uploaded files"
|
||||
},
|
||||
"input": {
|
||||
"type": "string",
|
||||
"description": "Primary user input or message"
|
||||
},
|
||||
"conversationId": {
|
||||
"type": "string",
|
||||
"description": "Conversation thread identifier"
|
||||
}
|
||||
},
|
||||
"data": {},
|
||||
"locked": false
|
||||
},
|
||||
"cc8cb3bb-ed7b-434e-b04e-8156ecf238af": {
|
||||
"id": "cc8cb3bb-ed7b-434e-b04e-8156ecf238af",
|
||||
"type": "slack",
|
||||
"name": "Slack",
|
||||
"position": {
|
||||
"x": 1147.930096816991,
|
||||
"y": 147.9300968169909
|
||||
},
|
||||
"enabled": true,
|
||||
"horizontalHandles": true,
|
||||
"advancedMode": false,
|
||||
"triggerMode": false,
|
||||
"height": 346,
|
||||
"subBlocks": {
|
||||
"text": {
|
||||
"id": "text",
|
||||
"type": "short-input",
|
||||
"value": "<agent.content>"
|
||||
},
|
||||
"files": {
|
||||
"id": "files",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"limit": {
|
||||
"id": "limit",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"title": {
|
||||
"id": "title",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"blocks": {
|
||||
"id": "blocks",
|
||||
"type": "code",
|
||||
"value": null
|
||||
},
|
||||
"fileId": {
|
||||
"id": "fileId",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"oldest": {
|
||||
"id": "oldest",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"userId": {
|
||||
"id": "userId",
|
||||
"type": "user-selector",
|
||||
"value": null
|
||||
},
|
||||
"viewId": {
|
||||
"id": "viewId",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"channel": {
|
||||
"id": "channel",
|
||||
"type": "channel-selector",
|
||||
"value": null
|
||||
},
|
||||
"content": {
|
||||
"id": "content",
|
||||
"type": "long-input",
|
||||
"value": null
|
||||
},
|
||||
"botToken": {
|
||||
"id": "botToken",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"dmUserId": {
|
||||
"id": "dmUserId",
|
||||
"type": "user-selector",
|
||||
"value": null
|
||||
},
|
||||
"threadTs": {
|
||||
"id": "threadTs",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"viewHash": {
|
||||
"id": "viewHash",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"emojiName": {
|
||||
"id": "emojiName",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"operation": {
|
||||
"id": "operation",
|
||||
"type": "short-input",
|
||||
"value": "send"
|
||||
},
|
||||
"sectionId": {
|
||||
"id": "sectionId",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"userLimit": {
|
||||
"id": "userLimit",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"authMethod": {
|
||||
"id": "authMethod",
|
||||
"type": "short-input",
|
||||
"value": "oauth"
|
||||
},
|
||||
"credential": {
|
||||
"id": "credential",
|
||||
"type": "oauth-input",
|
||||
"value": null
|
||||
},
|
||||
"updateText": {
|
||||
"id": "updateText",
|
||||
"type": "long-input",
|
||||
"value": null
|
||||
},
|
||||
"canvasTitle": {
|
||||
"id": "canvasTitle",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"memberLimit": {
|
||||
"id": "memberLimit",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"threadLimit": {
|
||||
"id": "threadLimit",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"viewPayload": {
|
||||
"id": "viewPayload",
|
||||
"type": "code",
|
||||
"value": null
|
||||
},
|
||||
"channelLimit": {
|
||||
"id": "channelLimit",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"editCanvasId": {
|
||||
"id": "editCanvasId",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"includeFiles": {
|
||||
"id": "includeFiles",
|
||||
"type": "switch",
|
||||
"value": null
|
||||
},
|
||||
"manualUserId": {
|
||||
"id": "manualUserId",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"canvasContent": {
|
||||
"id": "canvasContent",
|
||||
"type": "long-input",
|
||||
"value": null
|
||||
},
|
||||
"ephemeralUser": {
|
||||
"id": "ephemeralUser",
|
||||
"type": "user-selector",
|
||||
"value": null
|
||||
},
|
||||
"manualChannel": {
|
||||
"id": "manualChannel",
|
||||
"type": "short-input",
|
||||
"value": ""
|
||||
},
|
||||
"messageFormat": {
|
||||
"id": "messageFormat",
|
||||
"type": "short-input",
|
||||
"value": "text"
|
||||
},
|
||||
"publishUserId": {
|
||||
"id": "publishUserId",
|
||||
"type": "user-selector",
|
||||
"value": null
|
||||
},
|
||||
"signingSecret": {
|
||||
"id": "signingSecret",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"viewTriggerId": {
|
||||
"id": "viewTriggerId",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"includeDeleted": {
|
||||
"id": "includeDeleted",
|
||||
"type": "dropdown",
|
||||
"value": null
|
||||
},
|
||||
"includePrivate": {
|
||||
"id": "includePrivate",
|
||||
"type": "dropdown",
|
||||
"value": null
|
||||
},
|
||||
"manualDmUserId": {
|
||||
"id": "manualDmUserId",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"presenceUserId": {
|
||||
"id": "presenceUserId",
|
||||
"type": "user-selector",
|
||||
"value": null
|
||||
},
|
||||
"viewExternalId": {
|
||||
"id": "viewExternalId",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"attachmentFiles": {
|
||||
"id": "attachmentFiles",
|
||||
"type": "file-upload",
|
||||
"value": null
|
||||
},
|
||||
"canvasOperation": {
|
||||
"id": "canvasOperation",
|
||||
"type": "dropdown",
|
||||
"value": null
|
||||
},
|
||||
"deleteTimestamp": {
|
||||
"id": "deleteTimestamp",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"destinationType": {
|
||||
"id": "destinationType",
|
||||
"type": "short-input",
|
||||
"value": "channel"
|
||||
},
|
||||
"updateTimestamp": {
|
||||
"id": "updateTimestamp",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"downloadFileName": {
|
||||
"id": "downloadFileName",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"manualCredential": {
|
||||
"id": "manualCredential",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"includeNumMembers": {
|
||||
"id": "includeNumMembers",
|
||||
"type": "dropdown",
|
||||
"value": null
|
||||
},
|
||||
"reactionTimestamp": {
|
||||
"id": "reactionTimestamp",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"webhookUrlDisplay": {
|
||||
"id": "webhookUrlDisplay",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"channelCanvasTitle": {
|
||||
"id": "channelCanvasTitle",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"getThreadTimestamp": {
|
||||
"id": "getThreadTimestamp",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"getMessageTimestamp": {
|
||||
"id": "getMessageTimestamp",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"manualEphemeralUser": {
|
||||
"id": "manualEphemeralUser",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"manualPublishUserId": {
|
||||
"id": "manualPublishUserId",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"triggerInstructions": {
|
||||
"id": "triggerInstructions",
|
||||
"type": "text",
|
||||
"value": null
|
||||
},
|
||||
"channelCanvasContent": {
|
||||
"id": "channelCanvasContent",
|
||||
"type": "long-input",
|
||||
"value": null
|
||||
},
|
||||
"manualPresenceUserId": {
|
||||
"id": "manualPresenceUserId",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"viewInteractivityPointer": {
|
||||
"id": "viewInteractivityPointer",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"samplePayload_slack_webhook": {
|
||||
"id": "samplePayload_slack_webhook",
|
||||
"type": "code",
|
||||
"value": null
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"ts": {
|
||||
"type": "string",
|
||||
"description": "Message timestamp"
|
||||
},
|
||||
"files": {
|
||||
"type": "file[]",
|
||||
"description": "Files attached to the message"
|
||||
},
|
||||
"channel": {
|
||||
"type": "string",
|
||||
"description": "Channel ID where message was sent"
|
||||
},
|
||||
"message": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"ts": {
|
||||
"type": "string",
|
||||
"description": "Message timestamp (unique identifier)"
|
||||
},
|
||||
"team": {
|
||||
"type": "string",
|
||||
"optional": true,
|
||||
"description": "Team/workspace ID"
|
||||
},
|
||||
"text": {
|
||||
"type": "string",
|
||||
"description": "Message text content"
|
||||
},
|
||||
"type": {
|
||||
"type": "string",
|
||||
"description": "Message type (usually \"message\")"
|
||||
},
|
||||
"user": {
|
||||
"type": "string",
|
||||
"optional": true,
|
||||
"description": "User ID who sent the message"
|
||||
},
|
||||
"files": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "string",
|
||||
"description": "Unique file identifier"
|
||||
},
|
||||
"mode": {
|
||||
"type": "string",
|
||||
"optional": true,
|
||||
"description": "File mode (hosted, external, etc.)"
|
||||
},
|
||||
"name": {
|
||||
"type": "string",
|
||||
"description": "File name"
|
||||
},
|
||||
"size": {
|
||||
"type": "number",
|
||||
"description": "File size in bytes"
|
||||
},
|
||||
"mimetype": {
|
||||
"type": "string",
|
||||
"description": "MIME type of the file"
|
||||
},
|
||||
"permalink": {
|
||||
"type": "string",
|
||||
"optional": true,
|
||||
"description": "Permanent link to the file"
|
||||
},
|
||||
"url_private": {
|
||||
"type": "string",
|
||||
"optional": true,
|
||||
"description": "Private download URL (requires auth)"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Files attached to the message"
|
||||
},
|
||||
"blocks": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"type": {
|
||||
"type": "string",
|
||||
"description": "Block type (section, divider, image, actions, etc.)"
|
||||
},
|
||||
"block_id": {
|
||||
"type": "string",
|
||||
"optional": true,
|
||||
"description": "Unique block identifier"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Block Kit blocks in the message"
|
||||
},
|
||||
"bot_id": {
|
||||
"type": "string",
|
||||
"optional": true,
|
||||
"description": "Bot ID if sent by a bot"
|
||||
},
|
||||
"edited": {
|
||||
"type": "object",
|
||||
"optional": true,
|
||||
"properties": {
|
||||
"ts": {
|
||||
"type": "string",
|
||||
"description": "Timestamp of the edit"
|
||||
},
|
||||
"user": {
|
||||
"type": "string",
|
||||
"description": "User ID who edited the message"
|
||||
}
|
||||
},
|
||||
"description": "Edit information if message was edited"
|
||||
},
|
||||
"channel": {
|
||||
"type": "string",
|
||||
"optional": true,
|
||||
"description": "Channel ID"
|
||||
},
|
||||
"subtype": {
|
||||
"type": "string",
|
||||
"optional": true,
|
||||
"description": "Message subtype (bot_message, file_share, etc.)"
|
||||
},
|
||||
"username": {
|
||||
"type": "string",
|
||||
"optional": true,
|
||||
"description": "Display username"
|
||||
},
|
||||
"last_read": {
|
||||
"type": "string",
|
||||
"optional": true,
|
||||
"description": "Timestamp of last read message"
|
||||
},
|
||||
"permalink": {
|
||||
"type": "string",
|
||||
"optional": true,
|
||||
"description": "Permanent URL to the message"
|
||||
},
|
||||
"pinned_to": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"description": "Channel ID"
|
||||
},
|
||||
"optional": true,
|
||||
"description": "Channel IDs where message is pinned"
|
||||
},
|
||||
"reactions": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"name": {
|
||||
"type": "string",
|
||||
"description": "Emoji name (without colons)"
|
||||
},
|
||||
"count": {
|
||||
"type": "number",
|
||||
"description": "Number of times this reaction was added"
|
||||
},
|
||||
"users": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"description": "User ID"
|
||||
},
|
||||
"description": "Array of user IDs who reacted"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Reactions on this message"
|
||||
},
|
||||
"thread_ts": {
|
||||
"type": "string",
|
||||
"optional": true,
|
||||
"description": "Parent message timestamp (for threaded replies)"
|
||||
},
|
||||
"is_starred": {
|
||||
"type": "boolean",
|
||||
"optional": true,
|
||||
"description": "Whether message is starred by user"
|
||||
},
|
||||
"subscribed": {
|
||||
"type": "boolean",
|
||||
"optional": true,
|
||||
"description": "Whether user is subscribed to thread"
|
||||
},
|
||||
"attachments": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "number",
|
||||
"optional": true,
|
||||
"description": "Attachment ID"
|
||||
},
|
||||
"ts": {
|
||||
"type": "string",
|
||||
"optional": true,
|
||||
"description": "Timestamp shown in footer"
|
||||
},
|
||||
"text": {
|
||||
"type": "string",
|
||||
"optional": true,
|
||||
"description": "Main attachment text"
|
||||
},
|
||||
"color": {
|
||||
"type": "string",
|
||||
"optional": true,
|
||||
"description": "Color bar hex code or preset"
|
||||
},
|
||||
"title": {
|
||||
"type": "string",
|
||||
"optional": true,
|
||||
"description": "Attachment title"
|
||||
},
|
||||
"footer": {
|
||||
"type": "string",
|
||||
"optional": true,
|
||||
"description": "Footer text"
|
||||
},
|
||||
"pretext": {
|
||||
"type": "string",
|
||||
"optional": true,
|
||||
"description": "Text shown before attachment"
|
||||
},
|
||||
"fallback": {
|
||||
"type": "string",
|
||||
"optional": true,
|
||||
"description": "Plain text summary"
|
||||
},
|
||||
"image_url": {
|
||||
"type": "string",
|
||||
"optional": true,
|
||||
"description": "Image URL"
|
||||
},
|
||||
"thumb_url": {
|
||||
"type": "string",
|
||||
"optional": true,
|
||||
"description": "Thumbnail URL"
|
||||
},
|
||||
"title_link": {
|
||||
"type": "string",
|
||||
"optional": true,
|
||||
"description": "Title link URL"
|
||||
},
|
||||
"author_icon": {
|
||||
"type": "string",
|
||||
"optional": true,
|
||||
"description": "Author icon URL"
|
||||
},
|
||||
"author_link": {
|
||||
"type": "string",
|
||||
"optional": true,
|
||||
"description": "Author link URL"
|
||||
},
|
||||
"author_name": {
|
||||
"type": "string",
|
||||
"optional": true,
|
||||
"description": "Author display name"
|
||||
},
|
||||
"footer_icon": {
|
||||
"type": "string",
|
||||
"optional": true,
|
||||
"description": "Footer icon URL"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Legacy attachments on the message"
|
||||
},
|
||||
"reply_count": {
|
||||
"type": "number",
|
||||
"optional": true,
|
||||
"description": "Total number of replies in thread"
|
||||
},
|
||||
"latest_reply": {
|
||||
"type": "string",
|
||||
"optional": true,
|
||||
"description": "Timestamp of most recent reply"
|
||||
},
|
||||
"unread_count": {
|
||||
"type": "number",
|
||||
"optional": true,
|
||||
"description": "Number of unread messages in thread"
|
||||
},
|
||||
"parent_user_id": {
|
||||
"type": "string",
|
||||
"optional": true,
|
||||
"description": "User ID of thread parent message author"
|
||||
},
|
||||
"reply_users_count": {
|
||||
"type": "number",
|
||||
"optional": true,
|
||||
"description": "Number of unique users who replied"
|
||||
}
|
||||
},
|
||||
"description": "Complete message object with all properties returned by Slack"
|
||||
},
|
||||
"fileCount": {
|
||||
"type": "number",
|
||||
"description": "Number of files uploaded (when files are attached)"
|
||||
}
|
||||
},
|
||||
"data": {
|
||||
"canonicalModes": {
|
||||
"files": "basic",
|
||||
"userId": "basic",
|
||||
"channel": "basic",
|
||||
"dmUserId": "basic",
|
||||
"ephemeralUser": "basic",
|
||||
"publishUserId": "basic",
|
||||
"presenceUserId": "basic",
|
||||
"oauthCredential": "basic"
|
||||
}
|
||||
},
|
||||
"locked": false
|
||||
},
|
||||
"1d05547e-1846-4049-9fc4-702f2f485ae6": {
|
||||
"id": "1d05547e-1846-4049-9fc4-702f2f485ae6",
|
||||
"type": "agent",
|
||||
"name": "Agent",
|
||||
"position": {
|
||||
"x": 650,
|
||||
"y": 150
|
||||
},
|
||||
"enabled": true,
|
||||
"horizontalHandles": true,
|
||||
"advancedMode": false,
|
||||
"triggerMode": false,
|
||||
"height": 288,
|
||||
"subBlocks": {
|
||||
"model": {
|
||||
"id": "model",
|
||||
"type": "short-input",
|
||||
"value": ""
|
||||
},
|
||||
"tools": {
|
||||
"id": "tools",
|
||||
"type": "short-input",
|
||||
"value": [
|
||||
{
|
||||
"type": "airtable",
|
||||
"title": "Airtable - List Records",
|
||||
"params": {
|
||||
"credential": "cred_0fe457b3f0f1dde225e2d8154ee805e7"
|
||||
},
|
||||
"toolId": "airtable_list",
|
||||
"operation": "list",
|
||||
"isExpanded": true,
|
||||
"usageControl": "auto"
|
||||
}
|
||||
]
|
||||
},
|
||||
"apiKey": {
|
||||
"id": "apiKey",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"skills": {
|
||||
"id": "skills",
|
||||
"type": "skill-input",
|
||||
"value": null
|
||||
},
|
||||
"messages": {
|
||||
"id": "messages",
|
||||
"type": "messages-input",
|
||||
"value": [
|
||||
{
|
||||
"role": "system",
|
||||
"content": "Analyze customer feedback from Airtable and provide a summary of key themes, sentiment, and actionable insights."
|
||||
},
|
||||
{
|
||||
"role": "user",
|
||||
"content": "Please analyze the customer feedback data from Airtable. Use the Airtable tool to read records, then provide:\n1. Key themes and patterns\n2. Overall sentiment analysis\n3. Actionable insights and recommendations"
|
||||
}
|
||||
]
|
||||
},
|
||||
"maxTokens": {
|
||||
"id": "maxTokens",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"verbosity": {
|
||||
"id": "verbosity",
|
||||
"type": "dropdown",
|
||||
"value": null
|
||||
},
|
||||
"memoryType": {
|
||||
"id": "memoryType",
|
||||
"type": "dropdown",
|
||||
"value": "none"
|
||||
},
|
||||
"temperature": {
|
||||
"id": "temperature",
|
||||
"type": "short-input",
|
||||
"value": 0.3
|
||||
},
|
||||
"azureEndpoint": {
|
||||
"id": "azureEndpoint",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"bedrockRegion": {
|
||||
"id": "bedrockRegion",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"thinkingLevel": {
|
||||
"id": "thinkingLevel",
|
||||
"type": "dropdown",
|
||||
"value": null
|
||||
},
|
||||
"vertexProject": {
|
||||
"id": "vertexProject",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"conversationId": {
|
||||
"id": "conversationId",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"responseFormat": {
|
||||
"id": "responseFormat",
|
||||
"type": "code",
|
||||
"value": null
|
||||
},
|
||||
"vertexLocation": {
|
||||
"id": "vertexLocation",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"azureApiVersion": {
|
||||
"id": "azureApiVersion",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"reasoningEffort": {
|
||||
"id": "reasoningEffort",
|
||||
"type": "dropdown",
|
||||
"value": null
|
||||
},
|
||||
"bedrockSecretKey": {
|
||||
"id": "bedrockSecretKey",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"manualCredential": {
|
||||
"id": "manualCredential",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"vertexCredential": {
|
||||
"id": "vertexCredential",
|
||||
"type": "oauth-input",
|
||||
"value": null
|
||||
},
|
||||
"slidingWindowSize": {
|
||||
"id": "slidingWindowSize",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"bedrockAccessKeyId": {
|
||||
"id": "bedrockAccessKeyId",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"slidingWindowTokens": {
|
||||
"id": "slidingWindowTokens",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"previousInteractionId": {
|
||||
"id": "previousInteractionId",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"cost": {
|
||||
"type": "json",
|
||||
"description": "Cost of the API call"
|
||||
},
|
||||
"model": {
|
||||
"type": "string",
|
||||
"description": "Model used for generation"
|
||||
},
|
||||
"tokens": {
|
||||
"type": "json",
|
||||
"description": "Token usage statistics"
|
||||
},
|
||||
"content": {
|
||||
"type": "string",
|
||||
"description": "Generated response content"
|
||||
},
|
||||
"toolCalls": {
|
||||
"type": "json",
|
||||
"description": "Tool calls made"
|
||||
},
|
||||
"providerTiming": {
|
||||
"type": "json",
|
||||
"description": "Provider timing information"
|
||||
}
|
||||
},
|
||||
"data": {
|
||||
"canonicalModes": {
|
||||
"oauthCredential": "basic"
|
||||
}
|
||||
},
|
||||
"locked": false
|
||||
},
|
||||
"d8d12249-8b91-4a3b-bbc8-1d51c67c092f": {
|
||||
"id": "d8d12249-8b91-4a3b-bbc8-1d51c67c092f",
|
||||
"type": "note",
|
||||
"name": "Agent Setup",
|
||||
"position": {
|
||||
"x": 650.9694391022937,
|
||||
"y": 11.624006617722983
|
||||
},
|
||||
"enabled": true,
|
||||
"horizontalHandles": true,
|
||||
"advancedMode": false,
|
||||
"triggerMode": false,
|
||||
"height": 0,
|
||||
"subBlocks": {
|
||||
"content": {
|
||||
"id": "content",
|
||||
"type": "long-input",
|
||||
"value": "- Select Airtable Base, Table and any additional configuration "
|
||||
}
|
||||
},
|
||||
"outputs": {},
|
||||
"data": {},
|
||||
"locked": false
|
||||
},
|
||||
"3e14e5e6-ff10-4898-a701-85248ab19835": {
|
||||
"id": "3e14e5e6-ff10-4898-a701-85248ab19835",
|
||||
"type": "note",
|
||||
"name": "Slack Setup",
|
||||
"position": {
|
||||
"x": 1146.9403940050252,
|
||||
"y": -6.047832905104045
|
||||
},
|
||||
"enabled": true,
|
||||
"horizontalHandles": true,
|
||||
"advancedMode": false,
|
||||
"triggerMode": false,
|
||||
"height": 114,
|
||||
"subBlocks": {
|
||||
"content": {
|
||||
"id": "content",
|
||||
"type": "long-input",
|
||||
"value": "- Select Slack Account \n- Select Slack Channel"
|
||||
}
|
||||
},
|
||||
"outputs": {},
|
||||
"data": {},
|
||||
"locked": false
|
||||
}
|
||||
},
|
||||
"edges": [
|
||||
{
|
||||
"id": "a0c1c15f-3c37-4b59-93b4-7503f1ec7c62",
|
||||
"source": "8c66431f-268e-4a9f-8a82-911a87852551",
|
||||
"target": "1d05547e-1846-4049-9fc4-702f2f485ae6",
|
||||
"sourceHandle": "source",
|
||||
"targetHandle": "target",
|
||||
"type": "default",
|
||||
"data": {}
|
||||
},
|
||||
{
|
||||
"id": "19ed0fc8-5643-41e2-9025-3c7809572f33",
|
||||
"source": "1d05547e-1846-4049-9fc4-702f2f485ae6",
|
||||
"target": "cc8cb3bb-ed7b-434e-b04e-8156ecf238af",
|
||||
"sourceHandle": "source",
|
||||
"targetHandle": "target",
|
||||
"type": "default",
|
||||
"data": {}
|
||||
}
|
||||
],
|
||||
"loops": {},
|
||||
"parallels": {},
|
||||
"metadata": {
|
||||
"name": "customer-feedback-digest",
|
||||
"description": "New workflow",
|
||||
"color": "#c92626",
|
||||
"exportedAt": "2026-03-09T21:40:19.011Z"
|
||||
},
|
||||
"variables": {}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,551 @@
|
||||
{
|
||||
"version": "1.0",
|
||||
"exportedAt": "2026-03-09T21:40:19.013Z",
|
||||
"state": {
|
||||
"blocks": {
|
||||
"9a5153ed-d5ae-40a1-a5c6-b17f1c4b8174": {
|
||||
"id": "9a5153ed-d5ae-40a1-a5c6-b17f1c4b8174",
|
||||
"type": "gmail_v2",
|
||||
"name": "Gmail1",
|
||||
"position": {
|
||||
"x": 150,
|
||||
"y": 150
|
||||
},
|
||||
"enabled": true,
|
||||
"horizontalHandles": true,
|
||||
"advancedMode": false,
|
||||
"triggerMode": true,
|
||||
"height": 230,
|
||||
"subBlocks": {
|
||||
"cc": {
|
||||
"id": "cc",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"to": {
|
||||
"id": "to",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"bcc": {
|
||||
"id": "bcc",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"body": {
|
||||
"id": "body",
|
||||
"type": "long-input",
|
||||
"value": null
|
||||
},
|
||||
"query": {
|
||||
"id": "query",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"folder": {
|
||||
"id": "folder",
|
||||
"type": "folder-selector",
|
||||
"value": null
|
||||
},
|
||||
"subject": {
|
||||
"id": "subject",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"labelIds": {
|
||||
"id": "labelIds",
|
||||
"type": "dropdown",
|
||||
"value": null
|
||||
},
|
||||
"threadId": {
|
||||
"id": "threadId",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"messageId": {
|
||||
"id": "messageId",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"operation": {
|
||||
"id": "operation",
|
||||
"type": "dropdown",
|
||||
"value": null
|
||||
},
|
||||
"credential": {
|
||||
"id": "credential",
|
||||
"type": "oauth-input",
|
||||
"value": null
|
||||
},
|
||||
"markAsRead": {
|
||||
"id": "markAsRead",
|
||||
"type": "short-input",
|
||||
"value": false
|
||||
},
|
||||
"maxResults": {
|
||||
"id": "maxResults",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"unreadOnly": {
|
||||
"id": "unreadOnly",
|
||||
"type": "switch",
|
||||
"value": null
|
||||
},
|
||||
"attachments": {
|
||||
"id": "attachments",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"contentType": {
|
||||
"id": "contentType",
|
||||
"type": "dropdown",
|
||||
"value": null
|
||||
},
|
||||
"searchQuery": {
|
||||
"id": "searchQuery",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"sourceLabel": {
|
||||
"id": "sourceLabel",
|
||||
"type": "folder-selector",
|
||||
"value": null
|
||||
},
|
||||
"manualFolder": {
|
||||
"id": "manualFolder",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"labelSelector": {
|
||||
"id": "labelSelector",
|
||||
"type": "folder-selector",
|
||||
"value": null
|
||||
},
|
||||
"manualLabelId": {
|
||||
"id": "manualLabelId",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"moveMessageId": {
|
||||
"id": "moveMessageId",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"actionMessageId": {
|
||||
"id": "actionMessageId",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"attachmentFiles": {
|
||||
"id": "attachmentFiles",
|
||||
"type": "file-upload",
|
||||
"value": null
|
||||
},
|
||||
"destinationLabel": {
|
||||
"id": "destinationLabel",
|
||||
"type": "folder-selector",
|
||||
"value": null
|
||||
},
|
||||
"manualCredential": {
|
||||
"id": "manualCredential",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"replyToMessageId": {
|
||||
"id": "replyToMessageId",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"manualSourceLabel": {
|
||||
"id": "manualSourceLabel",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"includeAttachments": {
|
||||
"id": "includeAttachments",
|
||||
"type": "short-input",
|
||||
"value": false
|
||||
},
|
||||
"triggerCredentials": {
|
||||
"id": "triggerCredentials",
|
||||
"type": "oauth-input",
|
||||
"value": null
|
||||
},
|
||||
"labelFilterBehavior": {
|
||||
"id": "labelFilterBehavior",
|
||||
"type": "short-input",
|
||||
"value": "INCLUDE"
|
||||
},
|
||||
"triggerInstructions": {
|
||||
"id": "triggerInstructions",
|
||||
"type": "text",
|
||||
"value": null
|
||||
},
|
||||
"labelActionMessageId": {
|
||||
"id": "labelActionMessageId",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"manualDestinationLabel": {
|
||||
"id": "manualDestinationLabel",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"samplePayload_gmail_poller": {
|
||||
"id": "samplePayload_gmail_poller",
|
||||
"type": "code",
|
||||
"value": null
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"email": {
|
||||
"cc": {
|
||||
"type": "string",
|
||||
"description": "CC recipients"
|
||||
},
|
||||
"id": {
|
||||
"type": "string",
|
||||
"description": "Gmail message ID"
|
||||
},
|
||||
"to": {
|
||||
"type": "string",
|
||||
"description": "Recipient email address"
|
||||
},
|
||||
"date": {
|
||||
"type": "string",
|
||||
"description": "Email date in ISO format"
|
||||
},
|
||||
"from": {
|
||||
"type": "string",
|
||||
"description": "Sender email address"
|
||||
},
|
||||
"labels": {
|
||||
"type": "string",
|
||||
"description": "Email labels array"
|
||||
},
|
||||
"subject": {
|
||||
"type": "string",
|
||||
"description": "Email subject line"
|
||||
},
|
||||
"bodyHtml": {
|
||||
"type": "string",
|
||||
"description": "HTML email body"
|
||||
},
|
||||
"bodyText": {
|
||||
"type": "string",
|
||||
"description": "Plain text email body"
|
||||
},
|
||||
"threadId": {
|
||||
"type": "string",
|
||||
"description": "Gmail thread ID"
|
||||
},
|
||||
"attachments": {
|
||||
"type": "file[]",
|
||||
"description": "Array of email attachments as files (if includeAttachments is enabled)"
|
||||
},
|
||||
"hasAttachments": {
|
||||
"type": "boolean",
|
||||
"description": "Whether email has attachments"
|
||||
}
|
||||
},
|
||||
"timestamp": {
|
||||
"type": "string",
|
||||
"description": "Event timestamp"
|
||||
}
|
||||
},
|
||||
"data": {
|
||||
"canonicalModes": {
|
||||
"folder": "basic",
|
||||
"addLabelIds": "basic",
|
||||
"attachments": "basic",
|
||||
"manageLabelId": "basic",
|
||||
"removeLabelIds": "basic",
|
||||
"oauthCredential": "basic"
|
||||
}
|
||||
},
|
||||
"locked": false
|
||||
},
|
||||
"8b2cb83b-86ad-45c1-9af6-d03ea645128e": {
|
||||
"id": "8b2cb83b-86ad-45c1-9af6-d03ea645128e",
|
||||
"type": "note",
|
||||
"name": "Gmail Setup",
|
||||
"position": {
|
||||
"x": 156.1976672520025,
|
||||
"y": -43.44719468951199
|
||||
},
|
||||
"enabled": true,
|
||||
"horizontalHandles": true,
|
||||
"advancedMode": false,
|
||||
"triggerMode": false,
|
||||
"height": 114,
|
||||
"subBlocks": {
|
||||
"content": {
|
||||
"id": "content",
|
||||
"type": "short-input",
|
||||
"value": "- Connect Gmail Account \n- Select Relevant Labels to Monitor (Optional)"
|
||||
}
|
||||
},
|
||||
"outputs": {},
|
||||
"data": {},
|
||||
"locked": false
|
||||
},
|
||||
"73ccae2c-cdef-435e-a1d6-4fa2f8b798aa": {
|
||||
"id": "73ccae2c-cdef-435e-a1d6-4fa2f8b798aa",
|
||||
"type": "agent",
|
||||
"name": "Agent1",
|
||||
"position": {
|
||||
"x": 650,
|
||||
"y": 150
|
||||
},
|
||||
"enabled": true,
|
||||
"horizontalHandles": true,
|
||||
"advancedMode": false,
|
||||
"triggerMode": false,
|
||||
"height": 288,
|
||||
"subBlocks": {
|
||||
"model": {
|
||||
"id": "model",
|
||||
"type": "short-input",
|
||||
"value": "claude-sonnet-4-5"
|
||||
},
|
||||
"tools": {
|
||||
"id": "tools",
|
||||
"type": "tool-input",
|
||||
"value": [
|
||||
{
|
||||
"type": "linear",
|
||||
"title": "Linear",
|
||||
"params": {
|
||||
"priority": "0",
|
||||
"manualTeamId": "",
|
||||
"manualProjectId": ""
|
||||
},
|
||||
"toolId": "linear_create_issue",
|
||||
"operation": "linear_create_issue",
|
||||
"isExpanded": false,
|
||||
"credentialId": "VASXEoZWRpOraVP2Exmm9X62lT3ofDmZ",
|
||||
"usageControl": "auto"
|
||||
},
|
||||
{
|
||||
"type": "slack",
|
||||
"title": "Slack",
|
||||
"params": {
|
||||
"authMethod": "oauth",
|
||||
"destinationType": "channel"
|
||||
},
|
||||
"toolId": "slack_message",
|
||||
"operation": "send",
|
||||
"isExpanded": false,
|
||||
"usageControl": "auto"
|
||||
}
|
||||
]
|
||||
},
|
||||
"apiKey": {
|
||||
"id": "apiKey",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"skills": {
|
||||
"id": "skills",
|
||||
"type": "skill-input",
|
||||
"value": null
|
||||
},
|
||||
"messages": {
|
||||
"id": "messages",
|
||||
"type": "messages-input",
|
||||
"value": [
|
||||
{
|
||||
"role": "system",
|
||||
"content": "Classify and route incoming emails. You have access to tools for Slack notifications and Linear issue creation.\n\nWhen you determine an email is urgent, use the Slack tool to send a notification to the #urgent channel.\nWhen you determine an email needs a support issue, use the Linear tool to create an issue in the Support project.\n\nYou can use both tools if an email is both urgent AND needs a support issue."
|
||||
},
|
||||
{
|
||||
"role": "user",
|
||||
"content": "Classify this email:\n\nFrom: <gmail1.email.from>\nSubject: <gmail1.email.subject>\nBody: <gmail1.email.bodyText>\n\nDetermine if it is urgent (needs immediate Slack notification) or support-related (needs a Linear issue). Take appropriate action using your tools."
|
||||
}
|
||||
]
|
||||
},
|
||||
"maxTokens": {
|
||||
"id": "maxTokens",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"verbosity": {
|
||||
"id": "verbosity",
|
||||
"type": "dropdown",
|
||||
"value": null
|
||||
},
|
||||
"memoryType": {
|
||||
"id": "memoryType",
|
||||
"type": "dropdown",
|
||||
"value": "none"
|
||||
},
|
||||
"temperature": {
|
||||
"id": "temperature",
|
||||
"type": "short-input",
|
||||
"value": 0.3
|
||||
},
|
||||
"azureEndpoint": {
|
||||
"id": "azureEndpoint",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"bedrockRegion": {
|
||||
"id": "bedrockRegion",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"thinkingLevel": {
|
||||
"id": "thinkingLevel",
|
||||
"type": "dropdown",
|
||||
"value": null
|
||||
},
|
||||
"vertexProject": {
|
||||
"id": "vertexProject",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"conversationId": {
|
||||
"id": "conversationId",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"responseFormat": {
|
||||
"id": "responseFormat",
|
||||
"type": "code",
|
||||
"value": null
|
||||
},
|
||||
"vertexLocation": {
|
||||
"id": "vertexLocation",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"azureApiVersion": {
|
||||
"id": "azureApiVersion",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"reasoningEffort": {
|
||||
"id": "reasoningEffort",
|
||||
"type": "dropdown",
|
||||
"value": null
|
||||
},
|
||||
"bedrockSecretKey": {
|
||||
"id": "bedrockSecretKey",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"manualCredential": {
|
||||
"id": "manualCredential",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"vertexCredential": {
|
||||
"id": "vertexCredential",
|
||||
"type": "oauth-input",
|
||||
"value": null
|
||||
},
|
||||
"slidingWindowSize": {
|
||||
"id": "slidingWindowSize",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"bedrockAccessKeyId": {
|
||||
"id": "bedrockAccessKeyId",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"slidingWindowTokens": {
|
||||
"id": "slidingWindowTokens",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"previousInteractionId": {
|
||||
"id": "previousInteractionId",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"cost": {
|
||||
"type": "json",
|
||||
"description": "Cost of the API call"
|
||||
},
|
||||
"model": {
|
||||
"type": "string",
|
||||
"description": "Model used for generation"
|
||||
},
|
||||
"tokens": {
|
||||
"type": "json",
|
||||
"description": "Token usage statistics"
|
||||
},
|
||||
"content": {
|
||||
"type": "string",
|
||||
"description": "Generated response content"
|
||||
},
|
||||
"toolCalls": {
|
||||
"type": "json",
|
||||
"description": "Tool calls made"
|
||||
},
|
||||
"providerTiming": {
|
||||
"type": "json",
|
||||
"description": "Provider timing information"
|
||||
}
|
||||
},
|
||||
"data": {
|
||||
"canonicalModes": {
|
||||
"linear:teamId": "basic",
|
||||
"slack:channel": "basic",
|
||||
"oauthCredential": "basic",
|
||||
"linear:projectId": "basic"
|
||||
}
|
||||
},
|
||||
"locked": false
|
||||
},
|
||||
"74ce7030-0faf-4efd-9439-8a0d516871e2": {
|
||||
"id": "74ce7030-0faf-4efd-9439-8a0d516871e2",
|
||||
"type": "note",
|
||||
"name": "Agent Setup",
|
||||
"position": {
|
||||
"x": 647.4883532288753,
|
||||
"y": -66.95469058004684
|
||||
},
|
||||
"enabled": true,
|
||||
"horizontalHandles": true,
|
||||
"advancedMode": false,
|
||||
"triggerMode": false,
|
||||
"height": 114,
|
||||
"subBlocks": {
|
||||
"content": {
|
||||
"id": "content",
|
||||
"type": "short-input",
|
||||
"value": "- Connect Linear Account \n- Connect Slack Account and select channel"
|
||||
}
|
||||
},
|
||||
"outputs": {},
|
||||
"data": {},
|
||||
"locked": false
|
||||
}
|
||||
},
|
||||
"edges": [
|
||||
{
|
||||
"id": "aa9449b6-2d66-4009-b931-682e45d841a0",
|
||||
"source": "9a5153ed-d5ae-40a1-a5c6-b17f1c4b8174",
|
||||
"target": "73ccae2c-cdef-435e-a1d6-4fa2f8b798aa",
|
||||
"sourceHandle": "source",
|
||||
"targetHandle": "target",
|
||||
"type": "default",
|
||||
"data": {}
|
||||
}
|
||||
],
|
||||
"loops": {},
|
||||
"parallels": {},
|
||||
"metadata": {
|
||||
"name": "email-triage",
|
||||
"description": "New workflow",
|
||||
"color": "#048628",
|
||||
"exportedAt": "2026-03-09T21:40:19.012Z"
|
||||
},
|
||||
"variables": {}
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,330 @@
|
||||
{
|
||||
"version": "1.0",
|
||||
"exportedAt": "2026-03-09T21:40:19.010Z",
|
||||
"state": {
|
||||
"blocks": {
|
||||
"9d182a31-8710-4651-8a85-cd432e7fecf7": {
|
||||
"id": "9d182a31-8710-4651-8a85-cd432e7fecf7",
|
||||
"type": "start_trigger",
|
||||
"name": "Start",
|
||||
"position": {
|
||||
"x": 150,
|
||||
"y": 150
|
||||
},
|
||||
"enabled": true,
|
||||
"horizontalHandles": true,
|
||||
"advancedMode": false,
|
||||
"triggerMode": false,
|
||||
"height": 100,
|
||||
"subBlocks": {
|
||||
"inputFormat": {
|
||||
"id": "inputFormat",
|
||||
"type": "input-format",
|
||||
"value": [
|
||||
{
|
||||
"id": "2b3539b5-b5c4-4d51-b570-4d90f6056f14",
|
||||
"name": "input",
|
||||
"type": "string",
|
||||
"value": "",
|
||||
"collapsed": false
|
||||
},
|
||||
{
|
||||
"id": "aad8e667-b17d-435e-85a2-974a6bb10bb7",
|
||||
"name": "conversationId",
|
||||
"type": "string",
|
||||
"value": "",
|
||||
"collapsed": false
|
||||
},
|
||||
{
|
||||
"id": "8658c06a-d84c-4ee3-bc5c-47b98f5b9d67",
|
||||
"name": "files",
|
||||
"type": "file[]",
|
||||
"value": "",
|
||||
"collapsed": false
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"files": {
|
||||
"type": "file[]",
|
||||
"description": "User uploaded files"
|
||||
},
|
||||
"input": {
|
||||
"type": "string",
|
||||
"description": "Primary user input or message"
|
||||
},
|
||||
"conversationId": {
|
||||
"type": "string",
|
||||
"description": "Conversation thread identifier"
|
||||
}
|
||||
},
|
||||
"data": {},
|
||||
"locked": false
|
||||
},
|
||||
"276feb2f-c809-4344-aee3-1ff0505e0459": {
|
||||
"id": "276feb2f-c809-4344-aee3-1ff0505e0459",
|
||||
"type": "agent",
|
||||
"name": "Agent",
|
||||
"position": {
|
||||
"x": 580,
|
||||
"y": 150
|
||||
},
|
||||
"enabled": true,
|
||||
"horizontalHandles": true,
|
||||
"advancedMode": false,
|
||||
"triggerMode": false,
|
||||
"height": 0,
|
||||
"subBlocks": {
|
||||
"model": {
|
||||
"id": "model",
|
||||
"type": "short-input",
|
||||
"value": "gemini-2.5-pro"
|
||||
},
|
||||
"tools": {
|
||||
"id": "tools",
|
||||
"type": "short-input",
|
||||
"value": [
|
||||
{
|
||||
"type": "knowledge",
|
||||
"title": "Knowledge Base",
|
||||
"params": {
|
||||
"topK": "5",
|
||||
"knowledgeBaseId": "placeholder-kb-id"
|
||||
},
|
||||
"toolId": "knowledge_search",
|
||||
"operation": "search",
|
||||
"isExpanded": true,
|
||||
"usageControl": "auto"
|
||||
}
|
||||
]
|
||||
},
|
||||
"apiKey": {
|
||||
"id": "apiKey",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"skills": {
|
||||
"id": "skills",
|
||||
"type": "skill-input",
|
||||
"value": null
|
||||
},
|
||||
"messages": {
|
||||
"id": "messages",
|
||||
"type": "messages-input",
|
||||
"value": [
|
||||
{
|
||||
"role": "system",
|
||||
"content": "Answer using knowledge base"
|
||||
},
|
||||
{
|
||||
"role": "user",
|
||||
"content": "<start.input>"
|
||||
}
|
||||
]
|
||||
},
|
||||
"maxTokens": {
|
||||
"id": "maxTokens",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"verbosity": {
|
||||
"id": "verbosity",
|
||||
"type": "dropdown",
|
||||
"value": null
|
||||
},
|
||||
"memoryType": {
|
||||
"id": "memoryType",
|
||||
"type": "dropdown",
|
||||
"value": "none"
|
||||
},
|
||||
"temperature": {
|
||||
"id": "temperature",
|
||||
"type": "slider",
|
||||
"value": null
|
||||
},
|
||||
"azureEndpoint": {
|
||||
"id": "azureEndpoint",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"bedrockRegion": {
|
||||
"id": "bedrockRegion",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"thinkingLevel": {
|
||||
"id": "thinkingLevel",
|
||||
"type": "dropdown",
|
||||
"value": null
|
||||
},
|
||||
"vertexProject": {
|
||||
"id": "vertexProject",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"conversationId": {
|
||||
"id": "conversationId",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"responseFormat": {
|
||||
"id": "responseFormat",
|
||||
"type": "code",
|
||||
"value": null
|
||||
},
|
||||
"vertexLocation": {
|
||||
"id": "vertexLocation",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"azureApiVersion": {
|
||||
"id": "azureApiVersion",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"reasoningEffort": {
|
||||
"id": "reasoningEffort",
|
||||
"type": "dropdown",
|
||||
"value": null
|
||||
},
|
||||
"bedrockSecretKey": {
|
||||
"id": "bedrockSecretKey",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"manualCredential": {
|
||||
"id": "manualCredential",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"vertexCredential": {
|
||||
"id": "vertexCredential",
|
||||
"type": "oauth-input",
|
||||
"value": null
|
||||
},
|
||||
"slidingWindowSize": {
|
||||
"id": "slidingWindowSize",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"bedrockAccessKeyId": {
|
||||
"id": "bedrockAccessKeyId",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"slidingWindowTokens": {
|
||||
"id": "slidingWindowTokens",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"previousInteractionId": {
|
||||
"id": "previousInteractionId",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"cost": {
|
||||
"type": "json",
|
||||
"description": "Cost of the API call"
|
||||
},
|
||||
"model": {
|
||||
"type": "string",
|
||||
"description": "Model used for generation"
|
||||
},
|
||||
"tokens": {
|
||||
"type": "json",
|
||||
"description": "Token usage statistics"
|
||||
},
|
||||
"content": {
|
||||
"type": "string",
|
||||
"description": "Generated response content"
|
||||
},
|
||||
"toolCalls": {
|
||||
"type": "json",
|
||||
"description": "Tool calls made"
|
||||
},
|
||||
"providerTiming": {
|
||||
"type": "json",
|
||||
"description": "Provider timing information"
|
||||
}
|
||||
},
|
||||
"data": {
|
||||
"canonicalModes": {
|
||||
"oauthCredential": "basic"
|
||||
}
|
||||
},
|
||||
"locked": false
|
||||
},
|
||||
"d0eaf8bd-d234-4c52-a62a-d67d17ba617f": {
|
||||
"id": "d0eaf8bd-d234-4c52-a62a-d67d17ba617f",
|
||||
"type": "note",
|
||||
"name": "Agent Setup",
|
||||
"position": {
|
||||
"x": 573.5022676225361,
|
||||
"y": -72.17147114704349
|
||||
},
|
||||
"enabled": true,
|
||||
"horizontalHandles": true,
|
||||
"advancedMode": false,
|
||||
"triggerMode": false,
|
||||
"height": 0,
|
||||
"subBlocks": {
|
||||
"content": {
|
||||
"id": "content",
|
||||
"type": "long-input",
|
||||
"value": "- Create a Knowledge Base in the Knowledge base tab and upload relevant documents \n- Select Knowledge Base in the tool here "
|
||||
}
|
||||
},
|
||||
"outputs": {},
|
||||
"data": {},
|
||||
"locked": false
|
||||
},
|
||||
"3b06e171-145c-4118-b5e9-5362480dbc59": {
|
||||
"id": "3b06e171-145c-4118-b5e9-5362480dbc59",
|
||||
"type": "note",
|
||||
"name": "Workflow Setup",
|
||||
"position": {
|
||||
"x": 153.7481407356546,
|
||||
"y": -38.47285321350124
|
||||
},
|
||||
"enabled": true,
|
||||
"horizontalHandles": true,
|
||||
"advancedMode": false,
|
||||
"triggerMode": false,
|
||||
"height": 0,
|
||||
"subBlocks": {
|
||||
"content": {
|
||||
"id": "content",
|
||||
"type": "long-input",
|
||||
"value": "- Deploy as Chat using the button on the top right\n- Select Chat Output as Agent's Content \n"
|
||||
}
|
||||
},
|
||||
"outputs": {},
|
||||
"data": {},
|
||||
"locked": false
|
||||
}
|
||||
},
|
||||
"edges": [
|
||||
{
|
||||
"id": "fcaefdd3-a4cc-4f08-9218-f5fbb1d90675",
|
||||
"source": "9d182a31-8710-4651-8a85-cd432e7fecf7",
|
||||
"target": "276feb2f-c809-4344-aee3-1ff0505e0459",
|
||||
"sourceHandle": "source",
|
||||
"targetHandle": "target",
|
||||
"type": "default",
|
||||
"data": {}
|
||||
}
|
||||
],
|
||||
"loops": {},
|
||||
"parallels": {},
|
||||
"metadata": {
|
||||
"name": "knowledge-base-qa",
|
||||
"description": "New workflow",
|
||||
"color": "#b61717",
|
||||
"exportedAt": "2026-03-09T21:40:19.009Z"
|
||||
},
|
||||
"variables": {}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,520 @@
|
||||
{
|
||||
"version": "1.0",
|
||||
"exportedAt": "2026-03-09T21:40:19.012Z",
|
||||
"state": {
|
||||
"blocks": {
|
||||
"e146db47-fd1b-4823-8af4-eb3e078465c3": {
|
||||
"id": "e146db47-fd1b-4823-8af4-eb3e078465c3",
|
||||
"type": "start_trigger",
|
||||
"name": "Start",
|
||||
"position": {
|
||||
"x": 220,
|
||||
"y": 150
|
||||
},
|
||||
"enabled": true,
|
||||
"horizontalHandles": true,
|
||||
"advancedMode": false,
|
||||
"triggerMode": false,
|
||||
"height": 100,
|
||||
"subBlocks": {
|
||||
"inputFormat": {
|
||||
"id": "inputFormat",
|
||||
"type": "input-format",
|
||||
"value": [
|
||||
{
|
||||
"id": "40786453-e79e-4883-8ea2-b403ecbd617d",
|
||||
"name": "Email",
|
||||
"type": "string",
|
||||
"value": "lead@company.com",
|
||||
"collapsed": false
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"files": {
|
||||
"type": "file[]",
|
||||
"description": "User uploaded files"
|
||||
},
|
||||
"input": {
|
||||
"type": "string",
|
||||
"description": "Primary user input or message"
|
||||
},
|
||||
"conversationId": {
|
||||
"type": "string",
|
||||
"description": "Conversation thread identifier"
|
||||
}
|
||||
},
|
||||
"data": {},
|
||||
"locked": false
|
||||
},
|
||||
"7fcbdc64-a811-43dc-a6ef-ff9d3d66fe82": {
|
||||
"id": "7fcbdc64-a811-43dc-a6ef-ff9d3d66fe82",
|
||||
"type": "agent",
|
||||
"name": "Agent",
|
||||
"position": {
|
||||
"x": 180,
|
||||
"y": 100
|
||||
},
|
||||
"enabled": true,
|
||||
"horizontalHandles": true,
|
||||
"advancedMode": false,
|
||||
"triggerMode": false,
|
||||
"height": 259,
|
||||
"subBlocks": {
|
||||
"model": {
|
||||
"id": "model",
|
||||
"type": "short-input",
|
||||
"value": ""
|
||||
},
|
||||
"tools": {
|
||||
"id": "tools",
|
||||
"type": "short-input",
|
||||
"value": [
|
||||
{
|
||||
"type": "linkedin",
|
||||
"params": {
|
||||
"manualCredential": ""
|
||||
},
|
||||
"operation": "get_profile",
|
||||
"isExpanded": true,
|
||||
"usageControl": "auto"
|
||||
}
|
||||
]
|
||||
},
|
||||
"apiKey": {
|
||||
"id": "apiKey",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"skills": {
|
||||
"id": "skills",
|
||||
"type": "skill-input",
|
||||
"value": null
|
||||
},
|
||||
"messages": {
|
||||
"id": "messages",
|
||||
"type": "short-input",
|
||||
"value": [
|
||||
{
|
||||
"role": "system",
|
||||
"content": "Enrich lead data by looking up LinkedIn profile information for the given email address. Return structured data including name, title, company, location, and professional summary."
|
||||
},
|
||||
{
|
||||
"role": "user",
|
||||
"content": "<dataparallel.currentItem>"
|
||||
}
|
||||
]
|
||||
},
|
||||
"maxTokens": {
|
||||
"id": "maxTokens",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"verbosity": {
|
||||
"id": "verbosity",
|
||||
"type": "dropdown",
|
||||
"value": null
|
||||
},
|
||||
"memoryType": {
|
||||
"id": "memoryType",
|
||||
"type": "short-input",
|
||||
"value": "none"
|
||||
},
|
||||
"temperature": {
|
||||
"id": "temperature",
|
||||
"type": "slider",
|
||||
"value": null
|
||||
},
|
||||
"azureEndpoint": {
|
||||
"id": "azureEndpoint",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"bedrockRegion": {
|
||||
"id": "bedrockRegion",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"thinkingLevel": {
|
||||
"id": "thinkingLevel",
|
||||
"type": "dropdown",
|
||||
"value": null
|
||||
},
|
||||
"vertexProject": {
|
||||
"id": "vertexProject",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"conversationId": {
|
||||
"id": "conversationId",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"responseFormat": {
|
||||
"id": "responseFormat",
|
||||
"type": "code",
|
||||
"value": "{\n \"name\": \"enriched_lead_row\",\n \"schema\": {\n \"additionalProperties\": false,\n \"properties\": {\n \"row\": {\n \"description\": \"A single row of enriched lead data as a 2D array [[email, name, title, company, location]]\",\n \"items\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"maxItems\": 1,\n \"minItems\": 1,\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"row\"\n ],\n \"type\": \"object\"\n },\n \"strict\": true\n}"
|
||||
},
|
||||
"vertexLocation": {
|
||||
"id": "vertexLocation",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"azureApiVersion": {
|
||||
"id": "azureApiVersion",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"reasoningEffort": {
|
||||
"id": "reasoningEffort",
|
||||
"type": "dropdown",
|
||||
"value": null
|
||||
},
|
||||
"bedrockSecretKey": {
|
||||
"id": "bedrockSecretKey",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"manualCredential": {
|
||||
"id": "manualCredential",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"vertexCredential": {
|
||||
"id": "vertexCredential",
|
||||
"type": "oauth-input",
|
||||
"value": null
|
||||
},
|
||||
"slidingWindowSize": {
|
||||
"id": "slidingWindowSize",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"bedrockAccessKeyId": {
|
||||
"id": "bedrockAccessKeyId",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"slidingWindowTokens": {
|
||||
"id": "slidingWindowTokens",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"previousInteractionId": {
|
||||
"id": "previousInteractionId",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"cost": {
|
||||
"type": "json",
|
||||
"description": "Cost of the API call"
|
||||
},
|
||||
"model": {
|
||||
"type": "string",
|
||||
"description": "Model used for generation"
|
||||
},
|
||||
"tokens": {
|
||||
"type": "json",
|
||||
"description": "Token usage statistics"
|
||||
},
|
||||
"content": {
|
||||
"type": "string",
|
||||
"description": "Generated response content"
|
||||
},
|
||||
"toolCalls": {
|
||||
"type": "json",
|
||||
"description": "Tool calls made"
|
||||
},
|
||||
"providerTiming": {
|
||||
"type": "json",
|
||||
"description": "Provider timing information"
|
||||
}
|
||||
},
|
||||
"data": {
|
||||
"extent": "parent",
|
||||
"parentId": "567b9f45-eab6-4f34-8e0b-9342dae37717",
|
||||
"canonicalModes": {
|
||||
"oauthCredential": "basic",
|
||||
"linkedin:oauthCredential": "basic"
|
||||
}
|
||||
},
|
||||
"locked": false
|
||||
},
|
||||
"567b9f45-eab6-4f34-8e0b-9342dae37717": {
|
||||
"id": "567b9f45-eab6-4f34-8e0b-9342dae37717",
|
||||
"type": "parallel",
|
||||
"name": "dataParallel",
|
||||
"position": {
|
||||
"x": 650,
|
||||
"y": 150
|
||||
},
|
||||
"enabled": true,
|
||||
"horizontalHandles": true,
|
||||
"advancedMode": false,
|
||||
"triggerMode": false,
|
||||
"height": 100,
|
||||
"subBlocks": {
|
||||
"collection": {
|
||||
"id": "collection",
|
||||
"type": "short-input",
|
||||
"value": "<agent.content>"
|
||||
},
|
||||
"parallelType": {
|
||||
"id": "parallelType",
|
||||
"type": "short-input",
|
||||
"value": "collection"
|
||||
}
|
||||
},
|
||||
"outputs": {},
|
||||
"data": {
|
||||
"id": "567b9f45-eab6-4f34-8e0b-9342dae37717",
|
||||
"type": "subflowNode",
|
||||
"count": 5,
|
||||
"nodes": ["7fcbdc64-a811-43dc-a6ef-ff9d3d66fe82", "9fdad60a-56f1-45ba-a1b5-ba4fcdee0988"],
|
||||
"width": 953,
|
||||
"height": 559,
|
||||
"collection": "<start.emails>",
|
||||
"distribution": "<start.emails>",
|
||||
"parallelType": "collection"
|
||||
},
|
||||
"locked": false
|
||||
},
|
||||
"9fdad60a-56f1-45ba-a1b5-ba4fcdee0988": {
|
||||
"id": "9fdad60a-56f1-45ba-a1b5-ba4fcdee0988",
|
||||
"type": "google_sheets_v2",
|
||||
"name": "GoogleSheets",
|
||||
"position": {
|
||||
"x": 583,
|
||||
"y": 100
|
||||
},
|
||||
"enabled": true,
|
||||
"horizontalHandles": true,
|
||||
"advancedMode": false,
|
||||
"triggerMode": false,
|
||||
"height": 259,
|
||||
"subBlocks": {
|
||||
"title": {
|
||||
"id": "title",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"ranges": {
|
||||
"id": "ranges",
|
||||
"type": "long-input",
|
||||
"value": null
|
||||
},
|
||||
"values": {
|
||||
"id": "values",
|
||||
"type": "short-input",
|
||||
"value": "<agent.row>"
|
||||
},
|
||||
"sheetId": {
|
||||
"id": "sheetId",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"batchData": {
|
||||
"id": "batchData",
|
||||
"type": "long-input",
|
||||
"value": null
|
||||
},
|
||||
"cellRange": {
|
||||
"id": "cellRange",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"operation": {
|
||||
"id": "operation",
|
||||
"type": "short-input",
|
||||
"value": "append"
|
||||
},
|
||||
"sheetName": {
|
||||
"id": "sheetName",
|
||||
"type": "sheet-selector",
|
||||
"value": null
|
||||
},
|
||||
"credential": {
|
||||
"id": "credential",
|
||||
"type": "oauth-input",
|
||||
"value": null
|
||||
},
|
||||
"filterValue": {
|
||||
"id": "filterValue",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"sheetTitles": {
|
||||
"id": "sheetTitles",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"filterColumn": {
|
||||
"id": "filterColumn",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"spreadsheetId": {
|
||||
"id": "spreadsheetId",
|
||||
"type": "file-selector",
|
||||
"value": null
|
||||
},
|
||||
"filterMatchType": {
|
||||
"id": "filterMatchType",
|
||||
"type": "dropdown",
|
||||
"value": null
|
||||
},
|
||||
"manualSheetName": {
|
||||
"id": "manualSheetName",
|
||||
"type": "short-input",
|
||||
"value": ""
|
||||
},
|
||||
"insertDataOption": {
|
||||
"id": "insertDataOption",
|
||||
"type": "short-input",
|
||||
"value": "INSERT_ROWS"
|
||||
},
|
||||
"manualCredential": {
|
||||
"id": "manualCredential",
|
||||
"type": "short-input",
|
||||
"value": ""
|
||||
},
|
||||
"valueInputOption": {
|
||||
"id": "valueInputOption",
|
||||
"type": "dropdown",
|
||||
"value": null
|
||||
},
|
||||
"manualSpreadsheetId": {
|
||||
"id": "manualSpreadsheetId",
|
||||
"type": "short-input",
|
||||
"value": ""
|
||||
},
|
||||
"destinationSpreadsheetId": {
|
||||
"id": "destinationSpreadsheetId",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"metadata": {
|
||||
"type": "json",
|
||||
"properties": {
|
||||
"spreadsheetId": {
|
||||
"type": "string",
|
||||
"description": "Google Sheets spreadsheet ID"
|
||||
},
|
||||
"spreadsheetUrl": {
|
||||
"type": "string",
|
||||
"description": "Spreadsheet URL"
|
||||
}
|
||||
},
|
||||
"description": "Spreadsheet metadata including ID and URL"
|
||||
},
|
||||
"tableRange": {
|
||||
"type": "string",
|
||||
"description": "Range of the table where data was appended"
|
||||
},
|
||||
"updatedRows": {
|
||||
"type": "number",
|
||||
"description": "Number of rows updated"
|
||||
},
|
||||
"updatedCells": {
|
||||
"type": "number",
|
||||
"description": "Number of cells updated"
|
||||
},
|
||||
"updatedRange": {
|
||||
"type": "string",
|
||||
"description": "Range of cells that were updated"
|
||||
},
|
||||
"updatedColumns": {
|
||||
"type": "number",
|
||||
"description": "Number of columns updated"
|
||||
}
|
||||
},
|
||||
"data": {
|
||||
"extent": "parent",
|
||||
"parentId": "567b9f45-eab6-4f34-8e0b-9342dae37717",
|
||||
"canonicalModes": {
|
||||
"sheetName": "advanced",
|
||||
"spreadsheetId": "basic",
|
||||
"oauthCredential": "basic"
|
||||
}
|
||||
},
|
||||
"locked": false
|
||||
},
|
||||
"96abf661-31f3-4fd3-9e7c-6cf5ac178fc0": {
|
||||
"id": "96abf661-31f3-4fd3-9e7c-6cf5ac178fc0",
|
||||
"type": "note",
|
||||
"name": "Agent Setup",
|
||||
"position": {
|
||||
"x": 982.9212280313601,
|
||||
"y": -20.17741919706892
|
||||
},
|
||||
"enabled": true,
|
||||
"horizontalHandles": true,
|
||||
"advancedMode": false,
|
||||
"triggerMode": false,
|
||||
"height": 114,
|
||||
"subBlocks": {
|
||||
"content": {
|
||||
"id": "content",
|
||||
"type": "long-input",
|
||||
"value": "- Select a Model of your Choice \n- Connect Linkedin Account \n- Connect Google Sheets Account"
|
||||
}
|
||||
},
|
||||
"outputs": {},
|
||||
"data": {},
|
||||
"locked": false
|
||||
}
|
||||
},
|
||||
"edges": [
|
||||
{
|
||||
"id": "42aba092-b19a-49a8-b8d0-7e03ad70c2d4",
|
||||
"source": "567b9f45-eab6-4f34-8e0b-9342dae37717",
|
||||
"target": "7fcbdc64-a811-43dc-a6ef-ff9d3d66fe82",
|
||||
"sourceHandle": "parallel-start-source",
|
||||
"targetHandle": "target",
|
||||
"type": "default",
|
||||
"data": {}
|
||||
},
|
||||
{
|
||||
"id": "e67a21d1-93b5-4bb7-993d-06160802abc8",
|
||||
"source": "7fcbdc64-a811-43dc-a6ef-ff9d3d66fe82",
|
||||
"target": "9fdad60a-56f1-45ba-a1b5-ba4fcdee0988",
|
||||
"sourceHandle": "source",
|
||||
"targetHandle": "target",
|
||||
"type": "default",
|
||||
"data": {}
|
||||
},
|
||||
{
|
||||
"id": "780e83b8-65ad-4561-950c-06b89d2a82f1",
|
||||
"source": "e146db47-fd1b-4823-8af4-eb3e078465c3",
|
||||
"target": "567b9f45-eab6-4f34-8e0b-9342dae37717",
|
||||
"sourceHandle": "source",
|
||||
"targetHandle": "target",
|
||||
"type": "default",
|
||||
"data": {}
|
||||
}
|
||||
],
|
||||
"loops": {},
|
||||
"parallels": {
|
||||
"567b9f45-eab6-4f34-8e0b-9342dae37717": {
|
||||
"id": "567b9f45-eab6-4f34-8e0b-9342dae37717",
|
||||
"nodes": ["7fcbdc64-a811-43dc-a6ef-ff9d3d66fe82", "9fdad60a-56f1-45ba-a1b5-ba4fcdee0988"],
|
||||
"distribution": "<start.emails>",
|
||||
"count": 5,
|
||||
"parallelType": "collection",
|
||||
"enabled": true
|
||||
}
|
||||
},
|
||||
"metadata": {
|
||||
"name": "lead-enricher",
|
||||
"description": "New workflow",
|
||||
"color": "#1486d1",
|
||||
"exportedAt": "2026-03-09T21:40:19.011Z"
|
||||
},
|
||||
"variables": {}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,813 @@
|
||||
{
|
||||
"version": "1.0",
|
||||
"exportedAt": "2026-03-09T21:40:19.013Z",
|
||||
"state": {
|
||||
"blocks": {
|
||||
"9f657d7a-b6d0-4a9d-aaac-ffc909df1b24": {
|
||||
"id": "9f657d7a-b6d0-4a9d-aaac-ffc909df1b24",
|
||||
"type": "schedule",
|
||||
"name": "Start",
|
||||
"position": {
|
||||
"x": 150,
|
||||
"y": 150
|
||||
},
|
||||
"enabled": true,
|
||||
"horizontalHandles": true,
|
||||
"advancedMode": false,
|
||||
"triggerMode": true,
|
||||
"height": 114,
|
||||
"subBlocks": {
|
||||
"timezone": {
|
||||
"id": "timezone",
|
||||
"type": "short-input",
|
||||
"value": "America/New_York"
|
||||
},
|
||||
"inputFormat": {
|
||||
"id": "inputFormat",
|
||||
"type": "input-format",
|
||||
"value": [
|
||||
{
|
||||
"id": "f7bc7ff9-8c98-4bc2-a193-8884ea3a203f",
|
||||
"name": "",
|
||||
"type": "string",
|
||||
"value": "",
|
||||
"collapsed": false
|
||||
}
|
||||
]
|
||||
},
|
||||
"scheduleType": {
|
||||
"id": "scheduleType",
|
||||
"type": "short-input",
|
||||
"value": "minutes"
|
||||
},
|
||||
"minutesInterval": {
|
||||
"id": "minutesInterval",
|
||||
"type": "short-input",
|
||||
"value": "15"
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"files": {
|
||||
"type": "file[]",
|
||||
"description": "User uploaded files"
|
||||
},
|
||||
"input": {
|
||||
"type": "string",
|
||||
"description": "Primary user input or message"
|
||||
},
|
||||
"conversationId": {
|
||||
"type": "string",
|
||||
"description": "Conversation thread identifier"
|
||||
}
|
||||
},
|
||||
"data": {},
|
||||
"locked": false
|
||||
},
|
||||
"b6030d6c-ad21-41b2-bd43-8e2ce9633ef1": {
|
||||
"id": "b6030d6c-ad21-41b2-bd43-8e2ce9633ef1",
|
||||
"type": "function",
|
||||
"name": "parseAttendees",
|
||||
"position": {
|
||||
"x": 1588,
|
||||
"y": 136
|
||||
},
|
||||
"enabled": true,
|
||||
"horizontalHandles": true,
|
||||
"advancedMode": false,
|
||||
"triggerMode": false,
|
||||
"height": 100,
|
||||
"subBlocks": {
|
||||
"code": {
|
||||
"id": "code",
|
||||
"type": "short-input",
|
||||
"value": "const attendeesString = input.attendees || '';\nconst attendeesArray = attendeesString.split(',').map(email => email.trim()).filter(email => email.length > 0);\nreturn { attendees: attendeesArray };"
|
||||
},
|
||||
"language": {
|
||||
"id": "language",
|
||||
"type": "short-input",
|
||||
"value": "javascript"
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"result": {
|
||||
"type": "json",
|
||||
"description": "Return value from the executed JavaScript function"
|
||||
},
|
||||
"stdout": {
|
||||
"type": "string",
|
||||
"description": "Console log output and debug messages from function execution"
|
||||
}
|
||||
},
|
||||
"data": {},
|
||||
"locked": false
|
||||
},
|
||||
"a2b4bbcb-aa56-46ce-9e42-2e4933c57f71": {
|
||||
"id": "a2b4bbcb-aa56-46ce-9e42-2e4933c57f71",
|
||||
"type": "loop",
|
||||
"name": "attendeeLoop",
|
||||
"position": {
|
||||
"x": 2150,
|
||||
"y": 150
|
||||
},
|
||||
"enabled": true,
|
||||
"horizontalHandles": true,
|
||||
"advancedMode": false,
|
||||
"triggerMode": false,
|
||||
"height": 0,
|
||||
"subBlocks": {
|
||||
"loopType": {
|
||||
"id": "loopType",
|
||||
"type": "short-input",
|
||||
"value": "forEach"
|
||||
},
|
||||
"collection": {
|
||||
"id": "collection",
|
||||
"type": "short-input",
|
||||
"value": "<parseAttendees.result.attendees>"
|
||||
}
|
||||
},
|
||||
"outputs": {},
|
||||
"data": {
|
||||
"width": 550,
|
||||
"height": 588,
|
||||
"loopType": "forEach",
|
||||
"collection": "<parseAttendees.result.attendees>",
|
||||
"whileCondition": "",
|
||||
"doWhileCondition": ""
|
||||
},
|
||||
"locked": false
|
||||
},
|
||||
"663243e9-73ee-4efb-beae-65ddcbe480f8": {
|
||||
"id": "663243e9-73ee-4efb-beae-65ddcbe480f8",
|
||||
"type": "note",
|
||||
"name": "Calendar Setup",
|
||||
"position": {
|
||||
"x": 648,
|
||||
"y": -54
|
||||
},
|
||||
"enabled": true,
|
||||
"horizontalHandles": true,
|
||||
"advancedMode": false,
|
||||
"triggerMode": false,
|
||||
"height": 0,
|
||||
"subBlocks": {
|
||||
"content": {
|
||||
"id": "content",
|
||||
"type": "short-input",
|
||||
"value": "- Connect Google Calendar Account \n- Select Calendar \n- Set Start and End Time Filters"
|
||||
}
|
||||
},
|
||||
"outputs": {},
|
||||
"data": {},
|
||||
"locked": false
|
||||
},
|
||||
"ce6ca249-fcdf-45fc-824e-0511879469f2": {
|
||||
"id": "ce6ca249-fcdf-45fc-824e-0511879469f2",
|
||||
"type": "agent",
|
||||
"name": "emailDrafter",
|
||||
"position": {
|
||||
"x": 1150,
|
||||
"y": 150
|
||||
},
|
||||
"enabled": true,
|
||||
"horizontalHandles": true,
|
||||
"advancedMode": false,
|
||||
"triggerMode": false,
|
||||
"height": 259,
|
||||
"subBlocks": {
|
||||
"model": {
|
||||
"id": "model",
|
||||
"type": "short-input",
|
||||
"value": "gemini-2.5-pro"
|
||||
},
|
||||
"tools": {
|
||||
"id": "tools",
|
||||
"type": "tool-input",
|
||||
"value": []
|
||||
},
|
||||
"apiKey": {
|
||||
"id": "apiKey",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"skills": {
|
||||
"id": "skills",
|
||||
"type": "skill-input",
|
||||
"value": null
|
||||
},
|
||||
"messages": {
|
||||
"id": "messages",
|
||||
"type": "messages-input",
|
||||
"value": [
|
||||
{
|
||||
"role": "system",
|
||||
"content": "Draft follow-up emails based on meeting details. Create a professional follow-up email summarizing the meeting and any action items.\n\nIMPORTANT: For the attendees field, you MUST return a comma-separated string of email addresses, NOT an array. Format example: \"john@example.com, jane@example.com, bob@example.com\""
|
||||
},
|
||||
{
|
||||
"role": "user",
|
||||
"content": "Meeting details:\nTitle: <calendarevents.events>\n\nPlease draft a professional follow-up email for this meeting. Include:\n1. Thank the attendees for their time\n2. Summarize key discussion points from the meeting title/description\n3. List any action items or next steps\n4. Professional sign-off\n\nRemember: Return attendees as a comma-separated string like \"email1@example.com, email2@example.com\""
|
||||
}
|
||||
]
|
||||
},
|
||||
"maxTokens": {
|
||||
"id": "maxTokens",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"verbosity": {
|
||||
"id": "verbosity",
|
||||
"type": "dropdown",
|
||||
"value": null
|
||||
},
|
||||
"memoryType": {
|
||||
"id": "memoryType",
|
||||
"type": "dropdown",
|
||||
"value": "none"
|
||||
},
|
||||
"temperature": {
|
||||
"id": "temperature",
|
||||
"type": "short-input",
|
||||
"value": 0.3
|
||||
},
|
||||
"azureEndpoint": {
|
||||
"id": "azureEndpoint",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"bedrockRegion": {
|
||||
"id": "bedrockRegion",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"thinkingLevel": {
|
||||
"id": "thinkingLevel",
|
||||
"type": "dropdown",
|
||||
"value": null
|
||||
},
|
||||
"vertexProject": {
|
||||
"id": "vertexProject",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"conversationId": {
|
||||
"id": "conversationId",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"responseFormat": {
|
||||
"id": "responseFormat",
|
||||
"type": "short-input",
|
||||
"value": "{\n \"json_schema\": {\n \"name\": \"email_output\",\n \"schema\": {\n \"additionalProperties\": false,\n \"properties\": {\n \"attendees\": {\n \"description\": \"A comma-separated string of attendee email addresses. Format as: email1@example.com, email2@example.com (NOT an array, must be a single string with emails separated by commas)\",\n \"type\": \"string\"\n },\n \"body\": {\n \"description\": \"Email body content\",\n \"type\": \"string\"\n },\n \"subject\": {\n \"description\": \"Email subject line\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"subject\",\n \"body\",\n \"attendees\"\n ],\n \"type\": \"object\"\n },\n \"strict\": true\n },\n \"type\": \"json_schema\"\n}"
|
||||
},
|
||||
"vertexLocation": {
|
||||
"id": "vertexLocation",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"azureApiVersion": {
|
||||
"id": "azureApiVersion",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"reasoningEffort": {
|
||||
"id": "reasoningEffort",
|
||||
"type": "dropdown",
|
||||
"value": null
|
||||
},
|
||||
"bedrockSecretKey": {
|
||||
"id": "bedrockSecretKey",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"manualCredential": {
|
||||
"id": "manualCredential",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"vertexCredential": {
|
||||
"id": "vertexCredential",
|
||||
"type": "oauth-input",
|
||||
"value": null
|
||||
},
|
||||
"slidingWindowSize": {
|
||||
"id": "slidingWindowSize",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"bedrockAccessKeyId": {
|
||||
"id": "bedrockAccessKeyId",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"slidingWindowTokens": {
|
||||
"id": "slidingWindowTokens",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"previousInteractionId": {
|
||||
"id": "previousInteractionId",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"cost": {
|
||||
"type": "json",
|
||||
"description": "Cost of the API call"
|
||||
},
|
||||
"model": {
|
||||
"type": "string",
|
||||
"description": "Model used for generation"
|
||||
},
|
||||
"tokens": {
|
||||
"type": "json",
|
||||
"description": "Token usage statistics"
|
||||
},
|
||||
"content": {
|
||||
"type": "string",
|
||||
"description": "Generated response content"
|
||||
},
|
||||
"toolCalls": {
|
||||
"type": "json",
|
||||
"description": "Tool calls made"
|
||||
},
|
||||
"providerTiming": {
|
||||
"type": "json",
|
||||
"description": "Provider timing information"
|
||||
}
|
||||
},
|
||||
"data": {
|
||||
"canonicalModes": {
|
||||
"oauthCredential": "basic"
|
||||
}
|
||||
},
|
||||
"locked": false
|
||||
},
|
||||
"ddb0094c-3f55-43e1-8198-8372a63c0a2c": {
|
||||
"id": "ddb0094c-3f55-43e1-8198-8372a63c0a2c",
|
||||
"type": "google_calendar_v2",
|
||||
"name": "calendarEvents",
|
||||
"position": {
|
||||
"x": 649,
|
||||
"y": 150
|
||||
},
|
||||
"enabled": true,
|
||||
"horizontalHandles": true,
|
||||
"advancedMode": false,
|
||||
"triggerMode": false,
|
||||
"height": 230,
|
||||
"subBlocks": {
|
||||
"text": {
|
||||
"id": "text",
|
||||
"type": "long-input",
|
||||
"value": null
|
||||
},
|
||||
"eventId": {
|
||||
"id": "eventId",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"summary": {
|
||||
"id": "summary",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"timeMax": {
|
||||
"id": "timeMax",
|
||||
"type": "short-input",
|
||||
"value": ""
|
||||
},
|
||||
"timeMin": {
|
||||
"id": "timeMin",
|
||||
"type": "short-input",
|
||||
"value": ""
|
||||
},
|
||||
"location": {
|
||||
"id": "location",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"attendees": {
|
||||
"id": "attendees",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"operation": {
|
||||
"id": "operation",
|
||||
"type": "short-input",
|
||||
"value": "list"
|
||||
},
|
||||
"calendarId": {
|
||||
"id": "calendarId",
|
||||
"type": "file-selector",
|
||||
"value": null
|
||||
},
|
||||
"credential": {
|
||||
"id": "credential",
|
||||
"type": "oauth-input",
|
||||
"value": null
|
||||
},
|
||||
"maxResults": {
|
||||
"id": "maxResults",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"description": {
|
||||
"id": "description",
|
||||
"type": "long-input",
|
||||
"value": null
|
||||
},
|
||||
"endDateTime": {
|
||||
"id": "endDateTime",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"sendUpdates": {
|
||||
"id": "sendUpdates",
|
||||
"type": "dropdown",
|
||||
"value": null
|
||||
},
|
||||
"minAccessRole": {
|
||||
"id": "minAccessRole",
|
||||
"type": "dropdown",
|
||||
"value": null
|
||||
},
|
||||
"startDateTime": {
|
||||
"id": "startDateTime",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"replaceExisting": {
|
||||
"id": "replaceExisting",
|
||||
"type": "dropdown",
|
||||
"value": null
|
||||
},
|
||||
"manualCalendarId": {
|
||||
"id": "manualCalendarId",
|
||||
"type": "short-input",
|
||||
"value": ""
|
||||
},
|
||||
"manualCredential": {
|
||||
"id": "manualCredential",
|
||||
"type": "short-input",
|
||||
"value": ""
|
||||
},
|
||||
"destinationCalendar": {
|
||||
"id": "destinationCalendar",
|
||||
"type": "file-selector",
|
||||
"value": null
|
||||
},
|
||||
"manualDestinationCalendarId": {
|
||||
"id": "manualDestinationCalendarId",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"events": {
|
||||
"type": "json",
|
||||
"description": "List of events"
|
||||
},
|
||||
"timeZone": {
|
||||
"type": "string",
|
||||
"optional": true,
|
||||
"description": "Calendar time zone"
|
||||
},
|
||||
"nextPageToken": {
|
||||
"type": "string",
|
||||
"optional": true,
|
||||
"description": "Next page token"
|
||||
}
|
||||
},
|
||||
"data": {
|
||||
"canonicalModes": {
|
||||
"calendarId": "basic",
|
||||
"oauthCredential": "basic",
|
||||
"destinationCalendarId": "basic"
|
||||
}
|
||||
},
|
||||
"locked": false
|
||||
},
|
||||
"836f06e4-b3d3-47f5-977d-1d1e98d1f029": {
|
||||
"id": "836f06e4-b3d3-47f5-977d-1d1e98d1f029",
|
||||
"type": "gmail_v2",
|
||||
"name": "sendEmail",
|
||||
"position": {
|
||||
"x": 180,
|
||||
"y": 100
|
||||
},
|
||||
"enabled": true,
|
||||
"horizontalHandles": true,
|
||||
"advancedMode": false,
|
||||
"triggerMode": false,
|
||||
"height": 288,
|
||||
"subBlocks": {
|
||||
"cc": {
|
||||
"id": "cc",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"to": {
|
||||
"id": "to",
|
||||
"type": "short-input",
|
||||
"value": "<loop.currentItem>"
|
||||
},
|
||||
"bcc": {
|
||||
"id": "bcc",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"body": {
|
||||
"id": "body",
|
||||
"type": "short-input",
|
||||
"value": "<emailDrafter.content.body>"
|
||||
},
|
||||
"query": {
|
||||
"id": "query",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"folder": {
|
||||
"id": "folder",
|
||||
"type": "folder-selector",
|
||||
"value": null
|
||||
},
|
||||
"subject": {
|
||||
"id": "subject",
|
||||
"type": "short-input",
|
||||
"value": "<emailDrafter.content.subject>"
|
||||
},
|
||||
"labelIds": {
|
||||
"id": "labelIds",
|
||||
"type": "dropdown",
|
||||
"value": null
|
||||
},
|
||||
"threadId": {
|
||||
"id": "threadId",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"messageId": {
|
||||
"id": "messageId",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"operation": {
|
||||
"id": "operation",
|
||||
"type": "short-input",
|
||||
"value": "send_gmail"
|
||||
},
|
||||
"credential": {
|
||||
"id": "credential",
|
||||
"type": "oauth-input",
|
||||
"value": null
|
||||
},
|
||||
"markAsRead": {
|
||||
"id": "markAsRead",
|
||||
"type": "switch",
|
||||
"value": null
|
||||
},
|
||||
"maxResults": {
|
||||
"id": "maxResults",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"unreadOnly": {
|
||||
"id": "unreadOnly",
|
||||
"type": "switch",
|
||||
"value": null
|
||||
},
|
||||
"attachments": {
|
||||
"id": "attachments",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"contentType": {
|
||||
"id": "contentType",
|
||||
"type": "short-input",
|
||||
"value": "text"
|
||||
},
|
||||
"searchQuery": {
|
||||
"id": "searchQuery",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"sourceLabel": {
|
||||
"id": "sourceLabel",
|
||||
"type": "folder-selector",
|
||||
"value": null
|
||||
},
|
||||
"manualFolder": {
|
||||
"id": "manualFolder",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"labelSelector": {
|
||||
"id": "labelSelector",
|
||||
"type": "folder-selector",
|
||||
"value": null
|
||||
},
|
||||
"manualLabelId": {
|
||||
"id": "manualLabelId",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"moveMessageId": {
|
||||
"id": "moveMessageId",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"actionMessageId": {
|
||||
"id": "actionMessageId",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"attachmentFiles": {
|
||||
"id": "attachmentFiles",
|
||||
"type": "file-upload",
|
||||
"value": null
|
||||
},
|
||||
"destinationLabel": {
|
||||
"id": "destinationLabel",
|
||||
"type": "folder-selector",
|
||||
"value": null
|
||||
},
|
||||
"manualCredential": {
|
||||
"id": "manualCredential",
|
||||
"type": "short-input",
|
||||
"value": ""
|
||||
},
|
||||
"replyToMessageId": {
|
||||
"id": "replyToMessageId",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"manualSourceLabel": {
|
||||
"id": "manualSourceLabel",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"includeAttachments": {
|
||||
"id": "includeAttachments",
|
||||
"type": "switch",
|
||||
"value": null
|
||||
},
|
||||
"triggerCredentials": {
|
||||
"id": "triggerCredentials",
|
||||
"type": "oauth-input",
|
||||
"value": null
|
||||
},
|
||||
"labelFilterBehavior": {
|
||||
"id": "labelFilterBehavior",
|
||||
"type": "dropdown",
|
||||
"value": null
|
||||
},
|
||||
"triggerInstructions": {
|
||||
"id": "triggerInstructions",
|
||||
"type": "text",
|
||||
"value": null
|
||||
},
|
||||
"labelActionMessageId": {
|
||||
"id": "labelActionMessageId",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"manualDestinationLabel": {
|
||||
"id": "manualDestinationLabel",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"samplePayload_gmail_poller": {
|
||||
"id": "samplePayload_gmail_poller",
|
||||
"type": "code",
|
||||
"value": null
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"id": {
|
||||
"type": "string",
|
||||
"optional": true,
|
||||
"description": "Gmail message ID"
|
||||
},
|
||||
"labelIds": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"optional": true,
|
||||
"description": "Email labels"
|
||||
},
|
||||
"threadId": {
|
||||
"type": "string",
|
||||
"optional": true,
|
||||
"description": "Gmail thread ID"
|
||||
}
|
||||
},
|
||||
"data": {
|
||||
"extent": "parent",
|
||||
"parentId": "a2b4bbcb-aa56-46ce-9e42-2e4933c57f71",
|
||||
"canonicalModes": {
|
||||
"folder": "basic",
|
||||
"addLabelIds": "basic",
|
||||
"attachments": "basic",
|
||||
"manageLabelId": "basic",
|
||||
"removeLabelIds": "basic",
|
||||
"oauthCredential": "basic"
|
||||
}
|
||||
},
|
||||
"locked": false
|
||||
},
|
||||
"038cd27a-de0c-479a-a69b-f424b5da01b3": {
|
||||
"id": "038cd27a-de0c-479a-a69b-f424b5da01b3",
|
||||
"type": "note",
|
||||
"name": "Gmail Setup",
|
||||
"position": {
|
||||
"x": 2275,
|
||||
"y": 12.5
|
||||
},
|
||||
"enabled": true,
|
||||
"horizontalHandles": true,
|
||||
"advancedMode": false,
|
||||
"triggerMode": false,
|
||||
"height": 114,
|
||||
"subBlocks": {
|
||||
"content": {
|
||||
"id": "content",
|
||||
"type": "short-input",
|
||||
"value": "- Connect Gmail Account"
|
||||
}
|
||||
},
|
||||
"outputs": {},
|
||||
"data": {},
|
||||
"locked": false
|
||||
}
|
||||
},
|
||||
"edges": [
|
||||
{
|
||||
"id": "be295f73-9393-4d40-8b01-38fcbcf11674",
|
||||
"source": "9f657d7a-b6d0-4a9d-aaac-ffc909df1b24",
|
||||
"target": "ddb0094c-3f55-43e1-8198-8372a63c0a2c",
|
||||
"sourceHandle": "source",
|
||||
"targetHandle": "target",
|
||||
"type": "default",
|
||||
"data": {}
|
||||
},
|
||||
{
|
||||
"id": "e9b031b1-6957-44f4-a6e6-a9886bb11fb0",
|
||||
"source": "ddb0094c-3f55-43e1-8198-8372a63c0a2c",
|
||||
"target": "ce6ca249-fcdf-45fc-824e-0511879469f2",
|
||||
"sourceHandle": "source",
|
||||
"targetHandle": "target",
|
||||
"type": "default",
|
||||
"data": {}
|
||||
},
|
||||
{
|
||||
"id": "f8b3242c-d811-4988-a56a-34b06b7afaeb",
|
||||
"source": "ce6ca249-fcdf-45fc-824e-0511879469f2",
|
||||
"target": "b6030d6c-ad21-41b2-bd43-8e2ce9633ef1",
|
||||
"sourceHandle": "source",
|
||||
"targetHandle": "target",
|
||||
"type": "default",
|
||||
"data": {}
|
||||
},
|
||||
{
|
||||
"id": "bc0b49f7-6b21-49e6-9469-17885ffa8996",
|
||||
"source": "b6030d6c-ad21-41b2-bd43-8e2ce9633ef1",
|
||||
"target": "a2b4bbcb-aa56-46ce-9e42-2e4933c57f71",
|
||||
"sourceHandle": "source",
|
||||
"targetHandle": "target",
|
||||
"type": "default",
|
||||
"data": {}
|
||||
},
|
||||
{
|
||||
"id": "05315d4f-81b4-464a-bfaf-5afef10d5608",
|
||||
"source": "a2b4bbcb-aa56-46ce-9e42-2e4933c57f71",
|
||||
"target": "836f06e4-b3d3-47f5-977d-1d1e98d1f029",
|
||||
"sourceHandle": "loop-start-source",
|
||||
"targetHandle": "target",
|
||||
"type": "default",
|
||||
"data": {}
|
||||
}
|
||||
],
|
||||
"loops": {
|
||||
"a2b4bbcb-aa56-46ce-9e42-2e4933c57f71": {
|
||||
"id": "a2b4bbcb-aa56-46ce-9e42-2e4933c57f71",
|
||||
"nodes": ["836f06e4-b3d3-47f5-977d-1d1e98d1f029"],
|
||||
"iterations": 5,
|
||||
"loopType": "forEach",
|
||||
"enabled": true,
|
||||
"forEachItems": "<parseAttendees.result.attendees>",
|
||||
"whileCondition": "",
|
||||
"doWhileCondition": ""
|
||||
}
|
||||
},
|
||||
"parallels": {},
|
||||
"metadata": {
|
||||
"name": "meeting-followup-agent",
|
||||
"description": "New workflow",
|
||||
"color": "#2ed96a",
|
||||
"exportedAt": "2026-03-09T21:40:19.013Z"
|
||||
},
|
||||
"variables": {}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,821 @@
|
||||
{
|
||||
"version": "1.0",
|
||||
"exportedAt": "2026-03-09T21:40:19.014Z",
|
||||
"state": {
|
||||
"blocks": {
|
||||
"88c4fce8-e349-41ba-9dbd-ca63b6d34b60": {
|
||||
"id": "88c4fce8-e349-41ba-9dbd-ca63b6d34b60",
|
||||
"type": "supabase",
|
||||
"name": "supabaseInvoices",
|
||||
"position": {
|
||||
"x": 1650,
|
||||
"y": 150
|
||||
},
|
||||
"enabled": true,
|
||||
"horizontalHandles": true,
|
||||
"advancedMode": false,
|
||||
"triggerMode": false,
|
||||
"height": 259,
|
||||
"subBlocks": {
|
||||
"data": {
|
||||
"id": "data",
|
||||
"type": "short-input",
|
||||
"value": "<invoiceExtractor.content>"
|
||||
},
|
||||
"file": {
|
||||
"id": "file",
|
||||
"type": "file-upload",
|
||||
"value": null
|
||||
},
|
||||
"path": {
|
||||
"id": "path",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"limit": {
|
||||
"id": "limit",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"paths": {
|
||||
"id": "paths",
|
||||
"type": "code",
|
||||
"value": null
|
||||
},
|
||||
"query": {
|
||||
"id": "query",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"table": {
|
||||
"id": "table",
|
||||
"type": "short-input",
|
||||
"value": "invoices"
|
||||
},
|
||||
"apiKey": {
|
||||
"id": "apiKey",
|
||||
"type": "short-input",
|
||||
"value": "{{SUPABASE_API_KEY}}"
|
||||
},
|
||||
"bucket": {
|
||||
"id": "bucket",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"column": {
|
||||
"id": "column",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"filter": {
|
||||
"id": "filter",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"offset": {
|
||||
"id": "offset",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"params": {
|
||||
"id": "params",
|
||||
"type": "code",
|
||||
"value": null
|
||||
},
|
||||
"schema": {
|
||||
"id": "schema",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"search": {
|
||||
"id": "search",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"select": {
|
||||
"id": "select",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"sortBy": {
|
||||
"id": "sortBy",
|
||||
"type": "dropdown",
|
||||
"value": null
|
||||
},
|
||||
"toPath": {
|
||||
"id": "toPath",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"upsert": {
|
||||
"id": "upsert",
|
||||
"type": "dropdown",
|
||||
"value": null
|
||||
},
|
||||
"orderBy": {
|
||||
"id": "orderBy",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"download": {
|
||||
"id": "download",
|
||||
"type": "dropdown",
|
||||
"value": null
|
||||
},
|
||||
"fileName": {
|
||||
"id": "fileName",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"fromPath": {
|
||||
"id": "fromPath",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"isPublic": {
|
||||
"id": "isPublic",
|
||||
"type": "dropdown",
|
||||
"value": null
|
||||
},
|
||||
"language": {
|
||||
"id": "language",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"countType": {
|
||||
"id": "countType",
|
||||
"type": "dropdown",
|
||||
"value": null
|
||||
},
|
||||
"expiresIn": {
|
||||
"id": "expiresIn",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"operation": {
|
||||
"id": "operation",
|
||||
"type": "short-input",
|
||||
"value": "insert"
|
||||
},
|
||||
"projectId": {
|
||||
"id": "projectId",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"sortOrder": {
|
||||
"id": "sortOrder",
|
||||
"type": "dropdown",
|
||||
"value": null
|
||||
},
|
||||
"matchCount": {
|
||||
"id": "matchCount",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"searchType": {
|
||||
"id": "searchType",
|
||||
"type": "dropdown",
|
||||
"value": null
|
||||
},
|
||||
"contentType": {
|
||||
"id": "contentType",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"fileContent": {
|
||||
"id": "fileContent",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"functionName": {
|
||||
"id": "functionName",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"fileSizeLimit": {
|
||||
"id": "fileSizeLimit",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"matchThreshold": {
|
||||
"id": "matchThreshold",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"queryEmbedding": {
|
||||
"id": "queryEmbedding",
|
||||
"type": "code",
|
||||
"value": null
|
||||
},
|
||||
"allowedMimeTypes": {
|
||||
"id": "allowedMimeTypes",
|
||||
"type": "code",
|
||||
"value": null
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"message": {
|
||||
"type": "string",
|
||||
"description": "Operation status message"
|
||||
},
|
||||
"results": {
|
||||
"type": "array",
|
||||
"description": "Array of inserted records"
|
||||
}
|
||||
},
|
||||
"data": {
|
||||
"canonicalModes": {
|
||||
"fileData": "basic"
|
||||
}
|
||||
},
|
||||
"locked": false
|
||||
},
|
||||
"1fbe6757-baa6-4488-8b4d-e71afaea3bda": {
|
||||
"id": "1fbe6757-baa6-4488-8b4d-e71afaea3bda",
|
||||
"type": "file_v3",
|
||||
"name": "File Parser",
|
||||
"position": {
|
||||
"x": 650,
|
||||
"y": 150
|
||||
},
|
||||
"enabled": true,
|
||||
"horizontalHandles": true,
|
||||
"advancedMode": false,
|
||||
"triggerMode": false,
|
||||
"height": 0,
|
||||
"subBlocks": {
|
||||
"file": {
|
||||
"id": "file",
|
||||
"type": "file-upload",
|
||||
"value": null
|
||||
},
|
||||
"fileUrl": {
|
||||
"id": "fileUrl",
|
||||
"type": "short-input",
|
||||
"value": "<gmailtrigger.email.attachments[0].url>"
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"files": {
|
||||
"type": "file[]",
|
||||
"description": "Parsed files as UserFile objects"
|
||||
},
|
||||
"combinedContent": {
|
||||
"type": "string",
|
||||
"description": "Combined content of all parsed files"
|
||||
}
|
||||
},
|
||||
"data": {
|
||||
"canonicalModes": {
|
||||
"fileInput": "advanced"
|
||||
}
|
||||
},
|
||||
"locked": false
|
||||
},
|
||||
"f9f5e591-70a5-46a6-9cc2-84078e7022e8": {
|
||||
"id": "f9f5e591-70a5-46a6-9cc2-84078e7022e8",
|
||||
"type": "agent",
|
||||
"name": "invoiceExtractor",
|
||||
"position": {
|
||||
"x": 1150,
|
||||
"y": 152.09459172294703
|
||||
},
|
||||
"enabled": true,
|
||||
"horizontalHandles": true,
|
||||
"advancedMode": false,
|
||||
"triggerMode": false,
|
||||
"height": 259,
|
||||
"subBlocks": {
|
||||
"model": {
|
||||
"id": "model",
|
||||
"type": "short-input",
|
||||
"value": "gpt-5.2"
|
||||
},
|
||||
"tools": {
|
||||
"id": "tools",
|
||||
"type": "short-input",
|
||||
"value": [
|
||||
{
|
||||
"type": "mistral_parse_v3",
|
||||
"title": "Mistral Parser",
|
||||
"params": {
|
||||
"resultType": "markdown",
|
||||
"fileReference": "<fileparser.files[0]>"
|
||||
},
|
||||
"toolId": "mistral_parser_v3",
|
||||
"isExpanded": true,
|
||||
"usageControl": "auto"
|
||||
}
|
||||
]
|
||||
},
|
||||
"apiKey": {
|
||||
"id": "apiKey",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"skills": {
|
||||
"id": "skills",
|
||||
"type": "skill-input",
|
||||
"value": null
|
||||
},
|
||||
"messages": {
|
||||
"id": "messages",
|
||||
"type": "messages-input",
|
||||
"value": [
|
||||
{
|
||||
"role": "system",
|
||||
"content": "Extract invoice fields from the provided PDF document"
|
||||
},
|
||||
{
|
||||
"role": "user",
|
||||
"content": "Extract all invoice fields from the PDF document attached to this email. The attachment URL is: <gmailtrigger.email.attachments[0].url>. Use the Textract tool to parse the document and extract the invoice data."
|
||||
}
|
||||
]
|
||||
},
|
||||
"maxTokens": {
|
||||
"id": "maxTokens",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"verbosity": {
|
||||
"id": "verbosity",
|
||||
"type": "dropdown",
|
||||
"value": null
|
||||
},
|
||||
"memoryType": {
|
||||
"id": "memoryType",
|
||||
"type": "dropdown",
|
||||
"value": "none"
|
||||
},
|
||||
"temperature": {
|
||||
"id": "temperature",
|
||||
"type": "short-input",
|
||||
"value": 0.3
|
||||
},
|
||||
"azureEndpoint": {
|
||||
"id": "azureEndpoint",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"bedrockRegion": {
|
||||
"id": "bedrockRegion",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"thinkingLevel": {
|
||||
"id": "thinkingLevel",
|
||||
"type": "dropdown",
|
||||
"value": null
|
||||
},
|
||||
"vertexProject": {
|
||||
"id": "vertexProject",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"conversationId": {
|
||||
"id": "conversationId",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"responseFormat": {
|
||||
"id": "responseFormat",
|
||||
"type": "code",
|
||||
"value": null
|
||||
},
|
||||
"vertexLocation": {
|
||||
"id": "vertexLocation",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"azureApiVersion": {
|
||||
"id": "azureApiVersion",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"reasoningEffort": {
|
||||
"id": "reasoningEffort",
|
||||
"type": "dropdown",
|
||||
"value": null
|
||||
},
|
||||
"bedrockSecretKey": {
|
||||
"id": "bedrockSecretKey",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"manualCredential": {
|
||||
"id": "manualCredential",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"vertexCredential": {
|
||||
"id": "vertexCredential",
|
||||
"type": "oauth-input",
|
||||
"value": null
|
||||
},
|
||||
"slidingWindowSize": {
|
||||
"id": "slidingWindowSize",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"bedrockAccessKeyId": {
|
||||
"id": "bedrockAccessKeyId",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"slidingWindowTokens": {
|
||||
"id": "slidingWindowTokens",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"previousInteractionId": {
|
||||
"id": "previousInteractionId",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"cost": {
|
||||
"type": "json",
|
||||
"description": "Cost of the API call"
|
||||
},
|
||||
"model": {
|
||||
"type": "string",
|
||||
"description": "Model used for generation"
|
||||
},
|
||||
"tokens": {
|
||||
"type": "json",
|
||||
"description": "Token usage statistics"
|
||||
},
|
||||
"content": {
|
||||
"type": "string",
|
||||
"description": "Generated response content"
|
||||
},
|
||||
"toolCalls": {
|
||||
"type": "json",
|
||||
"description": "Tool calls made"
|
||||
},
|
||||
"providerTiming": {
|
||||
"type": "json",
|
||||
"description": "Provider timing information"
|
||||
}
|
||||
},
|
||||
"data": {
|
||||
"canonicalModes": {
|
||||
"oauthCredential": "basic",
|
||||
"mistral_parse_v3:document": "advanced"
|
||||
}
|
||||
},
|
||||
"locked": false
|
||||
},
|
||||
"a1880fed-ec19-4720-bdd3-6856c4425bc2": {
|
||||
"id": "a1880fed-ec19-4720-bdd3-6856c4425bc2",
|
||||
"type": "gmail_v2",
|
||||
"name": "gmailTrigger",
|
||||
"position": {
|
||||
"x": 150,
|
||||
"y": 150
|
||||
},
|
||||
"enabled": true,
|
||||
"horizontalHandles": true,
|
||||
"advancedMode": false,
|
||||
"triggerMode": true,
|
||||
"height": 0,
|
||||
"subBlocks": {
|
||||
"cc": {
|
||||
"id": "cc",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"to": {
|
||||
"id": "to",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"bcc": {
|
||||
"id": "bcc",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"body": {
|
||||
"id": "body",
|
||||
"type": "long-input",
|
||||
"value": null
|
||||
},
|
||||
"query": {
|
||||
"id": "query",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"folder": {
|
||||
"id": "folder",
|
||||
"type": "folder-selector",
|
||||
"value": null
|
||||
},
|
||||
"subject": {
|
||||
"id": "subject",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"labelIds": {
|
||||
"id": "labelIds",
|
||||
"type": "dropdown",
|
||||
"value": null
|
||||
},
|
||||
"threadId": {
|
||||
"id": "threadId",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"messageId": {
|
||||
"id": "messageId",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"operation": {
|
||||
"id": "operation",
|
||||
"type": "dropdown",
|
||||
"value": null
|
||||
},
|
||||
"credential": {
|
||||
"id": "credential",
|
||||
"type": "oauth-input",
|
||||
"value": null
|
||||
},
|
||||
"markAsRead": {
|
||||
"id": "markAsRead",
|
||||
"type": "short-input",
|
||||
"value": false
|
||||
},
|
||||
"maxResults": {
|
||||
"id": "maxResults",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"unreadOnly": {
|
||||
"id": "unreadOnly",
|
||||
"type": "switch",
|
||||
"value": null
|
||||
},
|
||||
"attachments": {
|
||||
"id": "attachments",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"contentType": {
|
||||
"id": "contentType",
|
||||
"type": "dropdown",
|
||||
"value": null
|
||||
},
|
||||
"searchQuery": {
|
||||
"id": "searchQuery",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"sourceLabel": {
|
||||
"id": "sourceLabel",
|
||||
"type": "folder-selector",
|
||||
"value": null
|
||||
},
|
||||
"manualFolder": {
|
||||
"id": "manualFolder",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"labelSelector": {
|
||||
"id": "labelSelector",
|
||||
"type": "folder-selector",
|
||||
"value": null
|
||||
},
|
||||
"manualLabelId": {
|
||||
"id": "manualLabelId",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"moveMessageId": {
|
||||
"id": "moveMessageId",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"actionMessageId": {
|
||||
"id": "actionMessageId",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"attachmentFiles": {
|
||||
"id": "attachmentFiles",
|
||||
"type": "file-upload",
|
||||
"value": null
|
||||
},
|
||||
"destinationLabel": {
|
||||
"id": "destinationLabel",
|
||||
"type": "folder-selector",
|
||||
"value": null
|
||||
},
|
||||
"manualCredential": {
|
||||
"id": "manualCredential",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"replyToMessageId": {
|
||||
"id": "replyToMessageId",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"manualSourceLabel": {
|
||||
"id": "manualSourceLabel",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"includeAttachments": {
|
||||
"id": "includeAttachments",
|
||||
"type": "short-input",
|
||||
"value": true
|
||||
},
|
||||
"triggerCredentials": {
|
||||
"id": "triggerCredentials",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"labelFilterBehavior": {
|
||||
"id": "labelFilterBehavior",
|
||||
"type": "short-input",
|
||||
"value": "INCLUDE"
|
||||
},
|
||||
"triggerInstructions": {
|
||||
"id": "triggerInstructions",
|
||||
"type": "text",
|
||||
"value": null
|
||||
},
|
||||
"labelActionMessageId": {
|
||||
"id": "labelActionMessageId",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"manualDestinationLabel": {
|
||||
"id": "manualDestinationLabel",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"samplePayload_gmail_poller": {
|
||||
"id": "samplePayload_gmail_poller",
|
||||
"type": "code",
|
||||
"value": null
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"email": {
|
||||
"cc": {
|
||||
"type": "string",
|
||||
"description": "CC recipients"
|
||||
},
|
||||
"id": {
|
||||
"type": "string",
|
||||
"description": "Gmail message ID"
|
||||
},
|
||||
"to": {
|
||||
"type": "string",
|
||||
"description": "Recipient email address"
|
||||
},
|
||||
"date": {
|
||||
"type": "string",
|
||||
"description": "Email date in ISO format"
|
||||
},
|
||||
"from": {
|
||||
"type": "string",
|
||||
"description": "Sender email address"
|
||||
},
|
||||
"labels": {
|
||||
"type": "string",
|
||||
"description": "Email labels array"
|
||||
},
|
||||
"subject": {
|
||||
"type": "string",
|
||||
"description": "Email subject line"
|
||||
},
|
||||
"bodyHtml": {
|
||||
"type": "string",
|
||||
"description": "HTML email body"
|
||||
},
|
||||
"bodyText": {
|
||||
"type": "string",
|
||||
"description": "Plain text email body"
|
||||
},
|
||||
"threadId": {
|
||||
"type": "string",
|
||||
"description": "Gmail thread ID"
|
||||
},
|
||||
"attachments": {
|
||||
"type": "file[]",
|
||||
"description": "Array of email attachments as files (if includeAttachments is enabled)"
|
||||
},
|
||||
"hasAttachments": {
|
||||
"type": "boolean",
|
||||
"description": "Whether email has attachments"
|
||||
}
|
||||
},
|
||||
"timestamp": {
|
||||
"type": "string",
|
||||
"description": "Event timestamp"
|
||||
}
|
||||
},
|
||||
"data": {
|
||||
"canonicalModes": {
|
||||
"folder": "basic",
|
||||
"addLabelIds": "basic",
|
||||
"attachments": "basic",
|
||||
"manageLabelId": "basic",
|
||||
"removeLabelIds": "basic",
|
||||
"oauthCredential": "basic"
|
||||
}
|
||||
},
|
||||
"locked": false
|
||||
},
|
||||
"6ca6a47e-36db-4728-aa23-635bdcb3fa70": {
|
||||
"id": "6ca6a47e-36db-4728-aa23-635bdcb3fa70",
|
||||
"type": "note",
|
||||
"name": "Gmail Setup",
|
||||
"position": {
|
||||
"x": 147.09586673447242,
|
||||
"y": 14.230452516160646
|
||||
},
|
||||
"enabled": true,
|
||||
"horizontalHandles": true,
|
||||
"advancedMode": false,
|
||||
"triggerMode": false,
|
||||
"height": 0,
|
||||
"subBlocks": {
|
||||
"content": {
|
||||
"id": "content",
|
||||
"type": "long-input",
|
||||
"value": "- Connect Gmail Account \n- Select Relevant Labels if needed"
|
||||
}
|
||||
},
|
||||
"outputs": {},
|
||||
"data": {},
|
||||
"locked": false
|
||||
},
|
||||
"16e2b354-2924-4022-9335-59bd929f1381": {
|
||||
"id": "16e2b354-2924-4022-9335-59bd929f1381",
|
||||
"type": "note",
|
||||
"name": "Supabase Setup",
|
||||
"position": {
|
||||
"x": 1659.0192982175643,
|
||||
"y": -65.81005643625652
|
||||
},
|
||||
"enabled": true,
|
||||
"horizontalHandles": true,
|
||||
"advancedMode": false,
|
||||
"triggerMode": false,
|
||||
"height": 114,
|
||||
"subBlocks": {
|
||||
"content": {
|
||||
"id": "content",
|
||||
"type": "long-input",
|
||||
"value": "- Set Supabase Project Id in a Secret as {{SUPABASE_PROJECT_ID}}\n- Set service role secret as {{SUPABASE_API_KEY}}"
|
||||
}
|
||||
},
|
||||
"outputs": {},
|
||||
"data": {},
|
||||
"locked": false
|
||||
}
|
||||
},
|
||||
"edges": [
|
||||
{
|
||||
"id": "632109a8-f13f-482c-b24b-ae0078bc8834",
|
||||
"source": "f9f5e591-70a5-46a6-9cc2-84078e7022e8",
|
||||
"target": "88c4fce8-e349-41ba-9dbd-ca63b6d34b60",
|
||||
"sourceHandle": "source",
|
||||
"targetHandle": "target",
|
||||
"type": "default",
|
||||
"data": {}
|
||||
},
|
||||
{
|
||||
"id": "dd6a5faf-af38-4b5b-983a-4d9155b7dcb3",
|
||||
"source": "1fbe6757-baa6-4488-8b4d-e71afaea3bda",
|
||||
"target": "f9f5e591-70a5-46a6-9cc2-84078e7022e8",
|
||||
"sourceHandle": "source",
|
||||
"targetHandle": "target",
|
||||
"type": "default",
|
||||
"data": {}
|
||||
},
|
||||
{
|
||||
"id": "7780c36d-56c7-4349-bf32-df2911676dd3",
|
||||
"source": "a1880fed-ec19-4720-bdd3-6856c4425bc2",
|
||||
"target": "1fbe6757-baa6-4488-8b4d-e71afaea3bda",
|
||||
"sourceHandle": "source",
|
||||
"targetHandle": "target",
|
||||
"type": "default",
|
||||
"data": {}
|
||||
}
|
||||
],
|
||||
"loops": {},
|
||||
"parallels": {},
|
||||
"metadata": {
|
||||
"name": "ocr-invoice-db",
|
||||
"description": "Your first workflow - start building here!",
|
||||
"color": "#3972F6",
|
||||
"exportedAt": "2026-03-09T21:40:19.014Z"
|
||||
},
|
||||
"variables": {}
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,485 @@
|
||||
{
|
||||
"version": "1.0",
|
||||
"exportedAt": "2026-03-09T21:40:19.013Z",
|
||||
"state": {
|
||||
"blocks": {
|
||||
"1abd6f01-04a4-4c69-9344-4b5cc2afe816": {
|
||||
"id": "1abd6f01-04a4-4c69-9344-4b5cc2afe816",
|
||||
"type": "start_trigger",
|
||||
"name": "Start",
|
||||
"position": {
|
||||
"x": 150,
|
||||
"y": 150
|
||||
},
|
||||
"enabled": true,
|
||||
"horizontalHandles": true,
|
||||
"advancedMode": false,
|
||||
"triggerMode": false,
|
||||
"height": 100,
|
||||
"subBlocks": {
|
||||
"inputFormat": {
|
||||
"id": "inputFormat",
|
||||
"type": "input-format",
|
||||
"value": [
|
||||
{
|
||||
"id": "b2cc9328-2024-4ff0-862f-c0ecaafa0dff",
|
||||
"name": "resumeFile",
|
||||
"type": "file[]",
|
||||
"description": "PDF Resume"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"files": {
|
||||
"type": "file[]",
|
||||
"description": "User uploaded files"
|
||||
},
|
||||
"input": {
|
||||
"type": "string",
|
||||
"description": "Primary user input or message"
|
||||
},
|
||||
"conversationId": {
|
||||
"type": "string",
|
||||
"description": "Conversation thread identifier"
|
||||
}
|
||||
},
|
||||
"data": {},
|
||||
"locked": false
|
||||
},
|
||||
"015feca5-9044-4bc8-be1e-536454264ece": {
|
||||
"id": "015feca5-9044-4bc8-be1e-536454264ece",
|
||||
"type": "agent",
|
||||
"name": "resumeParser",
|
||||
"position": {
|
||||
"x": 581.640625,
|
||||
"y": 150
|
||||
},
|
||||
"enabled": true,
|
||||
"horizontalHandles": true,
|
||||
"advancedMode": false,
|
||||
"triggerMode": false,
|
||||
"height": 288,
|
||||
"subBlocks": {
|
||||
"model": {
|
||||
"id": "model",
|
||||
"type": "short-input",
|
||||
"value": ""
|
||||
},
|
||||
"tools": {
|
||||
"id": "tools",
|
||||
"type": "short-input",
|
||||
"value": [
|
||||
{
|
||||
"type": "mistral_parse_v3",
|
||||
"title": "Mistral Parser",
|
||||
"params": {
|
||||
"resultType": "markdown",
|
||||
"fileReference": "<start.resumeFile>"
|
||||
},
|
||||
"toolId": "mistral_parser_v3",
|
||||
"isExpanded": true,
|
||||
"usageControl": "force"
|
||||
}
|
||||
]
|
||||
},
|
||||
"apiKey": {
|
||||
"id": "apiKey",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"skills": {
|
||||
"id": "skills",
|
||||
"type": "skill-input",
|
||||
"value": null
|
||||
},
|
||||
"messages": {
|
||||
"id": "messages",
|
||||
"type": "messages-input",
|
||||
"value": [
|
||||
{
|
||||
"role": "system",
|
||||
"content": "Parse resume fields"
|
||||
}
|
||||
]
|
||||
},
|
||||
"maxTokens": {
|
||||
"id": "maxTokens",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"verbosity": {
|
||||
"id": "verbosity",
|
||||
"type": "dropdown",
|
||||
"value": null
|
||||
},
|
||||
"memoryType": {
|
||||
"id": "memoryType",
|
||||
"type": "dropdown",
|
||||
"value": "none"
|
||||
},
|
||||
"temperature": {
|
||||
"id": "temperature",
|
||||
"type": "slider",
|
||||
"value": null
|
||||
},
|
||||
"azureEndpoint": {
|
||||
"id": "azureEndpoint",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"bedrockRegion": {
|
||||
"id": "bedrockRegion",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"thinkingLevel": {
|
||||
"id": "thinkingLevel",
|
||||
"type": "dropdown",
|
||||
"value": null
|
||||
},
|
||||
"vertexProject": {
|
||||
"id": "vertexProject",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"conversationId": {
|
||||
"id": "conversationId",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"responseFormat": {
|
||||
"id": "responseFormat",
|
||||
"type": "short-input",
|
||||
"value": "{\n \"name\": \"candidate_info\",\n \"schema\": {\n \"additionalProperties\": false,\n \"properties\": {\n \"education\": {\n \"description\": \"Education background\",\n \"type\": \"string\"\n },\n \"email\": {\n \"description\": \"Candidate's email address\",\n \"type\": \"string\"\n },\n \"experience\": {\n \"description\": \"Work experience summary\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Candidate's full name\",\n \"type\": \"string\"\n },\n \"phone\": {\n \"description\": \"Candidate's phone number\",\n \"type\": \"string\"\n },\n \"skills\": {\n \"description\": \"Key skills\",\n \"type\": \"string\"\n },\n \"summary\": {\n \"description\": \"Professional summary or objective\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"email\",\n \"phone\",\n \"summary\",\n \"experience\",\n \"education\",\n \"skills\"\n ],\n \"type\": \"object\"\n },\n \"strict\": true\n}"
|
||||
},
|
||||
"vertexLocation": {
|
||||
"id": "vertexLocation",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"azureApiVersion": {
|
||||
"id": "azureApiVersion",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"reasoningEffort": {
|
||||
"id": "reasoningEffort",
|
||||
"type": "dropdown",
|
||||
"value": null
|
||||
},
|
||||
"bedrockSecretKey": {
|
||||
"id": "bedrockSecretKey",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"manualCredential": {
|
||||
"id": "manualCredential",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"vertexCredential": {
|
||||
"id": "vertexCredential",
|
||||
"type": "oauth-input",
|
||||
"value": null
|
||||
},
|
||||
"slidingWindowSize": {
|
||||
"id": "slidingWindowSize",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"bedrockAccessKeyId": {
|
||||
"id": "bedrockAccessKeyId",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"slidingWindowTokens": {
|
||||
"id": "slidingWindowTokens",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"previousInteractionId": {
|
||||
"id": "previousInteractionId",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"name": {
|
||||
"type": "string",
|
||||
"description": "Candidate's full name"
|
||||
},
|
||||
"email": {
|
||||
"type": "string",
|
||||
"description": "Candidate's email address"
|
||||
},
|
||||
"phone": {
|
||||
"type": "string",
|
||||
"description": "Candidate's phone number"
|
||||
},
|
||||
"skills": {
|
||||
"type": "string",
|
||||
"description": "Key skills"
|
||||
},
|
||||
"summary": {
|
||||
"type": "string",
|
||||
"description": "Professional summary or objective"
|
||||
},
|
||||
"education": {
|
||||
"type": "string",
|
||||
"description": "Education background"
|
||||
},
|
||||
"experience": {
|
||||
"type": "string",
|
||||
"description": "Work experience summary"
|
||||
}
|
||||
},
|
||||
"data": {
|
||||
"canonicalModes": {
|
||||
"oauthCredential": "basic",
|
||||
"reducto_v2:document": "advanced",
|
||||
"mistral_parse_v3:document": "advanced"
|
||||
}
|
||||
},
|
||||
"locked": false
|
||||
},
|
||||
"808dd734-31a6-4440-bfda-d1be028ac2f7": {
|
||||
"id": "808dd734-31a6-4440-bfda-d1be028ac2f7",
|
||||
"type": "note",
|
||||
"name": "Google Sheets Setup",
|
||||
"position": {
|
||||
"x": 1001.6440011186405,
|
||||
"y": -7.809815030718283
|
||||
},
|
||||
"enabled": true,
|
||||
"horizontalHandles": true,
|
||||
"advancedMode": false,
|
||||
"triggerMode": false,
|
||||
"height": 114,
|
||||
"subBlocks": {
|
||||
"content": {
|
||||
"id": "content",
|
||||
"type": "short-input",
|
||||
"value": "- Connect Google Sheets Account \n- Select relevant spreadsheet \n"
|
||||
}
|
||||
},
|
||||
"outputs": {},
|
||||
"data": {},
|
||||
"locked": false
|
||||
},
|
||||
"dfa14e2d-6071-4188-b5d8-c1f2ecb09d88": {
|
||||
"id": "dfa14e2d-6071-4188-b5d8-c1f2ecb09d88",
|
||||
"type": "google_sheets_v2",
|
||||
"name": "candidatesSheet",
|
||||
"position": {
|
||||
"x": 1010,
|
||||
"y": 150
|
||||
},
|
||||
"enabled": true,
|
||||
"horizontalHandles": true,
|
||||
"advancedMode": false,
|
||||
"triggerMode": false,
|
||||
"height": 0,
|
||||
"subBlocks": {
|
||||
"title": {
|
||||
"id": "title",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"ranges": {
|
||||
"id": "ranges",
|
||||
"type": "long-input",
|
||||
"value": null
|
||||
},
|
||||
"values": {
|
||||
"id": "values",
|
||||
"type": "short-input",
|
||||
"value": "[[\"<resumeParser.content.name>\", \"<resumeParser.content.email>\", \"<resumeParser.content.phone>\", \"<resumeParser.content.summary>\", \"<resumeParser.content.experience>\", \"<resumeParser.content.education>\", \"<resumeParser.content.skills>\"]]"
|
||||
},
|
||||
"sheetId": {
|
||||
"id": "sheetId",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"batchData": {
|
||||
"id": "batchData",
|
||||
"type": "long-input",
|
||||
"value": null
|
||||
},
|
||||
"cellRange": {
|
||||
"id": "cellRange",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"operation": {
|
||||
"id": "operation",
|
||||
"type": "short-input",
|
||||
"value": "append"
|
||||
},
|
||||
"sheetName": {
|
||||
"id": "sheetName",
|
||||
"type": "sheet-selector",
|
||||
"value": null
|
||||
},
|
||||
"credential": {
|
||||
"id": "credential",
|
||||
"type": "oauth-input",
|
||||
"value": null
|
||||
},
|
||||
"filterValue": {
|
||||
"id": "filterValue",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"sheetTitles": {
|
||||
"id": "sheetTitles",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"filterColumn": {
|
||||
"id": "filterColumn",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
},
|
||||
"spreadsheetId": {
|
||||
"id": "spreadsheetId",
|
||||
"type": "file-selector",
|
||||
"value": null
|
||||
},
|
||||
"filterMatchType": {
|
||||
"id": "filterMatchType",
|
||||
"type": "dropdown",
|
||||
"value": null
|
||||
},
|
||||
"manualSheetName": {
|
||||
"id": "manualSheetName",
|
||||
"type": "short-input",
|
||||
"value": "Sheet1"
|
||||
},
|
||||
"insertDataOption": {
|
||||
"id": "insertDataOption",
|
||||
"type": "short-input",
|
||||
"value": "INSERT_ROWS"
|
||||
},
|
||||
"manualCredential": {
|
||||
"id": "manualCredential",
|
||||
"type": "short-input",
|
||||
"value": "9XZ3B8KDqUKwhQGwNJK7rJdIFX18VkeN"
|
||||
},
|
||||
"valueInputOption": {
|
||||
"id": "valueInputOption",
|
||||
"type": "dropdown",
|
||||
"value": null
|
||||
},
|
||||
"manualSpreadsheetId": {
|
||||
"id": "manualSpreadsheetId",
|
||||
"type": "short-input",
|
||||
"value": "Candidates"
|
||||
},
|
||||
"destinationSpreadsheetId": {
|
||||
"id": "destinationSpreadsheetId",
|
||||
"type": "short-input",
|
||||
"value": null
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"metadata": {
|
||||
"type": "json",
|
||||
"properties": {
|
||||
"spreadsheetId": {
|
||||
"type": "string",
|
||||
"description": "Google Sheets spreadsheet ID"
|
||||
},
|
||||
"spreadsheetUrl": {
|
||||
"type": "string",
|
||||
"description": "Spreadsheet URL"
|
||||
}
|
||||
},
|
||||
"description": "Spreadsheet metadata including ID and URL"
|
||||
},
|
||||
"tableRange": {
|
||||
"type": "string",
|
||||
"description": "Range of the table where data was appended"
|
||||
},
|
||||
"updatedRows": {
|
||||
"type": "number",
|
||||
"description": "Number of rows updated"
|
||||
},
|
||||
"updatedCells": {
|
||||
"type": "number",
|
||||
"description": "Number of cells updated"
|
||||
},
|
||||
"updatedRange": {
|
||||
"type": "string",
|
||||
"description": "Range of cells that were updated"
|
||||
},
|
||||
"updatedColumns": {
|
||||
"type": "number",
|
||||
"description": "Number of columns updated"
|
||||
}
|
||||
},
|
||||
"data": {
|
||||
"canonicalModes": {
|
||||
"sheetName": "advanced",
|
||||
"spreadsheetId": "basic",
|
||||
"oauthCredential": "basic"
|
||||
}
|
||||
},
|
||||
"locked": false
|
||||
},
|
||||
"ca748c0f-eeb7-4ee7-b279-ceb4c1848ea8": {
|
||||
"id": "ca748c0f-eeb7-4ee7-b279-ceb4c1848ea8",
|
||||
"type": "note",
|
||||
"name": "API Setup",
|
||||
"position": {
|
||||
"x": 153.14457477885225,
|
||||
"y": -242.20344578716245
|
||||
},
|
||||
"enabled": true,
|
||||
"horizontalHandles": true,
|
||||
"advancedMode": false,
|
||||
"triggerMode": false,
|
||||
"height": 114,
|
||||
"subBlocks": {
|
||||
"content": {
|
||||
"id": "content",
|
||||
"type": "short-input",
|
||||
"value": "\nThis Workflow is to be triggered via API. \n\n- Deploy using the button in the top right and call the workflow as an API using the endpoint in the instructions! \n\n- You can pass in files using the format: \n[{\n \"data\": \"<base64>\",\n \"type\": \"file\",\n \"name\": \"document.pdf\",\n \"mime\": \"application/pdf\"\n}]"
|
||||
}
|
||||
},
|
||||
"outputs": {},
|
||||
"data": {},
|
||||
"locked": false
|
||||
}
|
||||
},
|
||||
"edges": [
|
||||
{
|
||||
"id": "a79bb6c6-4afe-4082-9285-777ebe4101ed",
|
||||
"source": "1abd6f01-04a4-4c69-9344-4b5cc2afe816",
|
||||
"target": "015feca5-9044-4bc8-be1e-536454264ece",
|
||||
"sourceHandle": "source",
|
||||
"targetHandle": "target",
|
||||
"type": "default",
|
||||
"data": {}
|
||||
},
|
||||
{
|
||||
"id": "4b0791e8-fef4-4a27-b4e1-6a780511cb59",
|
||||
"source": "015feca5-9044-4bc8-be1e-536454264ece",
|
||||
"target": "dfa14e2d-6071-4188-b5d8-c1f2ecb09d88",
|
||||
"sourceHandle": "source",
|
||||
"targetHandle": "target",
|
||||
"type": "default",
|
||||
"data": {}
|
||||
}
|
||||
],
|
||||
"loops": {},
|
||||
"parallels": {},
|
||||
"metadata": {
|
||||
"name": "resume-parser",
|
||||
"description": "New workflow",
|
||||
"color": "#1e9de8",
|
||||
"exportedAt": "2026-03-09T21:40:19.013Z"
|
||||
},
|
||||
"variables": {}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user