Skip to content

Commit caf37a4

Browse files
committed
Refactor agent tools and knowledge structures; update flow variable definitions; enhance sharing rules with criteria-based access
- Updated sales and service agents to use action types for tools and simplified knowledge sources. - Modified flow variable definitions to use isInput and isOutput properties instead of required and defaultValue. - Refactored sharing rules for accounts, cases, and opportunities to use criteria-based access with improved conditions and access levels. - Adjusted profiles to align with new permission set structure, ensuring consistency across user roles.
1 parent cf05485 commit caf37a4

25 files changed

Lines changed: 299 additions & 322 deletions

examples/app-crm/src/agents/email-campaign.agent.ts

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,13 @@ Follow email marketing best practices and maintain brand voice.`,
2121
model: { provider: 'anthropic', model: 'claude-3-opus', temperature: 0.8, maxTokens: 2000 },
2222

2323
tools: [
24-
{ name: 'generate_email_copy', description: 'Generate email campaign copy', parameters: { campaign_id: 'string', audience: 'string', goal: 'string' } },
25-
{ name: 'optimize_subject_line', description: 'Optimize email subject line', parameters: { subject: 'string' } },
26-
{ name: 'personalize_content', description: 'Personalize email content', parameters: { template: 'string', recipient_data: 'object' } },
24+
{ type: 'action', name: 'generate_email_copy', description: 'Generate email campaign copy' },
25+
{ type: 'action', name: 'optimize_subject_line', description: 'Optimize email subject line' },
26+
{ type: 'action', name: 'personalize_content', description: 'Personalize email content' },
2727
],
2828

2929
knowledge: {
30-
sources: [
31-
{ type: 'object', objectName: 'campaign', fields: ['*'] },
32-
{ type: 'document', path: '/knowledge/brand-guidelines.md' },
33-
{ type: 'document', path: '/knowledge/email-templates/**/*.html' },
34-
],
30+
topics: ['email_marketing', 'brand_guidelines', 'campaign_templates'],
31+
indexes: ['sales_knowledge'],
3532
},
3633
};

examples/app-crm/src/agents/lead-enrichment.agent.ts

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,14 @@ Always use reputable data sources and maintain data quality.`,
2121
model: { provider: 'openai', model: 'gpt-3.5-turbo', temperature: 0.3, maxTokens: 1000 },
2222

2323
tools: [
24-
{ name: 'lookup_company', description: 'Look up company information', parameters: { company_name: 'string', domain: 'string' } },
25-
{ name: 'enrich_contact', description: 'Enrich contact information', parameters: { email: 'string', linkedin_url: 'string' } },
26-
{ name: 'validate_email', description: 'Validate email address', parameters: { email: 'string' } },
24+
{ type: 'action', name: 'lookup_company', description: 'Look up company information' },
25+
{ type: 'action', name: 'enrich_contact', description: 'Enrich contact information' },
26+
{ type: 'action', name: 'validate_email', description: 'Validate email address' },
2727
],
2828

2929
knowledge: {
30-
sources: [
31-
{ type: 'object', objectName: 'lead', fields: ['company', 'email', 'phone', 'website'] },
32-
],
30+
topics: ['lead_enrichment', 'company_data'],
31+
indexes: ['sales_knowledge'],
3332
},
3433

