diff --git a/package.json b/package.json index e5949542..b8302604 100644 --- a/package.json +++ b/package.json @@ -128,6 +128,7 @@ "moment": "1.3.0", "ms-rest-azure": "3.0.0", "nexmo": "2.9.1", + "ngrok": "4.3.3", "node-cron": "3.0.2", "node-html-parser": "6.1.5", "node-nlp": "4.26.1", @@ -135,6 +136,7 @@ "npm": "9.6.1", "open": "8.4.0", "open-docxtemplater-image-module": "1.0.3", + "openai": "3.3.0", "pdf-extraction": "1.0.2", "pdf-to-png-converter": "2.7.1", "pdfkit": "0.13.0", @@ -182,8 +184,7 @@ "winston": "3.8.2", "winston-logs-display": "1.0.0", "ws": "8.12.1", - "yarn": "1.22.19", - "ngrok": "4.3.3" + "yarn": "1.22.19" }, "devDependencies": { "@types/qrcode": "1.5.0", diff --git a/packages/gpt.gblib/README.md b/packages/gpt.gblib/README.md new file mode 100644 index 00000000..b4dd94c3 --- /dev/null +++ b/packages/gpt.gblib/README.md @@ -0,0 +1 @@ +Wrapper for Open AI, Google Bard and Native. \ No newline at end of file diff --git a/packages/gpt.gblib/index.ts b/packages/gpt.gblib/index.ts new file mode 100644 index 00000000..eb413412 --- /dev/null +++ b/packages/gpt.gblib/index.ts @@ -0,0 +1,72 @@ +/*****************************************************************************\ +| ( )_ _ | +| _ _ _ __ _ _ __ ___ ___ _ _ | ,_)(_) ___ ___ _ | +| ( '_`\ ( '__)/'_` ) /'_ `\/' _ ` _ `\ /'_` )| | | |/',__)/' v `\ /'_`\ | +| | (_) )| | ( (_| |( (_) || ( ) ( ) |( (_| || |_ | |\__, \| (˅) |( (_) ) | +| | ,__/'(_) `\__,_)`\__ |(_) (_) (_)`\__,_)`\__)(_)(____/(_) (_)`\___/' | +| | | ( )_) | | +| (_) \___/' | +| | +| General Bots Copyright (c) Pragmatismo.io. All rights reserved. | +| Licensed under the AGPL-3.0. | +| | +| According to our dual licensing model, this program can be used either | +| under the terms of the GNU Affero General Public License, version 3, | +| or under a proprietary license. | +| | +| The texts of the GNU Affero General Public License with an additional | +| permission and of our proprietary license can be found at and | +| in the LICENSE file you have received along with this program. | +| | +| This program is distributed in the hope that it will be useful, | +| but WITHOUT ANY WARRANTY, without even the implied warranty of | +| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | +| GNU Affero General Public License for more details. | +| | +| "General Bots" is a registered trademark of Pragmatismo.io. | +| The licensing of the program under the AGPLv3 does not imply a | +| trademark license. Therefore any rights, title and interest in | +| our trademarks remain entirely with us. | +| | +\*****************************************************************************/ + +/** + * @fileoverview General Bots server core. + */ + +'use strict'; + +import { GBDialogStep, GBLog, GBMinInstance, IGBCoreService, IGBPackage } from 'botlib'; +import { GuaribasSchedule } from '../core.gbapp/models/GBModel.js'; +import { Sequelize } from 'sequelize-typescript'; + +/** + * Package for gpt.gblib. + */ + +export class GBGPTPackage implements IGBPackage { + public sysPackages: IGBPackage[]; + public CurrentEngineName = 'guaribas-1.0.0'; + + public async loadPackage(core: IGBCoreService, sequelize: Sequelize): Promise { + core.sequelize.addModels([GuaribasSchedule]); + } + + public async getDialogs(min: GBMinInstance) { + GBLog.verbose(`getDialogs called.`); + } + public async unloadPackage(core: IGBCoreService): Promise { + GBLog.verbose(`unloadPackage called.`); + } + public async unloadBot(min: GBMinInstance): Promise { + GBLog.verbose(`unloadBot called.`); + } + public async onNewSession(min: GBMinInstance, step: GBDialogStep): Promise { + GBLog.verbose(`onNewSession called.`); + } + public async onExchangeData(min: GBMinInstance, kind: string, data: any) { + GBLog.verbose(`onExchangeData called.`); + } + public async loadBot(min: GBMinInstance): Promise { + } +} diff --git a/packages/gpt.gblib/models/Model.ts b/packages/gpt.gblib/models/Model.ts new file mode 100644 index 00000000..a5953767 --- /dev/null +++ b/packages/gpt.gblib/models/Model.ts @@ -0,0 +1,53 @@ +/*****************************************************************************\ +| ( )_ _ | +| _ _ _ __ _ _ __ ___ ___ _ _ | ,_)(_) ___ ___ _ | +| ( '_`\ ( '__)/'_` ) /'_ `\/' _ ` _ `\ /'_` )| | | |/',__)/' v `\ /'_`\ | +| | (_) )| | ( (_| |( (_) || ( ) ( ) |( (_| || |_ | |\__, \| (˅) |( (_) ) | +| | ,__/'(_) `\__,_)`\__ |(_) (_) (_)`\__,_)`\__)(_)(____/(_) (_)`\___/' | +| | | ( )_) | | +| (_) \___/' | +| | +| General Bots Copyright (c) Pragmatismo.io. All rights reserved. | +| Licensed under the AGPL-3.0. | +| | +| According to our dual licensing model, this program can be used either | +| under the terms of the GNU Affero General Public License, version 3, | +| or under a proprietary license. | +| | +| The texts of the GNU Affero General Public License with an additional | +| permission and of our proprietary license can be found at and | +| in the LICENSE file you have received along with this program. | +| | +| This program is distributed in the hope that it will be useful, | +| but WITHOUT ANY WARRANTY, without even the implied warranty of | +| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | +| GNU Affero General Public License for more details. | +| | +| "General Bots" is a registered trademark of Pragmatismo.io. | +| The licensing of the program under the AGPLv3 does not imply a | +| trademark license. Therefore any rights, title and interest in | +| our trademarks remain entirely with us. | +| | +\*****************************************************************************/ + +/** + * @fileoverview General Bots server core. + */ + +'use strict'; + +import { + AutoIncrement, + BelongsTo, + Column, + CreatedAt, + DataType, + ForeignKey, + Model, + PrimaryKey, + Table, + UpdatedAt +} from 'sequelize-typescript'; + +import { GuaribasInstance } from '../../core.gbapp/models/GBModel.js'; + diff --git a/packages/gpt.gblib/services/ChatServices.ts b/packages/gpt.gblib/services/ChatServices.ts new file mode 100644 index 00000000..89b37f43 --- /dev/null +++ b/packages/gpt.gblib/services/ChatServices.ts @@ -0,0 +1,51 @@ +/*****************************************************************************\ +| ( )_ _ | +| _ _ _ __ _ _ __ ___ ___ _ _ | ,_)(_) ___ ___ _ | +| ( '_`\ ( '__)/'_` ) /'_ `\/' _ ` _ `\ /'_` )| | | |/',__)/' v `\ /'_`\ | +| | (_) )| | ( (_| |( (_) || ( ) ( ) |( (_| || |_ | |\__, \| (˅) |( (_) ) | +| | ,__/'(_) `\__,_)`\__ |(_) (_) (_)`\__,_)`\__)(_)(____/(_) (_)`\___/' | +| | | ( )_) | | +| (_) \___/' | +| | +| General Bots Copyright (c) Pragmatismo.io. All rights reserved. | +| Licensed under the AGPL-3.0. | +| | +| According to our dual licensing model, this program can be used either | +| under the terms of the GNU Affero General Public License, version 3, | +| or under a proprietary license. | +| | +| The texts of the GNU Affero General Public License with an additional | +| permission and of our proprietary license can be found at and | +| in the LICENSE file you have received along with this program. | +| | +| This program is distributed in the hope that it will be useful, | +| but WITHOUT ANY WARRANTY, without even the implied warranty of | +| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | +| GNU Affero General Public License for more details. | +| | +| "General Bots" is a registered trademark of Pragmatismo.io. | +| The licensing of the program under the AGPLv3 does not imply a | +| trademark license. Therefore any rights, title and interest in | +| our trademarks remain entirely with us. | +| | +\*****************************************************************************/ + +'use strict'; + +import { GBSSR }from '../../core.gbapp/services/GBSSR.js'; + +export class ChartServices { + + /** + * Generate text + * + * CONTINUE keword. + * + * result = CONTINUE text + * + */ + public static async continue (text, chatId) { + + } + + } diff --git a/packages/gpt.gblib/services/ImageServices.ts b/packages/gpt.gblib/services/ImageServices.ts new file mode 100644 index 00000000..22fe1be7 --- /dev/null +++ b/packages/gpt.gblib/services/ImageServices.ts @@ -0,0 +1,123 @@ +/*****************************************************************************\ +| ( )_ _ | +| _ _ _ __ _ _ __ ___ ___ _ _ | ,_)(_) ___ ___ _ | +| ( '_`\ ( '__)/'_` ) /'_ `\/' _ ` _ `\ /'_` )| | | |/',__)/' v `\ /'_`\ | +| | (_) )| | ( (_| |( (_) || ( ) ( ) |( (_| || |_ | |\__,\| (˅) |( (_) ) | +| | ,__/'(_) `\__,_)`\__ |(_) (_) (_)`\__,_)`\__)(_)(____/(_) (_)`\___/' | +| | | ( )_) | | +| (_) \___/' | +| | +| General Bots Copyright (c) Pragmatismo.io. All rights reserved. | +| Licensed under the AGPL-3.0. | +| | +| According to our dual licensing model,this program can be used either | +| under the terms of the GNU Affero General Public License,version 3, | +| or under a proprietary license. | +| | +| The texts of the GNU Affero General Public License with an additional | +| permission and of our proprietary license can be found at and | +| in the LICENSE file you have received along with this program. | +| | +| This program is distributed in the hope that it will be useful, | +| but WITHOUT ANY WARRANTY,without even the implied warranty of | +| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | +| GNU Affero General Public License for more details. | +| | +| "General Bots" is a registered trademark of Pragmatismo.io. | +| The licensing of the program under the AGPLv3 does not imply a | +| trademark license. Therefore any rights,title and interest in | +| our trademarks remain entirely with us. | +| | +\*****************************************************************************/ + +'use strict'; + +import Path from 'path'; +import { GBLog, GBMinInstance } from 'botlib'; +import { DialogKeywords } from './DialogKeywords.js'; +import sharp from 'sharp'; +import joinImages from 'join-images-updated'; +import { CollectionUtil } from 'pragmatismo-io-framework'; +import { GBAdminService } from '../../admin.gbapp/services/GBAdminService.js'; +import urlJoin from 'url-join'; +import { GBServer } from '../../../src/app.js'; + +/** + * Image processing services of conversation to be called by BASIC. + */ +export class ImageProcessingServices { + /** + * Sharpen the image. + * + * @example file = SHARPEN file + */ + public async sharpen({ pid, file: file }) { + GBLog.info(`BASIC: Image Processing SHARPEN ${file}.`); + + const gbfile = DialogKeywords.getFileByHandle(file); + const data = await sharp(gbfile.data) + .sharpen({ + sigma: 2, + m1: 0, + m2: 3, + x1: 3, + y2: 15, + y3: 15 + }) + .toBuffer(); + + const newFile = { + filename: gbfile.filename, + data: data + + }; + return; + } + + /** + * SET ORIENTATION VERTICAL + * + * file = MERGE file1, file2, file3 + */ + public async mergeImage({pid, files}) + { + const { min, user } = await DialogKeywords.getProcessInfo(pid); + + let paths = []; + await CollectionUtil.asyncForEach(files, async file => { + const gbfile = DialogKeywords.getFileByHandle(file); + paths.push(gbfile.path); + }); + + const botId = min.instance.botId; + const path = DialogKeywords.getGBAIPath(min.botId); + const img = await joinImages(paths); + const localName = Path.join('work', path, 'cache', `img-mrg${GBAdminService.getRndReadableIdentifier()}.png`); + const url = urlJoin(GBServer.globals.publicAddress, min.botId, 'cache', Path.basename(localName)); + img.toFile(localName); + + return { localName: localName, url: url, data: null }; + + } + + /** + * Sharpen the image. + * + * @example file = BLUR file + */ + public async blur({ pid, file: file }) { + GBLog.info(`BASIC: Image Processing SHARPEN ${file}.`); + + const gbfile = DialogKeywords.getFileByHandle(file); + const data = await sharp(gbfile.data) + .blur() + .toBuffer(); + + const newFile = { + filename: gbfile.filename, + data: data + }; + return; + } + +} diff --git a/packages/gpt.gblib/strings.ts b/packages/gpt.gblib/strings.ts new file mode 100644 index 00000000..5c5ae5c6 --- /dev/null +++ b/packages/gpt.gblib/strings.ts @@ -0,0 +1,10 @@ +export const Messages = { + 'en-US': { + + choices: 'Please, select one:' + }, + 'pt-BR': { + + choices: 'Por favor, selecione:' + } +};