@botpress/adk 1.17.0 → 1.18.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent-init/agent-project-generator.d.ts +32 -8
- package/dist/agent-init/agent-project-generator.d.ts.map +1 -1
- package/dist/agent-init/index.d.ts +1 -0
- package/dist/agent-init/index.d.ts.map +1 -1
- package/dist/agent-project/agent-project.d.ts +5 -1
- package/dist/agent-project/agent-project.d.ts.map +1 -1
- package/dist/agent-project/agent-resolver.d.ts +4 -3
- package/dist/agent-project/agent-resolver.d.ts.map +1 -1
- package/dist/agent-project/config-writer.d.ts +33 -0
- package/dist/agent-project/config-writer.d.ts.map +1 -1
- package/dist/agent-project/dependencies-parser.d.ts.map +1 -1
- package/dist/agent-project/index.d.ts +1 -1
- package/dist/agent-project/index.d.ts.map +1 -1
- package/dist/agent-project/types.d.ts +22 -4
- package/dist/agent-project/types.d.ts.map +1 -1
- package/dist/auth/credentials.d.ts.map +1 -1
- package/dist/bot-generator/dev-id-manager.d.ts.map +1 -1
- package/dist/bot-generator/generator.d.ts.map +1 -1
- package/dist/eval/index.d.ts +1 -1
- package/dist/eval/index.d.ts.map +1 -1
- package/dist/eval/loader.d.ts +2 -1
- package/dist/eval/loader.d.ts.map +1 -1
- package/dist/eval/types.d.ts +15 -2
- package/dist/eval/types.d.ts.map +1 -1
- package/dist/generators/tests.d.ts.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +704 -468
- package/dist/index.js.map +21 -21
- package/dist/integrations/checker.d.ts.map +1 -1
- package/dist/integrations/config-utils.d.ts +1 -0
- package/dist/integrations/config-utils.d.ts.map +1 -1
- package/dist/integrations/operations.d.ts +19 -6
- package/dist/integrations/operations.d.ts.map +1 -1
- package/dist/knowledge/manager.d.ts.map +1 -1
- package/dist/preflight/checker.d.ts.map +1 -1
- package/dist/templates/README.md +101 -0
- package/dist/templates/blank/README.md +36 -0
- package/dist/templates/blank/agent.config.ts +49 -0
- package/dist/templates/blank/package.json +17 -0
- package/dist/templates/blank/src/actions/index.ts +19 -0
- package/dist/templates/blank/src/conversations/index.ts +16 -0
- package/dist/templates/blank/src/knowledge/index.ts +17 -0
- package/dist/templates/blank/src/tables/index.ts +19 -0
- package/dist/templates/blank/src/triggers/index.ts +20 -0
- package/dist/templates/blank/src/workflows/index.ts +23 -0
- package/dist/templates/blank/tsconfig.json +22 -0
- package/dist/templates/crm-enrichment/README.md +85 -0
- package/dist/templates/crm-enrichment/agent.config.ts +33 -0
- package/dist/templates/crm-enrichment/package.json +17 -0
- package/dist/templates/crm-enrichment/src/actions/enrich-contact.ts +81 -0
- package/dist/templates/crm-enrichment/src/conversations/index.ts +14 -0
- package/dist/templates/crm-enrichment/src/knowledge/index.ts +17 -0
- package/dist/templates/crm-enrichment/src/tables/contacts.ts +43 -0
- package/dist/templates/crm-enrichment/src/triggers/daily-enrichment.ts +30 -0
- package/dist/templates/crm-enrichment/src/workflows/enrichment-pipeline.ts +171 -0
- package/dist/templates/crm-enrichment/tsconfig.json +22 -0
- package/dist/templates/hello-world/README.md +46 -0
- package/dist/templates/hello-world/agent.config.ts +48 -0
- package/dist/templates/hello-world/package.json +17 -0
- package/dist/templates/hello-world/src/actions/index.ts +19 -0
- package/dist/templates/hello-world/src/conversations/index.ts +10 -0
- package/dist/templates/hello-world/src/knowledge/index.ts +17 -0
- package/dist/templates/hello-world/src/tables/index.ts +19 -0
- package/dist/templates/hello-world/src/triggers/index.ts +20 -0
- package/dist/templates/hello-world/src/workflows/index.ts +23 -0
- package/dist/templates/hello-world/tsconfig.json +22 -0
- package/dist/templates/knowledge-assistant/README.md +66 -0
- package/dist/templates/knowledge-assistant/agent.config.ts +26 -0
- package/dist/templates/knowledge-assistant/package.json +17 -0
- package/dist/templates/knowledge-assistant/src/actions/index.ts +19 -0
- package/dist/templates/knowledge-assistant/src/actions/search-docs.ts +50 -0
- package/dist/templates/knowledge-assistant/src/conversations/index.ts +33 -0
- package/dist/templates/knowledge-assistant/src/knowledge/docs.ts +23 -0
- package/dist/templates/knowledge-assistant/src/knowledge/getting-started.md +49 -0
- package/dist/templates/knowledge-assistant/src/tables/index.ts +21 -0
- package/dist/templates/knowledge-assistant/src/triggers/index.ts +17 -0
- package/dist/templates/knowledge-assistant/src/workflows/index.ts +28 -0
- package/dist/templates/knowledge-assistant/tsconfig.json +22 -0
- package/dist/templates/slack-triage/README.md +74 -0
- package/dist/templates/slack-triage/agent.config.ts +35 -0
- package/dist/templates/slack-triage/evals/triage-basic.eval.ts +55 -0
- package/dist/templates/slack-triage/package.json +17 -0
- package/dist/templates/slack-triage/src/actions/classify-request.ts +65 -0
- package/dist/templates/slack-triage/src/conversations/slack-dm.ts +72 -0
- package/dist/templates/slack-triage/src/knowledge/team-directory.md +33 -0
- package/dist/templates/slack-triage/src/tables/routing-rules.ts +38 -0
- package/dist/templates/slack-triage/src/triggers/new-message.ts +44 -0
- package/dist/templates/slack-triage/src/workflows/triage-flow.ts +104 -0
- package/dist/templates/slack-triage/tsconfig.json +22 -0
- package/dist/templates/template.config.json +47 -0
- package/dist/utils/json-ordering.d.ts +1 -1
- package/dist/utils/json-ordering.d.ts.map +1 -1
- package/package.json +7 -15
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { Conversation, Autonomous, z } from '@botpress/runtime'
|
|
2
|
+
import { classifyRequest } from '../actions/classify-request'
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Exit that the AI uses once it has classified and responded to the request.
|
|
6
|
+
* The execute() call ends when the AI selects this exit.
|
|
7
|
+
*/
|
|
8
|
+
const TriageComplete = new Autonomous.Exit({
|
|
9
|
+
name: 'triage_complete',
|
|
10
|
+
description: 'Classification is done and the user has been notified. Exit the conversation.',
|
|
11
|
+
schema: z.object({
|
|
12
|
+
category: z.string().describe('The category the request was classified as'),
|
|
13
|
+
}),
|
|
14
|
+
})
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Handles incoming Slack DM messages.
|
|
18
|
+
*
|
|
19
|
+
* Flow: classify the request -> respond to the user -> exit.
|
|
20
|
+
* The AI uses the classifyRequest tool, then selects the TriageComplete exit
|
|
21
|
+
* to end the conversation cleanly.
|
|
22
|
+
*
|
|
23
|
+
* Customize:
|
|
24
|
+
* - Change the channel to "slack.channel" for public channel messages
|
|
25
|
+
* - Add more exits for different outcomes (e.g. needs_more_info, escalated)
|
|
26
|
+
* - Remove the exit to keep the conversation open for follow-ups
|
|
27
|
+
*/
|
|
28
|
+
export const SlackDM = new Conversation({
|
|
29
|
+
channel: 'slack.dm',
|
|
30
|
+
|
|
31
|
+
async handler({ execute }) {
|
|
32
|
+
// Classify and respond in one shot. The AI will:
|
|
33
|
+
// 1. Use classifyRequest to categorize the message
|
|
34
|
+
// 2. Tell the user the result
|
|
35
|
+
// 3. Select the TriageComplete exit to end
|
|
36
|
+
const result = await execute({
|
|
37
|
+
instructions: `You are a triage assistant. The user just sent a help request.
|
|
38
|
+
|
|
39
|
+
Your job:
|
|
40
|
+
1. Use the classifyRequest tool to classify their message
|
|
41
|
+
2. Tell them what category it was classified as and who it's being routed to
|
|
42
|
+
3. Be concise. One short paragraph max. Use Slack markdown.
|
|
43
|
+
4. Then select the triage_complete exit with the category.
|
|
44
|
+
|
|
45
|
+
Do NOT ask follow-up questions. Classify, confirm, exit.`,
|
|
46
|
+
tools: [classifyRequest.asTool()],
|
|
47
|
+
exits: [TriageComplete],
|
|
48
|
+
})
|
|
49
|
+
|
|
50
|
+
if (result.is(TriageComplete)) {
|
|
51
|
+
console.log(`Triaged as: ${result.output.category}`)
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// --- After triage, the conversation is done. ---
|
|
55
|
+
// Examples of what you could do next instead:
|
|
56
|
+
//
|
|
57
|
+
// // Start the full triage workflow
|
|
58
|
+
// import { TriageFlow } from '../workflows/triage-flow'
|
|
59
|
+
// await TriageFlow.start({ message: message.payload.text })
|
|
60
|
+
//
|
|
61
|
+
// // Chain another execute() for follow-up questions
|
|
62
|
+
// await execute({
|
|
63
|
+
// instructions: 'Ask the user if they want to override the priority.',
|
|
64
|
+
// })
|
|
65
|
+
//
|
|
66
|
+
// // Open-ended support chat (no exit = keeps going until idle)
|
|
67
|
+
// await execute({
|
|
68
|
+
// instructions: 'You are a helpful support agent.',
|
|
69
|
+
// tools: [classifyRequest.asTool()],
|
|
70
|
+
// })
|
|
71
|
+
},
|
|
72
|
+
})
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Team Directory
|
|
2
|
+
|
|
3
|
+
Replace this with your actual team info for context-aware routing.
|
|
4
|
+
|
|
5
|
+
## Engineering
|
|
6
|
+
|
|
7
|
+
- **@oncall-eng** - Bugs, crashes, production incidents
|
|
8
|
+
- **@backend-team** - APIs, services, database issues
|
|
9
|
+
- **@frontend-team** - UI bugs, browser issues
|
|
10
|
+
|
|
11
|
+
## Product
|
|
12
|
+
|
|
13
|
+
- **@product-team** - Feature requests, roadmap
|
|
14
|
+
- **@design-team** - UX issues, visual bugs
|
|
15
|
+
|
|
16
|
+
## Operations
|
|
17
|
+
|
|
18
|
+
- **@devops** - Infrastructure, deploys, CI/CD
|
|
19
|
+
- **@security-team** - Vulnerabilities, access, compliance
|
|
20
|
+
|
|
21
|
+
## Support
|
|
22
|
+
|
|
23
|
+
- **@support-team** - Questions, onboarding, docs
|
|
24
|
+
- **@hr-team** - People ops, policies
|
|
25
|
+
|
|
26
|
+
## Escalation
|
|
27
|
+
|
|
28
|
+
| Priority | Response Time | Escalation |
|
|
29
|
+
| -------- | ------------- | --------------------- |
|
|
30
|
+
| Critical | 15 min | @oncall-eng + @devops |
|
|
31
|
+
| High | 1 hour | Category assignee |
|
|
32
|
+
| Medium | 4 hours | Category assignee |
|
|
33
|
+
| Low | 1 biz day | Category assignee |
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Table, z } from '@botpress/runtime'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Stores routing rules that map request categories to assignees and channels.
|
|
5
|
+
*
|
|
6
|
+
* Each row defines where a specific category of request should be routed:
|
|
7
|
+
* - category: The request classification (e.g. "bug", "feature_request")
|
|
8
|
+
* - assignee: Who handles it (e.g. "@oncall-eng", "@product-team")
|
|
9
|
+
* - slackChannel: Slack channel to post the triage summary (e.g. "#bugs")
|
|
10
|
+
* - priority: Default priority for this category
|
|
11
|
+
*
|
|
12
|
+
* The `category` column is searchable so the triage workflow can look up
|
|
13
|
+
* the correct rule quickly.
|
|
14
|
+
*
|
|
15
|
+
* Seed this table after first deploy via the Botpress dashboard or a script:
|
|
16
|
+
* | category | assignee | slackChannel | priority |
|
|
17
|
+
* |-----------------|----------------|-------------------|----------|
|
|
18
|
+
* | bug | @oncall-eng | #bugs | high |
|
|
19
|
+
* | feature_request | @product-team | #feature_requests | medium |
|
|
20
|
+
* | question | @support-team | #help-desk | low |
|
|
21
|
+
* | ops_issue | @devops | #ops-alerts | high |
|
|
22
|
+
*
|
|
23
|
+
* Note: Do NOT define an `id` column -- it is automatically managed by the system.
|
|
24
|
+
*/
|
|
25
|
+
export const RoutingRulesTable = new Table({
|
|
26
|
+
name: 'RoutingRulesTable',
|
|
27
|
+
description: 'Maps request categories to assignees and Slack channels for triage routing',
|
|
28
|
+
|
|
29
|
+
columns: {
|
|
30
|
+
category: {
|
|
31
|
+
searchable: true,
|
|
32
|
+
schema: z.string().describe('Request category: bug, feature_request, question, or ops_issue'),
|
|
33
|
+
},
|
|
34
|
+
assignee: z.string().describe('Person or team to assign this category to (e.g. @oncall-eng)'),
|
|
35
|
+
slackChannel: z.string().describe('Slack channel to post triage summaries for this category (e.g. #bugs)'),
|
|
36
|
+
priority: z.string().describe('Default priority level: low, medium, high, or critical'),
|
|
37
|
+
},
|
|
38
|
+
})
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { Trigger } from '@botpress/runtime'
|
|
2
|
+
import { TriageFlow } from '../workflows/triage-flow'
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Fires when a new message arrives in a monitored Slack channel.
|
|
6
|
+
*
|
|
7
|
+
* This trigger listens for the "message.created" event and starts the
|
|
8
|
+
* triage workflow for each incoming message. The workflow then classifies
|
|
9
|
+
* the request and routes it to the appropriate person/channel.
|
|
10
|
+
*
|
|
11
|
+
* Customize:
|
|
12
|
+
* - Add filters to ignore bot messages or specific channels
|
|
13
|
+
* - Switch to "slack:reactionAdded" to triage only when someone reacts with a specific emoji
|
|
14
|
+
* - Add "slack:memberJoinedChannel" to welcome new members
|
|
15
|
+
*/
|
|
16
|
+
export const onNewMessage = new Trigger({
|
|
17
|
+
name: 'onNewMessage',
|
|
18
|
+
description: 'Starts the triage workflow when a new message arrives in a monitored Slack channel',
|
|
19
|
+
events: ['message.created'],
|
|
20
|
+
|
|
21
|
+
handler: async ({ event }) => {
|
|
22
|
+
const payload = event.payload
|
|
23
|
+
|
|
24
|
+
// Skip empty messages
|
|
25
|
+
if (!payload?.text) {
|
|
26
|
+
return
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// Optional: skip bot messages to avoid triage loops.
|
|
30
|
+
// Uncomment and adjust the condition for your workspace:
|
|
31
|
+
// if (payload.userId === bot.id) {
|
|
32
|
+
// return;
|
|
33
|
+
// }
|
|
34
|
+
|
|
35
|
+
// Start the triage workflow with the message content
|
|
36
|
+
const instance = await TriageFlow.start({
|
|
37
|
+
message: payload.text,
|
|
38
|
+
senderName: payload.userId ?? 'Unknown',
|
|
39
|
+
sourceChannel: payload.conversationId ?? undefined,
|
|
40
|
+
})
|
|
41
|
+
|
|
42
|
+
console.log(`Triage workflow started: ${instance.id} for message from ${payload.userId}`)
|
|
43
|
+
},
|
|
44
|
+
})
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { Workflow, z, actions, bot } from '@botpress/runtime'
|
|
2
|
+
import { RoutingRulesTable } from '../tables/routing-rules'
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Triage workflow: classifies a help request, looks up routing rules,
|
|
6
|
+
* and posts a summary to the appropriate Slack channel.
|
|
7
|
+
*
|
|
8
|
+
* Steps:
|
|
9
|
+
* 1. classify - Run the classifyRequest action to categorize the message
|
|
10
|
+
* 2. lookup - Find the routing rule for this category from the table
|
|
11
|
+
* 3. notify - Post a triage summary to the target Slack channel
|
|
12
|
+
*
|
|
13
|
+
* Customize: Add steps for priority escalation, duplicate detection,
|
|
14
|
+
* SLA tracking, or assignment rotation.
|
|
15
|
+
*/
|
|
16
|
+
export const TriageFlow = new Workflow({
|
|
17
|
+
name: 'triageFlow',
|
|
18
|
+
description: 'Classify a help request and route it to the right person',
|
|
19
|
+
|
|
20
|
+
input: z.object({
|
|
21
|
+
message: z.string().describe('The raw help request text'),
|
|
22
|
+
senderName: z.string().optional().describe('Display name of the person who sent the request'),
|
|
23
|
+
sourceChannel: z.string().optional().describe('Slack channel where the request originated'),
|
|
24
|
+
}),
|
|
25
|
+
|
|
26
|
+
output: z.object({
|
|
27
|
+
category: z.string().describe('The classified category'),
|
|
28
|
+
assignee: z.string().describe('Who the request was routed to'),
|
|
29
|
+
summary: z.string().describe('Summary of the request'),
|
|
30
|
+
routed: z.boolean().describe('Whether the request was successfully routed'),
|
|
31
|
+
}),
|
|
32
|
+
|
|
33
|
+
handler: async ({ input, step }) => {
|
|
34
|
+
// Step 1: Classify the request using the AI action
|
|
35
|
+
const classification = await step('classify', async () => {
|
|
36
|
+
return await actions.classifyRequest({ message: input.message })
|
|
37
|
+
})
|
|
38
|
+
|
|
39
|
+
// Step 2: Look up the routing rule for this category
|
|
40
|
+
const routingRule = await step('lookup', async () => {
|
|
41
|
+
const { rows } = await RoutingRulesTable.findRows({
|
|
42
|
+
filter: { category: classification.category },
|
|
43
|
+
limit: 1,
|
|
44
|
+
})
|
|
45
|
+
|
|
46
|
+
if (rows.length === 0) {
|
|
47
|
+
// No routing rule found -- return a sensible default
|
|
48
|
+
return {
|
|
49
|
+
assignee: 'unassigned',
|
|
50
|
+
slackChannel: '#general',
|
|
51
|
+
priority: 'medium',
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
return {
|
|
56
|
+
assignee: rows[0].assignee,
|
|
57
|
+
slackChannel: rows[0].slackChannel,
|
|
58
|
+
priority: rows[0].priority,
|
|
59
|
+
}
|
|
60
|
+
})
|
|
61
|
+
|
|
62
|
+
// Step 3: Post a triage summary to the target Slack channel
|
|
63
|
+
await step('notify', async () => {
|
|
64
|
+
const sender = input.senderName ?? 'Someone'
|
|
65
|
+
const source = input.sourceChannel ? ` in <#${input.sourceChannel}>` : ''
|
|
66
|
+
|
|
67
|
+
const triageMessage = [
|
|
68
|
+
`*New ${classification.category} request*`,
|
|
69
|
+
`> ${classification.summary}`,
|
|
70
|
+
'',
|
|
71
|
+
`*From:* ${sender}${source}`,
|
|
72
|
+
`*Priority:* ${routingRule.priority}`,
|
|
73
|
+
`*Assigned to:* ${routingRule.assignee}`,
|
|
74
|
+
`*Confidence:* ${classification.confidence}`,
|
|
75
|
+
].join('\n')
|
|
76
|
+
|
|
77
|
+
// Post to the routing channel via Slack integration action.
|
|
78
|
+
// This requires the Slack integration to be configured with appropriate permissions.
|
|
79
|
+
try {
|
|
80
|
+
await actions.slack.addReaction({
|
|
81
|
+
name: 'eyes',
|
|
82
|
+
channel: input.sourceChannel ?? '',
|
|
83
|
+
timestamp: '',
|
|
84
|
+
})
|
|
85
|
+
} catch {
|
|
86
|
+
// Reaction may fail if we do not have the message timestamp -- that is okay
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
console.log(`Triaged: ${classification.category} -> ${routingRule.slackChannel} (${routingRule.assignee})`)
|
|
90
|
+
console.log(triageMessage)
|
|
91
|
+
})
|
|
92
|
+
|
|
93
|
+
// Update bot-level triage counter
|
|
94
|
+
bot.state.totalTriaged += 1
|
|
95
|
+
bot.state.lastTriagedAt = new Date().toISOString()
|
|
96
|
+
|
|
97
|
+
return {
|
|
98
|
+
category: classification.category,
|
|
99
|
+
assignee: routingRule.assignee,
|
|
100
|
+
summary: classification.summary,
|
|
101
|
+
routed: routingRule.assignee !== 'unassigned',
|
|
102
|
+
}
|
|
103
|
+
},
|
|
104
|
+
})
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "ES2022",
|
|
4
|
+
"module": "ES2022",
|
|
5
|
+
"moduleResolution": "Bundler",
|
|
6
|
+
"lib": ["ES2022", "DOM"],
|
|
7
|
+
"outDir": "./dist",
|
|
8
|
+
"rootDir": ".",
|
|
9
|
+
"strict": true,
|
|
10
|
+
"esModuleInterop": true,
|
|
11
|
+
"allowSyntheticDefaultImports": true,
|
|
12
|
+
"skipLibCheck": true,
|
|
13
|
+
"forceConsistentCasingInFileNames": true,
|
|
14
|
+
"moduleDetection": "force",
|
|
15
|
+
"resolveJsonModule": true,
|
|
16
|
+
"paths": {
|
|
17
|
+
"@botpress/runtime/_types/*": ["./.adk/*-types"]
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
"include": ["src/**/*", ".adk/**/*"],
|
|
21
|
+
"exclude": ["node_modules", "dist"]
|
|
22
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"templates": [
|
|
3
|
+
{
|
|
4
|
+
"name": "blank",
|
|
5
|
+
"description": "Empty project with just the folder structure",
|
|
6
|
+
"category": "starter",
|
|
7
|
+
"integrations": [],
|
|
8
|
+
"primitives": [],
|
|
9
|
+
"complexity": "beginner"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"name": "hello-world",
|
|
13
|
+
"description": "A working chatbot with chat and webchat integrations",
|
|
14
|
+
"category": "starter",
|
|
15
|
+
"integrations": ["chat", "webchat"],
|
|
16
|
+
"primitives": ["conversations"],
|
|
17
|
+
"complexity": "beginner",
|
|
18
|
+
"postInit": ["adk add chat@latest", "adk add webchat@latest"]
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"name": "slack-triage",
|
|
22
|
+
"description": "Slack bot that monitors a channel, classifies requests, and routes to the right person",
|
|
23
|
+
"category": "triage",
|
|
24
|
+
"integrations": ["slack"],
|
|
25
|
+
"primitives": ["actions", "workflows", "conversations", "tables", "triggers", "knowledge"],
|
|
26
|
+
"complexity": "intermediate",
|
|
27
|
+
"postInit": ["adk add slack@latest"]
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"name": "knowledge-assistant",
|
|
31
|
+
"description": "RAG-powered Q&A agent with knowledge base and source citations",
|
|
32
|
+
"category": "knowledge",
|
|
33
|
+
"integrations": ["chat", "webchat"],
|
|
34
|
+
"primitives": ["conversations", "knowledge", "actions"],
|
|
35
|
+
"complexity": "beginner",
|
|
36
|
+
"postInit": ["adk add chat@latest", "adk add webchat@latest"]
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"name": "crm-enrichment",
|
|
40
|
+
"description": "Scheduled workflow that enriches CRM contacts with AI-driven classification",
|
|
41
|
+
"category": "enrichment",
|
|
42
|
+
"integrations": [],
|
|
43
|
+
"primitives": ["workflows", "tables", "actions", "triggers"],
|
|
44
|
+
"complexity": "intermediate"
|
|
45
|
+
}
|
|
46
|
+
]
|
|
47
|
+
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Utility for ensuring consistent key ordering in JSON files
|
|
3
3
|
*/
|
|
4
4
|
export declare const agentInfoKeyOrder: readonly ["botId", "workspaceId", "apiUrl"];
|
|
5
|
-
export declare const agentLocalInfoKeyOrder: readonly ["devId"];
|
|
5
|
+
export declare const agentLocalInfoKeyOrder: readonly ["botId", "workspaceId", "apiUrl", "devId"];
|
|
6
6
|
export declare const dependenciesKeyOrder: readonly ["integrations"];
|
|
7
7
|
export declare const integrationKeyOrder: readonly ["version", "enabled", "configurationType", "config"];
|
|
8
8
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-ordering.d.ts","sourceRoot":"","sources":["../../src/utils/json-ordering.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,eAAO,MAAM,iBAAiB,6CAA8C,CAAA;AAC5E,eAAO,MAAM,sBAAsB,
|
|
1
|
+
{"version":3,"file":"json-ordering.d.ts","sourceRoot":"","sources":["../../src/utils/json-ordering.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,eAAO,MAAM,iBAAiB,6CAA8C,CAAA;AAC5E,eAAO,MAAM,sBAAsB,sDAAuD,CAAA;AAC1F,eAAO,MAAM,oBAAoB,2BAA4B,CAAA;AAC7D,eAAO,MAAM,mBAAmB,gEAAiE,CAAA;AAEjG;;GAEG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAgCvG;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAYnG;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClE,GAAG,EAAE,CAAC,EACN,QAAQ,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,EAC/B,KAAK,GAAE,MAAM,GAAG,MAAU,GACzB,MAAM,CAcR"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@botpress/adk",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.18.0-beta.2",
|
|
4
4
|
"description": "Core ADK library for building AI agents on Botpress",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"adk",
|
|
@@ -45,12 +45,12 @@
|
|
|
45
45
|
"check:type": "tsc --noEmit"
|
|
46
46
|
},
|
|
47
47
|
"dependencies": {
|
|
48
|
-
"@botpress/chat": "0.5.5",
|
|
49
|
-
"@botpress/cli": "6.
|
|
50
|
-
"@botpress/client": "1.
|
|
51
|
-
"@botpress/cognitive": "0.
|
|
52
|
-
"@botpress/runtime": "^1.
|
|
53
|
-
"@botpress/sdk": "6.
|
|
48
|
+
"@botpress/chat": "~0.5.5",
|
|
49
|
+
"@botpress/cli": "~6.3.2",
|
|
50
|
+
"@botpress/client": "~1.39.0",
|
|
51
|
+
"@botpress/cognitive": "~0.5.2",
|
|
52
|
+
"@botpress/runtime": "^1.18.0-beta.2",
|
|
53
|
+
"@botpress/sdk": "~6.4.4",
|
|
54
54
|
"@bpinternal/jex": "^1.2.4",
|
|
55
55
|
"@bpinternal/yargs-extra": "^0.0.21",
|
|
56
56
|
"@parcel/watcher": "^2.5.1",
|
|
@@ -63,14 +63,6 @@
|
|
|
63
63
|
"semver": "^7.7.2",
|
|
64
64
|
"ts-morph": "^27.0.2"
|
|
65
65
|
},
|
|
66
|
-
"devDependencies": {
|
|
67
|
-
"@bpinternal/zui": "2.1.0",
|
|
68
|
-
"@types/debug": "^4.1.12",
|
|
69
|
-
"@types/glob": "^9.0.0",
|
|
70
|
-
"@types/luxon": "^3.7.1",
|
|
71
|
-
"@types/semver": "^7.7.1",
|
|
72
|
-
"dotenv": "^17.2.3"
|
|
73
|
-
},
|
|
74
66
|
"peerDependencies": {
|
|
75
67
|
"typescript": ">=4.5.0"
|
|
76
68
|
},
|