3534
triggers: [

examples/app-crm/src/agents/revenue-intelligence.agent.ts

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,17 +21,14 @@ Use statistical analysis and machine learning to provide data-driven insights.`,
2121
model: { provider: 'openai', model: 'gpt-4', temperature: 0.2, maxTokens: 3000 },
2222

2323
tools: [
24-
{ name: 'analyze_pipeline', description: 'Analyze sales pipeline health', parameters: { user_id: 'string', time_period: 'string' } },
25-
{ name: 'identify_at_risk', description: 'Identify at-risk opportunities', parameters: { threshold: 'number' } },
26-
{ name: 'forecast_revenue', description: 'Generate revenue forecast', parameters: { time_period: 'string', method: 'string' } },
24+
{ type: 'query', name: 'analyze_pipeline', description: 'Analyze sales pipeline health' },
25+
{ type: 'query', name: 'identify_at_risk', description: 'Identify at-risk opportunities' },
26+
{ type: 'query', name: 'forecast_revenue', description: 'Generate revenue forecast' },
2727
],
2828

2929
knowledge: {
30-
sources: [
31-
{ type: 'object', objectName: 'opportunity', fields: ['*'] },
32-
{ type: 'object', objectName: 'account', fields: ['*'] },
33-
{ type: 'analytics', dashboardName: 'sales_dashboard' },
34-
],
30+
topics: ['pipeline_analytics', 'revenue_forecasting', 'deal_risk'],
31+
indexes: ['sales_knowledge'],
3532
},
3633

3734
schedule: { type: 'cron', expression: '0 8 * * 1', timezone: 'America/Los_Angeles' },

examples/app-crm/src/agents/sales.agent.ts

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,19 +21,14 @@ Always be professional, data-driven, and focused on helping close deals.`,
2121
model: { provider: 'openai', model: 'gpt-4', temperature: 0.7, maxTokens: 2000 },
2222

2323
tools: [
24-
{ name: 'analyze_lead', description: 'Analyze a lead and provide qualification score', parameters: { lead_id: 'string' } },
25-
{ name: 'suggest_next_action', description: 'Suggest next best action for an opportunity', parameters: { opportunity_id: 'string' } },
26-
{ name: 'generate_email', description: 'Generate a personalized email template', parameters: { recipient_id: 'string', context: 'string', tone: 'string' } },
24+
{ type: 'action', name: 'analyze_lead', description: 'Analyze a lead and provide qualification score' },
25+
{ type: 'action', name: 'suggest_next_action', description: 'Suggest next best action for an opportunity' },
26+
{ type: 'action', name: 'generate_email', description: 'Generate a personalized email template' },
2727
],
2828

2929
knowledge: {
30-
sources: [
31-
{ type: 'object', objectName: 'lead', fields: ['*'] },
32-
{ type: 'object', objectName: 'opportunity', fields: ['*'] },
33-
{ type: 'object', objectName: 'account', fields: ['*'] },
34-
{ type: 'document', path: '/knowledge/sales-playbook.md' },
35-
{ type: 'document', path: '/knowledge/product-catalog.md' },
36-
],
30+
topics: ['sales_playbook', 'product_catalog', 'lead_qualification'],
31+
indexes: ['sales_knowledge'],
3732
},
3833

3934
triggers: [

examples/app-crm/src/agents/service.agent.ts

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,18 +21,14 @@ Always be empathetic, solution-focused, and customer-centric.`,
2121
model: { provider: 'openai', model: 'gpt-4', temperature: 0.5, maxTokens: 1500 },
2222

2323
tools: [
24-
{ name: 'triage_case', description: 'Analyze case and assign priority', parameters: { case_id: 'string' } },
25-
{ name: 'search_knowledge', description: 'Search knowledge base for solutions', parameters: { query: 'string' } },
26-
{ name: 'generate_response', description: 'Generate customer response', parameters: { case_id: 'string', tone: 'string' } },
24+
{ type: 'action', name: 'triage_case', description: 'Analyze case and assign priority' },
25+
{ type: 'vector_search', name: 'search_knowledge', description: 'Search knowledge base for solutions' },
26+
{ type: 'action', name: 'generate_response', description: 'Generate customer response' },
2727
],
2828

2929
knowledge: {
30-
sources: [
31-
{ type: 'object', objectName: 'case', fields: ['*'] },
32-
{ type: 'object', objectName: 'account', fields: ['*'] },
33-
{ type: 'document', path: '/knowledge/support-kb/**/*.md' },
34-
{ type: 'document', path: '/knowledge/sla-policies.md' },
35-
],
30+
topics: ['support_kb', 'sla_policies', 'case_resolution'],
31+
indexes: ['support_knowledge'],
3632
},
3733

3834
triggers: [

examples/app-crm/src/flows/campaign-enrollment.flow.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ export const CampaignEnrollmentFlow: Flow = {
99
schedule: '0 9 * * 1', // Monday at 9am
1010

1111
variables: [
12-
{ name: 'campaignId', type: 'text', required: true },
13-
{ name: 'leadStatus', type: 'text', defaultValue: 'new' },
12+
{ name: 'campaignId', type: 'text', isInput: true, isOutput: false },
13+
{ name: 'leadStatus', type: 'text', isInput: true, isOutput: false },
1414
],
1515

1616
steps: [

examples/app-crm/src/flows/case-escalation.flow.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ export const CaseEscalationFlow: Flow = {
1010
criteria: 'priority = "critical" OR (priority = "high" AND account.type = "customer")',
1111

1212
variables: [
13-
{ name: 'caseId', type: 'text', required: true },
13+
{ name: 'caseId', type: 'text', isInput: true, isOutput: false },
1414
],
1515

1616
steps: [

examples/app-crm/src/flows/lead-conversion.flow.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@ export const LeadConversionFlow: Flow = {
99
objectName: 'lead',
1010

1111
variables: [
12-
{ name: 'leadId', type: 'text', required: true },
13-
{ name: 'createOpportunity', type: 'boolean', defaultValue: true },
14-
{ name: 'opportunityName', type: 'text' },
15-
{ name: 'opportunityAmount', type: 'currency' },
12+
{ name: 'leadId', type: 'text', isInput: true, isOutput: false },
13+
{ name: 'createOpportunity', type: 'boolean', isInput: true, isOutput: false },
14+
{ name: 'opportunityName', type: 'text', isInput: true, isOutput: false },
15+
{ name: 'opportunityAmount', type: 'text', isInput: true, isOutput: false },
1616
],
1717

1818
steps: [

examples/app-crm/src/flows/opportunity-approval.flow.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ export const OpportunityApprovalFlow: Flow = {
1010
criteria: 'amount > 100000 AND stage = "proposal"',
1111

1212
variables: [
13-
{ name: 'opportunityId', type: 'text', required: true },
13+
{ name: 'opportunityId', type: 'text', isInput: true, isOutput: false },
1414
],
1515

1616
steps: [

examples/app-crm/src/flows/quote-generation.flow.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@ export const QuoteGenerationFlow: Flow = {
99
objectName: 'opportunity',
1010

1111
variables: [
12-
{ name: 'opportunityId', type: 'text', required: true },
13-
{ name: 'quoteName', type: 'text' },
14-
{ name: 'expirationDays', type: 'number', defaultValue: 30 },
15-
{ name: 'discount', type: 'percent', defaultValue: 0 },
12+
{ name: 'opportunityId', type: 'text', isInput: true, isOutput: false },
13+
{ name: 'quoteName', type: 'text', isInput: true, isOutput: false },
14+
{ name: 'expirationDays', type: 'number', isInput: true, isOutput: false },
15+
{ name: 'discount', type: 'number', isInput: true, isOutput: false },
1616
],
1717

1818
steps: [

0 commit comments

Comments
 (0)