Files
botpress--botpress/plugins/file-synchronizer/src/index.ts
T
2026-07-13 13:34:48 +08:00

94 lines
3.1 KiB
TypeScript

import * as actions from './actions'
import * as hooks from './hooks'
import * as bp from '.botpress'
const plugin = new bp.Plugin({
actions: {
async syncFilesToBotpess(props) {
props.logger.info('Called action syncFilesToBotpess')
return await actions.syncFilesToBotpess.callAction(props)
},
async listItemsInFolder(props) {
props.logger.info('Called action listItemsInFolder. Redirecting to integration...')
return await props.actions['files-readonly'].listItemsInFolder(props.input)
},
},
})
plugin.on.event('files-readonly:fileCreated', async (props) => {
if (!props.configuration.enableRealTimeSync) {
return
}
props.logger.info('File created event triggered', props.event.payload.file)
await hooks.onEvent.fileCreated.handleEvent(props)
})
plugin.on.event('files-readonly:fileDeleted', async (props) => {
if (!props.configuration.enableRealTimeSync) {
return
}
props.logger.info('File deleted event triggered', props.event.payload.file)
await hooks.onEvent.fileDeleted.handleEvent(props)
})
plugin.on.event('files-readonly:fileUpdated', async (props) => {
if (!props.configuration.enableRealTimeSync) {
return
}
props.logger.info('File updated event triggered', props.event.payload.file)
await hooks.onEvent.fileUpdated.handleEvent(props)
})
plugin.on.event('files-readonly:folderDeletedRecursive', async (props) => {
if (!props.configuration.enableRealTimeSync) {
return
}
props.logger.info('Folder deleted event triggered', props.event.payload.folder)
await hooks.onEvent.folderDeletedRecursive.handleEvent(props)
})
plugin.on.event('files-readonly:aggregateFileChanges', async (props) => {
if (!props.configuration.enableRealTimeSync) {
return
}
props.logger.info('Aggregate file changes event triggered', props.event.payload.modifiedItems)
await hooks.onEvent.aggregateFileChanges.handleEvent(props)
})
plugin.on.workflowStart('buildQueue', async (props) => {
props.logger.info('buildQueue workflow started', props.workflow.tags)
await hooks.onWorkflowStart.buildQueue.handleEvent(props)
})
plugin.on.workflowContinue('buildQueue', async (props) => {
props.logger.info('buildQueue workflow continued', props.workflow.tags)
await hooks.onWorkflowContinue.buildQueue.handleEvent(props)
})
plugin.on.workflowTimeout('buildQueue', async (props) => {
props.logger.info('buildQueue workflow timed out', props.workflow.tags)
await hooks.onWorkflowTimeout.buildQueue.handleEvent(props)
})
plugin.on.workflowStart('processQueue', async (props) => {
props.logger.info('processQueue workflow started', props.workflow.tags)
await hooks.onWorkflowStart.processQueue.handleEvent(props)
})
plugin.on.workflowContinue('processQueue', async (props) => {
props.logger.info('processQueue workflow continued', props.workflow.tags)
await hooks.onWorkflowContinue.processQueue.handleEvent(props)
})
plugin.on.workflowTimeout('processQueue', async (props) => {
props.logger.info('processQueue workflow timed out', props.workflow.tags)
await hooks.onWorkflowTimeout.processQueue.handleEvent(props)
})
export default plugin