UNPKG

@alfresco/adf-content-services

Version:
103 lines 12.4 kB
/*! * @license * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import { Injectable } from '@angular/core'; import { SearchAiApi } from '@alfresco/js-api'; import { BehaviorSubject, from } from 'rxjs'; import { TranslateService } from '@ngx-translate/core'; import { AlfrescoApiService } from '../../services'; import * as i0 from "@angular/core"; import * as i1 from "../../services"; import * as i2 from "@ngx-translate/core"; export class SearchAiService { get searchAiApi() { this._searchAiApi = this._searchAiApi ?? new SearchAiApi(this.apiService.getInstance()); return this._searchAiApi; } constructor(apiService, translateService) { this.apiService = apiService; this.translateService = translateService; this.toggleSearchAiInput = new BehaviorSubject({ active: false }); this.toggleSearchAiInput$ = this.toggleSearchAiInput.asObservable(); } /** * Update the state of the search AI input. * * @param state The new state of the search AI input. */ updateSearchAiInputState(state) { this.toggleSearchAiInput.next(state); } /** * Ask a question to the AI. * * @param question The question to ask. * @returns QuestionModel object containing information about questions. */ ask(question) { return from(this.searchAiApi.ask([question])); } /** * Get an answer to specific question. * * @param questionId The ID of the question to get an answer for. * @returns AiAnswerEntry object containing the answer. */ getAnswer(questionId) { return from(this.searchAiApi.getAnswer(questionId)); } /** * Get the knowledge retrieval configuration. * * @returns KnowledgeRetrievalConfigEntry object containing the configuration. */ getConfig() { return from(this.searchAiApi.getConfig()); } /** * Check if using of search is possible (if all conditions are met). * * @param selectedNodesState information about selected nodes. * @param maxSelectedNodes max number of selected nodes. Default 100. * @returns string with error if any condition is not met, empty string otherwise. */ checkSearchAvailability(selectedNodesState, maxSelectedNodes = 100) { const messages = []; if (selectedNodesState.count > maxSelectedNodes) { messages.push({ key: 'KNOWLEDGE_RETRIEVAL.SEARCH.WARNINGS.TOO_MANY_FILES_SELECTED', maxFiles: maxSelectedNodes }); } if (selectedNodesState.nodes.some((node) => node.entry.isFolder)) { messages.push({ key: 'KNOWLEDGE_RETRIEVAL.SEARCH.WARNINGS.FOLDER_SELECTED' }); } return messages.map((message) => this.translateService.instant(message.key, message)).join(' '); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: SearchAiService, deps: [{ token: i1.AlfrescoApiService }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable }); } static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: SearchAiService, providedIn: 'root' }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: SearchAiService, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }], ctorParameters: () => [{ type: i1.AlfrescoApiService }, { type: i2.TranslateService }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWFpLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvY29udGVudC1zZXJ2aWNlcy9zcmMvbGliL3NlYXJjaC1haS9zZXJ2aWNlcy9zZWFyY2gtYWkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBZ0YsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0gsT0FBTyxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFFekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFLcEQsTUFBTSxPQUFPLGVBQWU7SUFNeEIsSUFBSSxXQUFXO1FBQ1gsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUN4RixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDN0IsQ0FBQztJQUlELFlBQW9CLFVBQThCLEVBQVUsZ0JBQWtDO1FBQTFFLGVBQVUsR0FBVixVQUFVLENBQW9CO1FBQVUscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQVp0Rix3QkFBbUIsR0FBRyxJQUFJLGVBQWUsQ0FBcUI7WUFDbEUsTUFBTSxFQUFFLEtBQUs7U0FDaEIsQ0FBQyxDQUFDO1FBUUgseUJBQW9CLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBRWtDLENBQUM7SUFFbEc7Ozs7T0FJRztJQUNILHdCQUF3QixDQUFDLEtBQXlCO1FBQzlDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsR0FBRyxDQUFDLFFBQXlCO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFNBQVMsQ0FBQyxVQUFrQjtRQUN4QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsU0FBUztRQUNMLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsdUJBQXVCLENBQUMsa0JBQWtDLEVBQUUsZ0JBQWdCLEdBQUcsR0FBRztRQUM5RSxNQUFNLFFBQVEsR0FHUixFQUFFLENBQUM7UUFDVCxJQUFJLGtCQUFrQixDQUFDLEtBQUssR0FBRyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzlDLFFBQVEsQ0FBQyxJQUFJLENBQUM7Z0JBQ1YsR0FBRyxFQUFFLDZEQUE2RDtnQkFDbEUsUUFBUSxFQUFFLGdCQUFnQjthQUM3QixDQUFDLENBQUM7UUFDUCxDQUFDO1FBQ0QsSUFBSSxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDL0QsUUFBUSxDQUFDLElBQUksQ0FBQztnQkFDVixHQUFHLEVBQUUscURBQXFEO2FBQzdELENBQUMsQ0FBQztRQUNQLENBQUM7UUFDRCxPQUFPLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwRyxDQUFDOzhHQTdFUSxlQUFlO2tIQUFmLGVBQWUsY0FGWixNQUFNOzsyRkFFVCxlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWlBbnN3ZXJFbnRyeSwgS25vd2xlZGdlUmV0cmlldmFsQ29uZmlnRW50cnksIFF1ZXN0aW9uTW9kZWwsIFF1ZXN0aW9uUmVxdWVzdCwgU2VhcmNoQWlBcGkgfSBmcm9tICdAYWxmcmVzY28vanMtYXBpJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZnJvbSwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU2VsZWN0aW9uU3RhdGUgfSBmcm9tICdAYWxmcmVzY28vYWRmLWV4dGVuc2lvbnMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgU2VhcmNoQWlJbnB1dFN0YXRlIH0gZnJvbSAnLi4vbW9kZWxzL3NlYXJjaC1haS1pbnB1dC1zdGF0ZSc7XG5pbXBvcnQgeyBBbGZyZXNjb0FwaVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoQWlTZXJ2aWNlIHtcbiAgICBwcml2YXRlIHRvZ2dsZVNlYXJjaEFpSW5wdXQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNlYXJjaEFpSW5wdXRTdGF0ZT4oe1xuICAgICAgICBhY3RpdmU6IGZhbHNlXG4gICAgfSk7XG4gICAgcHJpdmF0ZSBfc2VhcmNoQWlBcGk6IFNlYXJjaEFpQXBpO1xuXG4gICAgZ2V0IHNlYXJjaEFpQXBpKCk6IFNlYXJjaEFpQXBpIHtcbiAgICAgICAgdGhpcy5fc2VhcmNoQWlBcGkgPSB0aGlzLl9zZWFyY2hBaUFwaSA/PyBuZXcgU2VhcmNoQWlBcGkodGhpcy5hcGlTZXJ2aWNlLmdldEluc3RhbmNlKCkpO1xuICAgICAgICByZXR1cm4gdGhpcy5fc2VhcmNoQWlBcGk7XG4gICAgfVxuXG4gICAgdG9nZ2xlU2VhcmNoQWlJbnB1dCQgPSB0aGlzLnRvZ2dsZVNlYXJjaEFpSW5wdXQuYXNPYnNlcnZhYmxlKCk7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFwaVNlcnZpY2U6IEFsZnJlc2NvQXBpU2VydmljZSwgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlKSB7fVxuXG4gICAgLyoqXG4gICAgICogVXBkYXRlIHRoZSBzdGF0ZSBvZiB0aGUgc2VhcmNoIEFJIGlucHV0LlxuICAgICAqXG4gICAgICogQHBhcmFtIHN0YXRlIFRoZSBuZXcgc3RhdGUgb2YgdGhlIHNlYXJjaCBBSSBpbnB1dC5cbiAgICAgKi9cbiAgICB1cGRhdGVTZWFyY2hBaUlucHV0U3RhdGUoc3RhdGU6IFNlYXJjaEFpSW5wdXRTdGF0ZSk6IHZvaWQge1xuICAgICAgICB0aGlzLnRvZ2dsZVNlYXJjaEFpSW5wdXQubmV4dChzdGF0ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXNrIGEgcXVlc3Rpb24gdG8gdGhlIEFJLlxuICAgICAqXG4gICAgICogQHBhcmFtIHF1ZXN0aW9uIFRoZSBxdWVzdGlvbiB0byBhc2suXG4gICAgICogQHJldHVybnMgUXVlc3Rpb25Nb2RlbCBvYmplY3QgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCBxdWVzdGlvbnMuXG4gICAgICovXG4gICAgYXNrKHF1ZXN0aW9uOiBRdWVzdGlvblJlcXVlc3QpOiBPYnNlcnZhYmxlPFF1ZXN0aW9uTW9kZWw+IHtcbiAgICAgICAgcmV0dXJuIGZyb20odGhpcy5zZWFyY2hBaUFwaS5hc2soW3F1ZXN0aW9uXSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBhbiBhbnN3ZXIgdG8gc3BlY2lmaWMgcXVlc3Rpb24uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcXVlc3Rpb25JZCBUaGUgSUQgb2YgdGhlIHF1ZXN0aW9uIHRvIGdldCBhbiBhbnN3ZXIgZm9yLlxuICAgICAqIEByZXR1cm5zIEFpQW5zd2VyRW50cnkgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGFuc3dlci5cbiAgICAgKi9cbiAgICBnZXRBbnN3ZXIocXVlc3Rpb25JZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxBaUFuc3dlckVudHJ5PiB7XG4gICAgICAgIHJldHVybiBmcm9tKHRoaXMuc2VhcmNoQWlBcGkuZ2V0QW5zd2VyKHF1ZXN0aW9uSWQpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIGtub3dsZWRnZSByZXRyaWV2YWwgY29uZmlndXJhdGlvbi5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIEtub3dsZWRnZVJldHJpZXZhbENvbmZpZ0VudHJ5IG9iamVjdCBjb250YWluaW5nIHRoZSBjb25maWd1cmF0aW9uLlxuICAgICAqL1xuICAgIGdldENvbmZpZygpOiBPYnNlcnZhYmxlPEtub3dsZWRnZVJldHJpZXZhbENvbmZpZ0VudHJ5PiB7XG4gICAgICAgIHJldHVybiBmcm9tKHRoaXMuc2VhcmNoQWlBcGkuZ2V0Q29uZmlnKCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrIGlmIHVzaW5nIG9mIHNlYXJjaCBpcyBwb3NzaWJsZSAoaWYgYWxsIGNvbmRpdGlvbnMgYXJlIG1ldCkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc2VsZWN0ZWROb2Rlc1N0YXRlIGluZm9ybWF0aW9uIGFib3V0IHNlbGVjdGVkIG5vZGVzLlxuICAgICAqIEBwYXJhbSBtYXhTZWxlY3RlZE5vZGVzIG1heCBudW1iZXIgb2Ygc2VsZWN0ZWQgbm9kZXMuIERlZmF1bHQgMTAwLlxuICAgICAqIEByZXR1cm5zIHN0cmluZyB3aXRoIGVycm9yIGlmIGFueSBjb25kaXRpb24gaXMgbm90IG1ldCwgZW1wdHkgc3RyaW5nIG90aGVyd2lzZS5cbiAgICAgKi9cbiAgICBjaGVja1NlYXJjaEF2YWlsYWJpbGl0eShzZWxlY3RlZE5vZGVzU3RhdGU6IFNlbGVjdGlvblN0YXRlLCBtYXhTZWxlY3RlZE5vZGVzID0gMTAwKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgbWVzc2FnZXM6IHtcbiAgICAgICAgICAgIGtleTogc3RyaW5nO1xuICAgICAgICAgICAgW3BhcmFtZXRlcjogc3RyaW5nXTogbnVtYmVyIHwgc3RyaW5nO1xuICAgICAgICB9W10gPSBbXTtcbiAgICAgICAgaWYgKHNlbGVjdGVkTm9kZXNTdGF0ZS5jb3VudCA+IG1heFNlbGVjdGVkTm9kZXMpIHtcbiAgICAgICAgICAgIG1lc3NhZ2VzLnB1c2goe1xuICAgICAgICAgICAgICAgIGtleTogJ0tOT1dMRURHRV9SRVRSSUVWQUwuU0VBUkNILldBUk5JTkdTLlRPT19NQU5ZX0ZJTEVTX1NFTEVDVEVEJyxcbiAgICAgICAgICAgICAgICBtYXhGaWxlczogbWF4U2VsZWN0ZWROb2Rlc1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNlbGVjdGVkTm9kZXNTdGF0ZS5ub2Rlcy5zb21lKChub2RlKSA9PiBub2RlLmVudHJ5LmlzRm9sZGVyKSkge1xuICAgICAgICAgICAgbWVzc2FnZXMucHVzaCh7XG4gICAgICAgICAgICAgICAga2V5OiAnS05PV0xFREdFX1JFVFJJRVZBTC5TRUFSQ0guV0FSTklOR1MuRk9MREVSX1NFTEVDVEVEJ1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1lc3NhZ2VzLm1hcCgobWVzc2FnZSkgPT4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQobWVzc2FnZS5rZXksIG1lc3NhZ2UpKS5qb2luKCcgJyk7XG4gICAgfVxufVxuIl19