diff --git a/app.py b/app.py index 1df8510f..2d1b9c41 100644 --- a/app.py +++ b/app.py @@ -21,7 +21,7 @@ from datetime import datetime from modules.shared.configuration import APP_CONFIG from modules.shared.eventManagement import eventManager from modules.interfaces.interfaceDbApp import getRootInterface -from modules.system.registry import loadFeatureMainModules +from modules.system.registry import loadFeatureMainModules, registerAllFeaturesInCatalog, syncCatalogFeaturesToDb class DailyRotatingFileHandler(RotatingFileHandler): """ diff --git a/modules/auth/trustedDeviceService.py b/modules/auth/trustedDeviceService.py index d57d5c63..4ea85640 100644 --- a/modules/auth/trustedDeviceService.py +++ b/modules/auth/trustedDeviceService.py @@ -24,7 +24,7 @@ from fastapi import Request, Response from modules.shared.configuration import APP_CONFIG from modules.shared.timeUtils import getUtcNow, getUtcTimestamp -from modules.datamodels.datamodelSecurity import TrustedDevice +from modules.datamodels.datamodelSecurity import TrustedDevice, Token, TokenPurpose logger = logging.getLogger(__name__) diff --git a/modules/datamodels/datamodelRbac.py b/modules/datamodels/datamodelRbac.py index 56196d84..4b2f953d 100644 --- a/modules/datamodels/datamodelRbac.py +++ b/modules/datamodels/datamodelRbac.py @@ -16,7 +16,7 @@ from pydantic import BaseModel, Field from modules.datamodels.datamodelBase import PowerOnModel from modules.shared.i18nRegistry import i18nModel from modules.datamodels.datamodelUtils import TextMultilingual -from modules.datamodels.datamodelUam import AccessLevel +from modules.datamodels.datamodelUam import AccessLevel, User class AccessRuleContext(str, Enum): diff --git a/modules/features/commcoach/interfaceFeatureCommcoach.py b/modules/features/commcoach/interfaceFeatureCommcoach.py index a2e18770..689e3a92 100644 --- a/modules/features/commcoach/interfaceFeatureCommcoach.py +++ b/modules/features/commcoach/interfaceFeatureCommcoach.py @@ -23,6 +23,9 @@ from .datamodelCommcoach import ( CoachingTask, CoachingTaskStatus, CoachingScore, CoachingUserProfile, + CoachingPersona, + ModulePersonaMapping, + CoachingBadge, ) logger = logging.getLogger(__name__) diff --git a/modules/features/commcoach/routeFeatureCommcoach.py b/modules/features/commcoach/routeFeatureCommcoach.py index 905ffbc9..e8cf6fa4 100644 --- a/modules/features/commcoach/routeFeatureCommcoach.py +++ b/modules/features/commcoach/routeFeatureCommcoach.py @@ -18,7 +18,7 @@ from fastapi import APIRouter, HTTPException, Depends, Request, Query from fastapi.responses import StreamingResponse, Response from modules.auth import limiter, getRequestContext, RequestContext -from modules.shared.timeUtils import getIsoTimestamp +from modules.shared.timeUtils import getIsoTimestamp, getUtcTimestamp from modules.interfaces.interfaceDbApp import getRootInterface from modules.interfaces.interfaceFeatures import getFeatureInterface @@ -33,7 +33,10 @@ from .datamodelCommcoach import ( UpdateProfileRequest, CreatePersonaRequest, UpdatePersonaRequest, SetModulePersonasRequest, ) -from .serviceCommcoach import CommcoachService, emitSessionEvent, getSessionEventQueue +from .serviceCommcoach import ( + CommcoachService, emitSessionEvent, getSessionEventQueue, + getUserVoicePrefs, stripMarkdownForTts, buildTtsConfigErrorMessage, +) from modules.shared.i18nRegistry import apiRouteContext routeApiMsg = apiRouteContext("routeFeatureCommcoach") logger = logging.getLogger(__name__) diff --git a/modules/features/commcoach/serviceCommcoach.py b/modules/features/commcoach/serviceCommcoach.py index 315a9dff..5273c4ed 100644 --- a/modules/features/commcoach/serviceCommcoach.py +++ b/modules/features/commcoach/serviceCommcoach.py @@ -15,7 +15,7 @@ import asyncio from datetime import datetime, timezone from typing import Optional, Dict, Any, List -from modules.datamodels.datamodelUam import User +from modules.datamodels.datamodelUam import User, UserVoicePreferences from modules.datamodels.datamodelAi import AiCallRequest, AiCallOptions, OperationTypeEnum, PriorityEnum from modules.shared.timeUtils import getIsoTimestamp, getUtcTimestamp diff --git a/modules/features/neutralization/serviceNeutralization/subProcessList.py b/modules/features/neutralization/serviceNeutralization/subProcessList.py index ecc14b78..ac758a04 100644 --- a/modules/features/neutralization/serviceNeutralization/subProcessList.py +++ b/modules/features/neutralization/serviceNeutralization/subProcessList.py @@ -13,7 +13,7 @@ from typing import Dict, List, Any, Union from dataclasses import dataclass from io import StringIO from .subParseString import StringParser -from .subPatterns import getPatternForHeader, HeaderPatterns +from .subPatterns import getPatternForHeader, HeaderPatterns, findPatternsInText, DataPatterns @dataclass class NeutralizationTableData: diff --git a/modules/features/realEstate/interfaceFeatureRealEstate.py b/modules/features/realEstate/interfaceFeatureRealEstate.py index 5d1ea3a6..cff30c04 100644 --- a/modules/features/realEstate/interfaceFeatureRealEstate.py +++ b/modules/features/realEstate/interfaceFeatureRealEstate.py @@ -29,7 +29,7 @@ from modules.dbHelpers.dbRegistry import registerDatabase from modules.security.rbac import RbacClass from modules.datamodels.datamodelRbac import AccessRuleContext from modules.datamodels.datamodelUam import AccessLevel -from modules.interfaces.interfaceRbac import getRecordsetWithRBAC, getRecordsetPaginatedWithRBAC, getDistinctColumnValuesWithRBAC +from modules.interfaces.interfaceRbac import getRecordsetWithRBAC, getRecordsetPaginatedWithRBAC, getDistinctColumnValuesWithRBAC, buildDataObjectKey from modules.datamodels.datamodelPagination import PaginationParams, PaginatedResult logger = logging.getLogger(__name__) diff --git a/modules/features/teamsbot/routeFeatureTeamsbot.py b/modules/features/teamsbot/routeFeatureTeamsbot.py index c4219ac7..9b01fea5 100644 --- a/modules/features/teamsbot/routeFeatureTeamsbot.py +++ b/modules/features/teamsbot/routeFeatureTeamsbot.py @@ -49,7 +49,13 @@ from .datamodelTeamsbot import ( ) # Import service -from .service import TeamsbotService +from .service import ( + TeamsbotService, + getActiveService, + getActiveService as _getActiveService, + createAiService, + sessionEvents, +) from modules.shared.i18nRegistry import apiRouteContext routeApiMsg = apiRouteContext("routeFeatureTeamsbot") diff --git a/modules/features/trustee/accounting/accountingBridge.py b/modules/features/trustee/accounting/accountingBridge.py index d9b9fe73..439a4ef4 100644 --- a/modules/features/trustee/accounting/accountingBridge.py +++ b/modules/features/trustee/accounting/accountingBridge.py @@ -19,7 +19,12 @@ from .accountingConnectorBase import ( SyncResult, ) from .accountingRegistry import getAccountingRegistry -from modules.features.trustee.datamodelFeatureTrustee import TrusteeDocument +from modules.features.trustee.datamodelFeatureTrustee import ( + TrusteeDocument, + TrusteeAccountingConfig, + TrusteePosition, + TrusteeAccountingSync, +) logger = logging.getLogger(__name__) diff --git a/modules/features/trustee/interfaceFeatureTrustee.py b/modules/features/trustee/interfaceFeatureTrustee.py index 249b2d50..6c8a8509 100644 --- a/modules/features/trustee/interfaceFeatureTrustee.py +++ b/modules/features/trustee/interfaceFeatureTrustee.py @@ -16,7 +16,7 @@ from pydantic import ValidationError from modules.connectors.connectorDbPostgre import DatabaseConnector from modules.shared.configuration import APP_CONFIG from modules.dbHelpers.dbRegistry import registerDatabase -from modules.interfaces.interfaceRbac import getRecordsetWithRBAC, getRecordsetPaginatedWithRBAC, getDistinctColumnValuesWithRBAC +from modules.interfaces.interfaceRbac import getRecordsetWithRBAC, getRecordsetPaginatedWithRBAC, getDistinctColumnValuesWithRBAC, buildDataObjectKey from modules.security.rbac import RbacClass from modules.datamodels.datamodelUam import User, AccessLevel from modules.datamodels.datamodelRbac import AccessRuleContext diff --git a/modules/features/trustee/routeFeatureTrustee.py b/modules/features/trustee/routeFeatureTrustee.py index 6e6b9924..3513e1da 100644 --- a/modules/features/trustee/routeFeatureTrustee.py +++ b/modules/features/trustee/routeFeatureTrustee.py @@ -49,7 +49,7 @@ from modules.datamodels.datamodelPagination import ( normalize_pagination_dict, ) from modules.datamodels.datamodelRbac import Role, AccessRule, AccessRuleContext -from modules.shared.i18nRegistry import apiRouteContext +from modules.shared.i18nRegistry import apiRouteContext, resolveText routeApiMsg = apiRouteContext("routeFeatureTrustee") diff --git a/modules/features/workspace/routeFeatureWorkspace.py b/modules/features/workspace/routeFeatureWorkspace.py index 18cf0da8..fc95d57a 100644 --- a/modules/features/workspace/routeFeatureWorkspace.py +++ b/modules/features/workspace/routeFeatureWorkspace.py @@ -28,7 +28,7 @@ from modules.features.workspace import interfaceFeatureWorkspace from modules.interfaces.interfaceDbKnowledge import getInterface as getKnowledgeInterface from modules.interfaces.interfaceAiObjects import AiObjects from modules.shared.eventManager import get_event_manager -from modules.serviceCenter.services.serviceAgent.datamodelAgent import AgentEventTypeEnum, PendingFileEdit +from modules.serviceCenter.services.serviceAgent.datamodelAgent import AgentEventTypeEnum, PendingFileEdit, AgentConfig from modules.shared.timeUtils import parseTimestamp from modules.shared.i18nRegistry import apiRouteContext, resolveText routeApiMsg = apiRouteContext("routeFeatureWorkspace") diff --git a/modules/interfaces/interfaceAiObjects.py b/modules/interfaces/interfaceAiObjects.py index 77bc1f5e..b4eba2b2 100644 --- a/modules/interfaces/interfaceAiObjects.py +++ b/modules/interfaces/interfaceAiObjects.py @@ -15,7 +15,7 @@ logger = logging.getLogger(__name__) from modules.aicore.aicoreModelRegistry import modelRegistry from modules.aicore.aicoreModelSelector import modelSelector -from modules.aicore.aicoreBase import RateLimitExceededException +from modules.aicore.aicoreBase import RateLimitExceededException, ContextLengthExceededException from modules.datamodels.datamodelAi import ( AiModel, AiCallOptions, diff --git a/modules/interfaces/interfaceDbApp.py b/modules/interfaces/interfaceDbApp.py index 250190fb..e373461d 100644 --- a/modules/interfaces/interfaceDbApp.py +++ b/modules/interfaces/interfaceDbApp.py @@ -22,7 +22,7 @@ from modules.shared.configuration import APP_CONFIG from modules.dbHelpers.dbRegistry import registerDatabase from modules.shared.timeUtils import getUtcTimestamp, parseTimestamp from modules.shared.i18nRegistry import resolveText -from modules.interfaces.interfaceRbac import getRecordsetWithRBAC +from modules.interfaces.interfaceRbac import getRecordsetWithRBAC, buildDataObjectKey, copySystemRolesToMandate from modules.security.rbac import RbacClass from modules.datamodels.datamodelUam import ( User, @@ -39,14 +39,14 @@ from modules.datamodels.datamodelRbac import ( ) from modules.datamodels.datamodelUam import AccessLevel from modules.datamodels.datamodelSecurity import Token, AuthEvent, TokenStatus, TokenPurpose -from modules.datamodels.datamodelPagination import PaginationParams, PaginatedResult +from modules.datamodels.datamodelPagination import PaginationParams, PaginatedResult, TableListView from modules.datamodels.datamodelMembership import ( UserMandate, UserMandateRole, FeatureAccess, FeatureAccessRole, ) -from modules.datamodels.datamodelFeatures import Feature, FeatureInstance +from modules.datamodels.datamodelFeatures import Feature, FeatureInstance, FeatureDataSource, DataNeutralizerAttributes from modules.datamodels.datamodelInvitation import Invitation from modules.datamodels.datamodelNotification import UserNotification diff --git a/modules/interfaces/interfaceDbBilling.py b/modules/interfaces/interfaceDbBilling.py index 158f6d86..5b302dda 100644 --- a/modules/interfaces/interfaceDbBilling.py +++ b/modules/interfaces/interfaceDbBilling.py @@ -14,11 +14,11 @@ from typing import Dict, Any, List, Optional, Union from datetime import date, datetime, timedelta, timezone import uuid -from modules.connectors.connectorDbPostgre import DatabaseConnector +from modules.connectors.connectorDbPostgre import DatabaseConnector, getModelFields, parseRecordFields from modules.shared.configuration import APP_CONFIG from modules.dbHelpers.dbRegistry import registerDatabase from modules.shared.timeUtils import getUtcTimestamp -from modules.datamodels.datamodelUam import User, Mandate +from modules.datamodels.datamodelUam import User, Mandate, UserInDB from modules.datamodels.datamodelMembership import UserMandate from modules.datamodels.datamodelPagination import PaginationParams, PaginatedResult from modules.datamodels.datamodelBilling import ( diff --git a/modules/interfaces/interfaceDbChat.py b/modules/interfaces/interfaceDbChat.py index 4bbba04b..324f150e 100644 --- a/modules/interfaces/interfaceDbChat.py +++ b/modules/interfaces/interfaceDbChat.py @@ -27,14 +27,14 @@ from modules.datamodels.datamodelChat import ( UserInputRequest ) import json -from modules.datamodels.datamodelUam import User +from modules.datamodels.datamodelUam import User, Mandate # DYNAMIC PART: Connectors to the Interface from modules.connectors.connectorDbPostgre import DatabaseConnector from modules.dbHelpers.dbRegistry import registerDatabase from modules.shared.timeUtils import getUtcTimestamp, parseTimestamp from modules.datamodels.datamodelPagination import PaginationParams, PaginatedResult -from modules.interfaces.interfaceRbac import getRecordsetWithRBAC +from modules.interfaces.interfaceRbac import getRecordsetWithRBAC, buildDataObjectKey # Basic Configurations from modules.shared.configuration import APP_CONFIG diff --git a/modules/interfaces/interfaceDbKnowledge.py b/modules/interfaces/interfaceDbKnowledge.py index dfafebe0..ff7c7371 100644 --- a/modules/interfaces/interfaceDbKnowledge.py +++ b/modules/interfaces/interfaceDbKnowledge.py @@ -13,7 +13,7 @@ from typing import Dict, Any, List, Optional from modules.connectors.connectorDbPostgre import getCachedConnector from modules.dbHelpers.dbRegistry import registerDatabase -from modules.datamodels.datamodelKnowledge import FileContentIndex, ContentChunk, RoundMemory, WorkflowMemory +from modules.datamodels.datamodelKnowledge import FileContentIndex, ContentChunk, RoundMemory, WorkflowMemory, KNOWLEDGE_EMBEDDING_DIMENSIONS from modules.datamodels.datamodelUam import User from modules.shared.configuration import APP_CONFIG from modules.shared.timeUtils import getUtcTimestamp diff --git a/modules/interfaces/interfaceDbManagement.py b/modules/interfaces/interfaceDbManagement.py index 66f6485c..fc97483b 100644 --- a/modules/interfaces/interfaceDbManagement.py +++ b/modules/interfaces/interfaceDbManagement.py @@ -16,7 +16,7 @@ from typing import Dict, Any, List, Optional, Union from modules.connectors.connectorDbPostgre import DatabaseConnector, getCachedConnector from modules.dbHelpers.dbRegistry import registerDatabase -from modules.interfaces.interfaceRbac import getRecordsetWithRBAC, getRecordsetPaginatedWithRBAC +from modules.interfaces.interfaceRbac import getRecordsetWithRBAC, getRecordsetPaginatedWithRBAC, buildDataObjectKey from modules.security.rbac import RbacClass from modules.datamodels.datamodelRbac import AccessRuleContext from modules.datamodels.datamodelUam import AccessLevel diff --git a/modules/interfaces/interfaceRbac.py b/modules/interfaces/interfaceRbac.py index 22047ab3..8556072b 100644 --- a/modules/interfaces/interfaceRbac.py +++ b/modules/interfaces/interfaceRbac.py @@ -32,10 +32,10 @@ from datetime import datetime, timezone from typing import List, Dict, Any, Optional, Type, Union from pydantic import BaseModel from modules.datamodels.datamodelRbac import AccessRule, AccessRuleContext, Role -from modules.datamodels.datamodelUam import User, UserPermissions, AccessLevel +from modules.datamodels.datamodelUam import User, UserPermissions, AccessLevel, Mandate from modules.datamodels.datamodelPagination import PaginationParams, PaginatedResult from modules.datamodels.datamodelUtils import coerce_text_multilingual -from modules.connectors.connectorDbPostgre import DatabaseConnector +from modules.connectors.connectorDbPostgre import DatabaseConnector, getModelFields, parseRecordFields from modules.security.rbac import RbacClass from modules.security.rootAccess import getRootDbAppConnector diff --git a/modules/interfaces/interfaceTableHelpers.py b/modules/interfaces/interfaceTableHelpers.py index 84b4cdd0..0ad89ea0 100644 --- a/modules/interfaces/interfaceTableHelpers.py +++ b/modules/interfaces/interfaceTableHelpers.py @@ -12,7 +12,7 @@ from collections import defaultdict from functools import cmp_to_key from typing import Any, Dict, List, Optional -from modules.datamodels.datamodelPagination import PaginationParams +from modules.datamodels.datamodelPagination import PaginationParams, SortField, GroupBand, GroupLayout logger = logging.getLogger(__name__) diff --git a/modules/routes/routeAdminRbacRules.py b/modules/routes/routeAdminRbacRules.py index cd91f36c..6ce0398e 100644 --- a/modules/routes/routeAdminRbacRules.py +++ b/modules/routes/routeAdminRbacRules.py @@ -20,7 +20,7 @@ import math from modules.auth import limiter, getRequestContext, requirePlatformAdmin, RequestContext from modules.datamodels.datamodelUam import User, UserPermissions, AccessLevel from modules.datamodels.datamodelRbac import AccessRuleContext, AccessRule, Role -from modules.datamodels.datamodelMembership import UserMandate +from modules.datamodels.datamodelMembership import UserMandate, UserMandateRole from modules.datamodels.datamodelPagination import PaginationParams, PaginatedResponse, PaginationMetadata, normalize_pagination_dict from modules.interfaces.interfaceDbApp import getInterface, getRootInterface from modules.shared.i18nRegistry import apiRouteContext, t, resolveText diff --git a/modules/routes/routeDataConnections.py b/modules/routes/routeDataConnections.py index b2830a40..832b28fa 100644 --- a/modules/routes/routeDataConnections.py +++ b/modules/routes/routeDataConnections.py @@ -24,8 +24,8 @@ from modules.datamodels.datamodelSecurity import Token from modules.auth import getCurrentUser, limiter from modules.auth.oauthConnectTicket import issue_connect_ticket from modules.auth.tokenRefreshService import token_refresh_service -from modules.datamodels.datamodelPagination import PaginationParams, PaginatedResponse, PaginationMetadata, normalize_pagination_dict -from modules.interfaces.interfaceDbApp import getInterface +from modules.datamodels.datamodelPagination import PaginationParams, PaginatedResponse, PaginationMetadata, normalize_pagination_dict, AppliedViewMeta +from modules.interfaces.interfaceDbApp import getInterface, getRootInterface from modules.shared.timeUtils import getUtcTimestamp, parseTimestamp from modules.interfaces.interfaceDbManagement import ComponentObjects from modules.shared.i18nRegistry import apiRouteContext diff --git a/modules/routes/routeDataFiles.py b/modules/routes/routeDataFiles.py index cdb26f31..745027bc 100644 --- a/modules/routes/routeDataFiles.py +++ b/modules/routes/routeDataFiles.py @@ -15,11 +15,11 @@ import zipfile from modules.auth import limiter, getCurrentUser, getRequestContext, RequestContext # Import interfaces -from modules.interfaces import interfaceDbManagement +from modules.interfaces import interfaceDbManagement, interfaceDbKnowledge from modules.datamodels.datamodelFiles import FileItem, FilePreview, FileFolder from modules.shared.attributeUtils import getModelAttributeDefinitions from modules.datamodels.datamodelUam import User -from modules.datamodels.datamodelPagination import PaginationParams, PaginatedResponse, PaginationMetadata, normalize_pagination_dict +from modules.datamodels.datamodelPagination import PaginationParams, PaginatedResponse, PaginationMetadata, normalize_pagination_dict, AppliedViewMeta from modules.shared.i18nRegistry import apiRouteContext from modules.dbHelpers.fkLabelResolver import enrichRowsWithFkLabels routeApiMsg = apiRouteContext("routeDataFiles") diff --git a/modules/routes/routeDataPrompts.py b/modules/routes/routeDataPrompts.py index 6f11493c..add6d580 100644 --- a/modules/routes/routeDataPrompts.py +++ b/modules/routes/routeDataPrompts.py @@ -16,7 +16,7 @@ from modules.auth import limiter, getCurrentUser from modules.interfaces import interfaceDbManagement from modules.datamodels.datamodelUtils import Prompt from modules.datamodels.datamodelUam import User -from modules.datamodels.datamodelPagination import PaginationParams, PaginatedResponse, PaginationMetadata, normalize_pagination_dict +from modules.datamodels.datamodelPagination import PaginationParams, PaginatedResponse, PaginationMetadata, normalize_pagination_dict, AppliedViewMeta from modules.shared.i18nRegistry import apiRouteContext routeApiMsg = apiRouteContext("routeDataPrompts") diff --git a/modules/routes/routeMfa.py b/modules/routes/routeMfa.py index 7a2101ec..6dafdf4e 100644 --- a/modules/routes/routeMfa.py +++ b/modules/routes/routeMfa.py @@ -32,7 +32,7 @@ from modules.auth.mfaService import ( verifyCode, isMfaRequired, ) -from modules.interfaces.interfaceDbApp import getRootInterface +from modules.interfaces.interfaceDbApp import getRootInterface, getInterface from modules.datamodels.datamodelUam import User, UserInDB, AuthAuthority, Mandate from modules.datamodels.datamodelSecurity import Token, TokenPurpose from modules.shared.configuration import APP_CONFIG diff --git a/modules/routes/routeRagInventory.py b/modules/routes/routeRagInventory.py index 9b2eee2e..4cc7437e 100644 --- a/modules/routes/routeRagInventory.py +++ b/modules/routes/routeRagInventory.py @@ -7,7 +7,7 @@ from typing import Any, Dict, List, Optional from fastapi import APIRouter, HTTPException, Depends, Request from modules.auth import limiter, getCurrentUser, getRequestContext, RequestContext -from modules.datamodels.datamodelUam import User +from modules.datamodels.datamodelUam import User, UserConnection from modules.shared.i18nRegistry import apiRouteContext, resolveJobMessage routeApiMsg = apiRouteContext("routeRagInventory") diff --git a/modules/routes/routeSecurityLocal.py b/modules/routes/routeSecurityLocal.py index 177cfaad..2b873e26 100644 --- a/modules/routes/routeSecurityLocal.py +++ b/modules/routes/routeSecurityLocal.py @@ -16,7 +16,7 @@ from jose import jwt # Import auth modules from modules.auth import getCurrentUser, limiter, SECRET_KEY, ALGORITHM, getRequestContext, RequestContext from modules.auth import createAccessToken, createRefreshToken, setAccessTokenCookie, setRefreshTokenCookie, clearAccessTokenCookie, clearRefreshTokenCookie -from modules.interfaces.interfaceDbApp import getInterface, getRootInterface +from modules.interfaces.interfaceDbApp import getInterface, getRootInterface, getRootInterface as _getRootIf from modules.datamodels.datamodelUam import User, UserInDB, AuthAuthority, Mandate from modules.datamodels.datamodelSecurity import Token, TokenPurpose from modules.shared.configuration import APP_CONFIG diff --git a/modules/routes/routeWorkflowAutomation.py b/modules/routes/routeWorkflowAutomation.py index c4e2fa84..619928f9 100644 --- a/modules/routes/routeWorkflowAutomation.py +++ b/modules/routes/routeWorkflowAutomation.py @@ -31,8 +31,8 @@ from modules.datamodels.datamodelPagination import PaginationParams, PaginationM from modules.datamodels.datamodelWorkflowAutomation import ( AutoWorkflow, AutoVersion, AutoRun, AutoStepLog, AutoTask, ) -from modules.dbHelpers.paginationHelpers import applyFiltersAndSort, paginateInMemory -from modules.interfaces.interfaceDbApp import getRootInterface +from modules.dbHelpers.paginationHelpers import applyFiltersAndSort, paginateInMemory, handleFilterValuesInMemory, handleIdsInMemory +from modules.interfaces.interfaceDbApp import getRootInterface, getRootInterface as _getRootIface from modules.shared.i18nRegistry import apiRouteContext, resolveText from modules.workflowAutomation.helpers import ( _getWorkflowAutomationDb, diff --git a/modules/serviceCenter/services/serviceAgent/mainServiceAgent.py b/modules/serviceCenter/services/serviceAgent/mainServiceAgent.py index cbb576b2..1334b116 100644 --- a/modules/serviceCenter/services/serviceAgent/mainServiceAgent.py +++ b/modules/serviceCenter/services/serviceAgent/mainServiceAgent.py @@ -9,10 +9,10 @@ from modules.datamodels.datamodelAi import ( AiCallRequest, AiCallOptions, AiCallResponse, OperationTypeEnum ) from modules.serviceCenter.services.serviceAgent.datamodelAgent import ( - AgentConfig, AgentEvent, AgentEventTypeEnum + AgentConfig, AgentEvent, AgentEventTypeEnum, ToolDefinition, ToolResult ) from modules.serviceCenter.services.serviceAgent.toolRegistry import ToolRegistry -from modules.serviceCenter.services.serviceAgent.agentLoop import runAgentLoop +from modules.serviceCenter.services.serviceAgent.agentLoop import runAgentLoop, classifyToolResult from modules.serviceCenter.services.serviceAgent.actionToolAdapter import ActionToolAdapter from modules.serviceCenter.services.serviceAgent.coreTools import registerCoreTools import json diff --git a/modules/serviceCenter/services/serviceAi/mainServiceAi.py b/modules/serviceCenter/services/serviceAi/mainServiceAi.py index 75fc77de..622d6dd6 100644 --- a/modules/serviceCenter/services/serviceAi/mainServiceAi.py +++ b/modules/serviceCenter/services/serviceAi/mainServiceAi.py @@ -7,7 +7,7 @@ import time import base64 from typing import Dict, Any, List, Optional, Tuple, Callable from modules.datamodels.datamodelChat import PromptPlaceholder, ChatDocument, WorkflowModeEnum -from modules.datamodels.datamodelAi import AiCallRequest, AiCallResponse, AiCallOptions, OperationTypeEnum, PriorityEnum, ProcessingModeEnum +from modules.datamodels.datamodelAi import AiCallRequest, AiCallResponse, AiCallOptions, OperationTypeEnum, PriorityEnum, ProcessingModeEnum, AiModelCall from modules.datamodels.datamodelExtraction import ContentPart, DocumentIntent from modules.datamodels.datamodelWorkflow import AiResponse, AiResponseMetadata, DocumentData from modules.datamodels.datamodelDocument import RenderedDocument diff --git a/modules/serviceCenter/services/serviceChat/mainServiceChat.py b/modules/serviceCenter/services/serviceChat/mainServiceChat.py index 95a9248a..780c3c08 100644 --- a/modules/serviceCenter/services/serviceChat/mainServiceChat.py +++ b/modules/serviceCenter/services/serviceChat/mainServiceChat.py @@ -3,8 +3,8 @@ """Chat service for document processing, chat operations, and workflow management.""" import logging from typing import Dict, Any, List, Optional, Callable -from modules.datamodels.datamodelUam import User, UserConnection -from modules.datamodels.datamodelChat import ChatDocument, ChatMessage, ChatLog +from modules.datamodels.datamodelUam import User, UserConnection, UserVoicePreferences +from modules.datamodels.datamodelChat import ChatDocument, ChatMessage, ChatLog, ActionItem from modules.datamodels.datamodelAi import AiCallOptions, OperationTypeEnum, PriorityEnum, ProcessingModeEnum from modules.shared.progressLogger import ProgressLogger import json diff --git a/modules/serviceCenter/services/serviceExtraction/extractors/extractorContainer.py b/modules/serviceCenter/services/serviceExtraction/extractors/extractorContainer.py index b71e6d65..c02c5405 100644 --- a/modules/serviceCenter/services/serviceExtraction/extractors/extractorContainer.py +++ b/modules/serviceCenter/services/serviceExtraction/extractors/extractorContainer.py @@ -22,7 +22,7 @@ import tarfile from ..subUtils import makeId from modules.datamodels.datamodelExtraction import ContentPart from modules.datamodels.datamodelContent import ContainerLimitError, ContentContextRef -from ..subRegistry import Extractor +from ..subRegistry import Extractor, getExtractorRegistry import base64 logger = logging.getLogger(__name__) diff --git a/modules/serviceCenter/services/serviceExtraction/extractors/extractorEmail.py b/modules/serviceCenter/services/serviceExtraction/extractors/extractorEmail.py index 20a1fbd4..165ddede 100644 --- a/modules/serviceCenter/services/serviceExtraction/extractors/extractorEmail.py +++ b/modules/serviceCenter/services/serviceExtraction/extractors/extractorEmail.py @@ -18,7 +18,7 @@ import mimetypes from modules.datamodels.datamodelExtraction import ContentPart from ..subUtils import makeId -from ..subRegistry import Extractor +from ..subRegistry import Extractor, getExtractorRegistry import base64 logger = logging.getLogger(__name__) diff --git a/modules/serviceCenter/services/serviceExtraction/extractors/extractorFolder.py b/modules/serviceCenter/services/serviceExtraction/extractors/extractorFolder.py index fc11d6fe..c7ea525f 100644 --- a/modules/serviceCenter/services/serviceExtraction/extractors/extractorFolder.py +++ b/modules/serviceCenter/services/serviceExtraction/extractors/extractorFolder.py @@ -16,7 +16,7 @@ from pathlib import Path from ..subUtils import makeId from modules.datamodels.datamodelExtraction import ContentPart from modules.datamodels.datamodelContent import ContainerLimitError, ContentContextRef -from ..subRegistry import Extractor +from ..subRegistry import Extractor, ExtractorRegistry logger = logging.getLogger(__name__) diff --git a/modules/serviceCenter/services/serviceExtraction/subRegistry.py b/modules/serviceCenter/services/serviceExtraction/subRegistry.py index 8f5be299..f4d59cd4 100644 --- a/modules/serviceCenter/services/serviceExtraction/subRegistry.py +++ b/modules/serviceCenter/services/serviceExtraction/subRegistry.py @@ -3,7 +3,7 @@ from typing import Any, Dict, List, Optional, TYPE_CHECKING import logging -from modules.datamodels.datamodelExtraction import ContentPart +from modules.datamodels.datamodelExtraction import ContentPart, ContentExtracted import os import traceback from pathlib import Path @@ -51,6 +51,7 @@ class Extractor: ) -> "UdmDocument": """Build UDM from extracted parts (default: heuristic grouping). Override for format-specific trees.""" from .subUtils import makeId + from modules.datamodels.datamodelUdm import contentPartsToUdm, mimeToUdmSourceType parts = precomputedParts if precomputedParts is not None else self.extract(fileBytes, context) eid = context.get("extractionId") or makeId() diff --git a/modules/serviceCenter/services/serviceGeneration/renderers/rendererPdf.py b/modules/serviceCenter/services/serviceGeneration/renderers/rendererPdf.py index 55fa8c99..f30d6277 100644 --- a/modules/serviceCenter/services/serviceGeneration/renderers/rendererPdf.py +++ b/modules/serviceCenter/services/serviceGeneration/renderers/rendererPdf.py @@ -28,7 +28,7 @@ except ImportError: import re from ._pdfFontFallback import wrapEmojiSpansInXml as _wrapEmojiSpansInXml -from modules.serviceCenter.services.serviceGeneration.styleDefaults import deepMerge +from modules.serviceCenter.services.serviceGeneration.styleDefaults import deepMerge, resolveStyle import os import tempfile diff --git a/modules/serviceCenter/services/serviceGeneration/renderers/rendererPptx.py b/modules/serviceCenter/services/serviceGeneration/renderers/rendererPptx.py index 4a1db42c..53cf1d72 100644 --- a/modules/serviceCenter/services/serviceGeneration/renderers/rendererPptx.py +++ b/modules/serviceCenter/services/serviceGeneration/renderers/rendererPptx.py @@ -8,7 +8,7 @@ from datetime import datetime, UTC from typing import Dict, Any, Optional, List from .documentRendererBaseTemplate import BaseRenderer from modules.datamodels.datamodelDocument import RenderedDocument -from modules.serviceCenter.services.serviceGeneration.styleDefaults import deepMerge +from modules.serviceCenter.services.serviceGeneration.styleDefaults import deepMerge, resolveStyle logger = logging.getLogger(__name__) diff --git a/modules/serviceCenter/services/serviceGeneration/renderers/rendererXlsx.py b/modules/serviceCenter/services/serviceGeneration/renderers/rendererXlsx.py index 86846229..958dfb87 100644 --- a/modules/serviceCenter/services/serviceGeneration/renderers/rendererXlsx.py +++ b/modules/serviceCenter/services/serviceGeneration/renderers/rendererXlsx.py @@ -6,7 +6,7 @@ Excel renderer for report generation using openpyxl. from .documentRendererBaseTemplate import BaseRenderer from modules.datamodels.datamodelDocument import RenderedDocument -from modules.serviceCenter.services.serviceGeneration.styleDefaults import deepMerge +from modules.serviceCenter.services.serviceGeneration.styleDefaults import deepMerge, resolveStyle from typing import Dict, Any, List, Optional import io import base64 diff --git a/modules/serviceCenter/services/serviceSubscription/mainServiceSubscription.py b/modules/serviceCenter/services/serviceSubscription/mainServiceSubscription.py index 8714f660..feff8ae0 100644 --- a/modules/serviceCenter/services/serviceSubscription/mainServiceSubscription.py +++ b/modules/serviceCenter/services/serviceSubscription/mainServiceSubscription.py @@ -12,7 +12,7 @@ import time from typing import Dict, Any, List, Optional from datetime import datetime, timezone, timedelta -from modules.datamodels.datamodelUam import User +from modules.datamodels.datamodelUam import User, Mandate from modules.datamodels.datamodelSubscription import ( SubscriptionPlan, MandateSubscription, @@ -24,6 +24,7 @@ from modules.datamodels.datamodelSubscription import ( ) from modules.interfaces.interfaceDbSubscription import ( getInterface as getSubscriptionInterface, + getRootInterface as getSubRootInterface, InvalidTransitionError, ) from modules.shared.i18nRegistry import t diff --git a/modules/system/databaseHealth.py b/modules/system/databaseHealth.py index 8b1ec19e..c1027e17 100644 --- a/modules/system/databaseHealth.py +++ b/modules/system/databaseHealth.py @@ -20,7 +20,7 @@ import psycopg2.extras from modules.shared.configuration import APP_CONFIG from modules.dbHelpers.dbRegistry import getRegisteredDatabases -from modules.dbHelpers.fkRegistry import getFkRelationships, FkRelationship +from modules.dbHelpers.fkRegistry import getFkRelationships, FkRelationship, ensureModelsLoaded logger = logging.getLogger(__name__) diff --git a/modules/workflowAutomation/engine/executors/actionNodeExecutor.py b/modules/workflowAutomation/engine/executors/actionNodeExecutor.py index 7e5cb30d..b26c8251 100644 --- a/modules/workflowAutomation/engine/executors/actionNodeExecutor.py +++ b/modules/workflowAutomation/engine/executors/actionNodeExecutor.py @@ -17,6 +17,7 @@ from typing import Any, Dict, Optional from modules.nodeCatalog.portTypes import ( _normalizeError, normalizeToSchema, + PORT_TYPE_CATALOG, ) from modules.datamodels.serviceExceptions import SubscriptionInactiveException as _SubscriptionInactiveException, BillingContextError as _BillingContextError from modules.workflows.methods.methodContext.actions.extractContent import ( diff --git a/modules/workflowAutomation/helpers.py b/modules/workflowAutomation/helpers.py index a2121b7f..ead4566a 100644 --- a/modules/workflowAutomation/helpers.py +++ b/modules/workflowAutomation/helpers.py @@ -24,7 +24,8 @@ from modules.datamodels.datamodelWorkflowAutomation import ( AutoRun, AutoStepLog, AutoWorkflow, AutoTask, AutoVersion, WORKFLOW_AUTOMATION_DATABASE, ) -from modules.interfaces.interfaceDbApp import getRootInterface as _getRootIface +from modules.interfaces.interfaceDbApp import getRootInterface as _getRootIface, getRootInterface +from modules.connectors.connectorDbPostgre import getModelFields, parseRecordFields from modules.shared.configuration import APP_CONFIG logger = logging.getLogger(__name__) diff --git a/modules/workflowAutomation/mainWorkflowAutomation.py b/modules/workflowAutomation/mainWorkflowAutomation.py index e07673c6..5102d1e6 100644 --- a/modules/workflowAutomation/mainWorkflowAutomation.py +++ b/modules/workflowAutomation/mainWorkflowAutomation.py @@ -12,7 +12,7 @@ import logging import uuid from typing import Dict, List, Any, Optional -from modules.shared.i18nRegistry import t +from modules.shared.i18nRegistry import t, resolveText logger = logging.getLogger(__name__) diff --git a/modules/workflows/methods/methodAi/actions/process.py b/modules/workflows/methods/methodAi/actions/process.py index d943d7da..56e97f8e 100644 --- a/modules/workflows/methods/methodAi/actions/process.py +++ b/modules/workflows/methods/methodAi/actions/process.py @@ -9,7 +9,7 @@ import uuid from typing import Dict, Any, List, Optional from modules.datamodels.datamodelChat import ActionResult, ActionDocument from modules.datamodels.datamodelAi import AiCallRequest, AiCallOptions, OperationTypeEnum, ProcessingModeEnum -from modules.datamodels.datamodelExtraction import ContentPart +from modules.datamodels.datamodelExtraction import ContentPart, ExtractionOptions, MergeStrategy from modules.datamodels.serviceExceptions import SubscriptionInactiveException, BillingContextError logger = logging.getLogger(__name__)