letschatty 0.4.337__py3-none-any.whl → 0.4.350__py3-none-any.whl
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.
- letschatty/models/ai_microservices/__init__.py +1 -1
- letschatty/models/ai_microservices/lambda_events.py +35 -4
- letschatty/models/ai_microservices/lambda_invokation_types.py +1 -0
- letschatty/models/company/assets/ai_agents_v2/chatty_ai_agent_in_chat.py +2 -33
- letschatty/models/company/assets/ai_agents_v2/pre_qualify_config.py +19 -3
- letschatty/models/company/assets/ai_agents_v2/statuses.py +33 -0
- letschatty/models/company/assets/chat_assets.py +9 -0
- letschatty/models/company/form_field.py +9 -2
- letschatty/services/chat/chat_service.py +8 -1
- letschatty/services/factories/lambda_ai_orchestrartor/lambda_events_factory.py +26 -5
- {letschatty-0.4.337.dist-info → letschatty-0.4.350.dist-info}/METADATA +1 -1
- {letschatty-0.4.337.dist-info → letschatty-0.4.350.dist-info}/RECORD +14 -13
- {letschatty-0.4.337.dist-info → letschatty-0.4.350.dist-info}/LICENSE +0 -0
- {letschatty-0.4.337.dist-info → letschatty-0.4.350.dist-info}/WHEEL +0 -0
|
@@ -4,7 +4,7 @@ from .lambda_events import (
|
|
|
4
4
|
QualityTestInteractionCallbackEvent, QualityTestEvent,
|
|
5
5
|
AllQualityTestEvent, SmartTaggingEvent, QualityTestEventData, AllQualityTestEventData,ChatData,
|
|
6
6
|
ComparisonAnalysisCallbackMetadata, InteractionCallbackMetadata, SmartTaggingCallbackMetadata,
|
|
7
|
-
SmartTaggingPromptEvent
|
|
7
|
+
SmartTaggingPromptEvent, UpdateAIAgentPrequalStatusInChatEvent, UpdateAIAgentPrequalStatusInChatEventData
|
|
8
8
|
)
|
|
9
9
|
from .lambda_invokation_types import InvokationType, LambdaAiEvent
|
|
10
10
|
from .openai_payloads import OpenaiPayload, N8nPayload
|
|
@@ -4,6 +4,7 @@ from pydantic import BaseModel, Field, model_validator
|
|
|
4
4
|
from typing import Dict, Any, List, Optional, TYPE_CHECKING
|
|
5
5
|
|
|
6
6
|
from letschatty.models.base_models.ai_agent_component import AiAgentComponentType
|
|
7
|
+
from letschatty.models.company.assets.ai_agents_v2.statuses import DataCollectionStatus, PreQualifyStatus
|
|
7
8
|
from letschatty.models.utils.types.identifier import StrObjectId
|
|
8
9
|
from .lambda_invokation_types import InvokationType, LambdaAiEvent
|
|
9
10
|
from .expected_output import ExpectedOutputIncomingMessage, ExpectedOutputSmartFollowUp, ExpectedOutputSmartTag, ExpectedOutputQualityTest, IncomingMessageAIDecision
|
|
@@ -93,10 +94,23 @@ class SmartTaggingCallbackEvent(LambdaAiEvent):
|
|
|
93
94
|
callback_metadata: SmartTaggingCallbackMetadata
|
|
94
95
|
|
|
95
96
|
@model_validator(mode="before")
|
|
96
|
-
def
|
|
97
|
-
if isinstance(
|
|
98
|
-
|
|
99
|
-
|
|
97
|
+
def normalize_data(cls, values):
|
|
98
|
+
if not isinstance(values, dict):
|
|
99
|
+
return values
|
|
100
|
+
|
|
101
|
+
data = values.get("data")
|
|
102
|
+
if isinstance(data, str):
|
|
103
|
+
import json
|
|
104
|
+
try:
|
|
105
|
+
data = json.loads(data)
|
|
106
|
+
values["data"] = data
|
|
107
|
+
except (json.JSONDecodeError, TypeError):
|
|
108
|
+
return values
|
|
109
|
+
|
|
110
|
+
if isinstance(data, dict) and "chain_of_thought" in data:
|
|
111
|
+
data["chain_of_thought"]["chatty_ai_agent_id"] = "000000000000000000000000"
|
|
112
|
+
|
|
113
|
+
return values
|
|
100
114
|
|
|
101
115
|
class ChatData(BaseModel):
|
|
102
116
|
chat_id: StrObjectId
|
|
@@ -395,6 +409,23 @@ class UpdateAIAgentModeInChatEvent(LambdaAiEvent):
|
|
|
395
409
|
data: UpdateAIAgentModeInChatEventData
|
|
396
410
|
|
|
397
411
|
|
|
412
|
+
class UpdateAIAgentPrequalStatusInChatEventData(BaseModel):
|
|
413
|
+
"""Data for updating pre-qualification and data collection status in a chat"""
|
|
414
|
+
chat_id: StrObjectId
|
|
415
|
+
company_id: StrObjectId
|
|
416
|
+
data_collection_status: Optional[DataCollectionStatus] = Field(default=None, description="New data collection status")
|
|
417
|
+
pre_qualify_status: Optional[PreQualifyStatus] = Field(default=None, description="New pre-qualification status")
|
|
418
|
+
updated_by: Optional[StrObjectId] = Field(default=None, description="User who updated the status")
|
|
419
|
+
|
|
420
|
+
|
|
421
|
+
class UpdateAIAgentPrequalStatusInChatEvent(LambdaAiEvent):
|
|
422
|
+
"""
|
|
423
|
+
Event to update data_collection_status and/or pre_qualify_status for a chat's AI agent.
|
|
424
|
+
"""
|
|
425
|
+
type: InvokationType = InvokationType.UPDATE_AI_AGENT_PREQUAL_STATUS_IN_CHAT
|
|
426
|
+
data: UpdateAIAgentPrequalStatusInChatEventData
|
|
427
|
+
|
|
428
|
+
|
|
398
429
|
class EscalateAIAgentInChatEventData(BaseModel):
|
|
399
430
|
"""Data for escalating an AI agent (requiring human intervention)"""
|
|
400
431
|
chat_id: StrObjectId
|
|
@@ -29,6 +29,7 @@ class InvokationType(StrEnum):
|
|
|
29
29
|
ASSIGN_AI_AGENT_TO_CHAT = "assign_ai_agent_to_chat"
|
|
30
30
|
REMOVE_AI_AGENT_FROM_CHAT = "remove_ai_agent_from_chat"
|
|
31
31
|
UPDATE_AI_AGENT_MODE_IN_CHAT = "update_ai_agent_mode_in_chat"
|
|
32
|
+
UPDATE_AI_AGENT_PREQUAL_STATUS_IN_CHAT = "update_ai_agent_prequal_status_in_chat"
|
|
32
33
|
ESCALATE_AI_AGENT_IN_CHAT = "escalate_ai_agent_in_chat"
|
|
33
34
|
UNESCALATE_AI_AGENT_IN_CHAT = "unescalate_ai_agent_in_chat"
|
|
34
35
|
GET_CHAIN_OF_THOUGHTS_BY_CHAT_ID = "get_chain_of_thoughts_by_chat_id"
|
|
@@ -7,15 +7,16 @@ independently without loading entire chat documents.
|
|
|
7
7
|
"""
|
|
8
8
|
|
|
9
9
|
from letschatty.models.analytics.events.base import EventType
|
|
10
|
+
from enum import StrEnum
|
|
10
11
|
from pydantic import BaseModel, Field, field_validator, ConfigDict
|
|
11
12
|
from datetime import datetime
|
|
12
13
|
from zoneinfo import ZoneInfo
|
|
13
14
|
from typing import Optional, ClassVar, List, Dict, Any
|
|
14
|
-
from enum import StrEnum
|
|
15
15
|
from letschatty.models.base_models.chatty_asset_model import CompanyAssetModel, ChattyAssetPreview
|
|
16
16
|
from letschatty.models.utils.types.identifier import StrObjectId
|
|
17
17
|
from .chain_of_thought_in_chat import ChainOfThoughtInChatTrigger
|
|
18
18
|
from .chatty_ai_mode import ChattyAIMode
|
|
19
|
+
from .statuses import DataCollectionStatus, PreQualifyStatus
|
|
19
20
|
import logging
|
|
20
21
|
|
|
21
22
|
logger = logging.getLogger(__name__)
|
|
@@ -45,38 +46,6 @@ class HumanInterventionReason(StrEnum):
|
|
|
45
46
|
SOMETHING_WENT_WRONG = "something_went_wrong"
|
|
46
47
|
|
|
47
48
|
|
|
48
|
-
class DataCollectionStatus(StrEnum):
|
|
49
|
-
"""
|
|
50
|
-
Status of data collection for the AI agent in this chat.
|
|
51
|
-
Only tracks field collection, not qualification status.
|
|
52
|
-
|
|
53
|
-
- COLLECTING: Still collecting data from the user
|
|
54
|
-
- MANDATORY_COMPLETED: All mandatory fields have been collected
|
|
55
|
-
- ALL_COMPLETED: All fields (mandatory + optional) have been collected
|
|
56
|
-
- CANCELLED: Data collection was cancelled
|
|
57
|
-
"""
|
|
58
|
-
COLLECTING = "collecting"
|
|
59
|
-
MANDATORY_COMPLETED = "mandatory_completed"
|
|
60
|
-
ALL_COMPLETED = "all_completed"
|
|
61
|
-
CANCELLED = "cancelled"
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
class PreQualifyStatus(StrEnum):
|
|
65
|
-
"""
|
|
66
|
-
Status of pre-qualification for the AI agent in this chat.
|
|
67
|
-
Separate from data collection - tracks qualification evaluation.
|
|
68
|
-
|
|
69
|
-
- PENDING: Waiting for data collection to complete
|
|
70
|
-
- EVALUATING: Data collected, evaluating acceptance criteria
|
|
71
|
-
- QUALIFIED: User met acceptance criteria
|
|
72
|
-
- UNQUALIFIED: User did NOT meet acceptance criteria
|
|
73
|
-
"""
|
|
74
|
-
PENDING = "pending"
|
|
75
|
-
EVALUATING = "evaluating"
|
|
76
|
-
QUALIFIED = "qualified"
|
|
77
|
-
UNQUALIFIED = "unqualified"
|
|
78
|
-
|
|
79
|
-
|
|
80
49
|
class HumanIntervention(BaseModel):
|
|
81
50
|
"""
|
|
82
51
|
Reason for human intervention
|
|
@@ -24,12 +24,22 @@ class PreQualifyDestination(StrEnum):
|
|
|
24
24
|
SUBSCRIBE_TO_LAUNCH = "subscribe_to_launch" # Subscribe to launch + welcome kit
|
|
25
25
|
CALENDAR_SCHEDULER = "calendar_scheduler" # Allow AI agent to schedule meetings
|
|
26
26
|
ESCALATE = "escalate" # Escalate to human
|
|
27
|
+
AUTO_ASSIGN_HUMAN_AGENT = "auto_assign_human_agent" # Auto-assign human agent
|
|
27
28
|
CUSTOM_MESSAGE = "custom_message" # Send a custom message
|
|
28
29
|
AUTO_ASSIGN_HUMAN_AGENT = "auto_assign_human_agent" #
|
|
29
30
|
CONTINUE = "continue" # Continue normal AI agent flow
|
|
30
|
-
NONE = "none" # Do nothing
|
|
31
|
-
ARCHIVE = "archive"
|
|
32
|
-
POST_TO_EXTERNAL_API = "post_to_external_api"
|
|
31
|
+
NONE = "none" # Do nothing
|
|
32
|
+
ARCHIVE = "archive" # Archive chat
|
|
33
|
+
POST_TO_EXTERNAL_API = "post_to_external_api" # Post result to external API
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
class PostToExternalApiConfig(BaseModel):
|
|
37
|
+
"""
|
|
38
|
+
Configuration for posting pre-qualification results to an external API.
|
|
39
|
+
"""
|
|
40
|
+
url: str = Field(description="Target URL for the external API")
|
|
41
|
+
method: str = Field(default="POST", description="HTTP method to use")
|
|
42
|
+
api_key: Optional[str] = Field(default=None, description="Optional API key for authentication")
|
|
33
43
|
|
|
34
44
|
|
|
35
45
|
class PreQualifyFormField(BaseModel):
|
|
@@ -82,6 +92,12 @@ class PreQualifyConfig(BaseModel):
|
|
|
82
92
|
description="Configuration for posting to an external API"
|
|
83
93
|
)
|
|
84
94
|
|
|
95
|
+
# Optional external API destination config
|
|
96
|
+
post_to_external_api: Optional[PostToExternalApiConfig] = Field(
|
|
97
|
+
default=None,
|
|
98
|
+
description="Config for POST_TO_EXTERNAL_API destination"
|
|
99
|
+
)
|
|
100
|
+
|
|
85
101
|
@property
|
|
86
102
|
def has_form_fields(self) -> bool:
|
|
87
103
|
"""Check if pre-qualify has form fields configured"""
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
from enum import StrEnum
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class DataCollectionStatus(StrEnum):
|
|
5
|
+
"""
|
|
6
|
+
Status of data collection for the AI agent in this chat.
|
|
7
|
+
Only tracks field collection, not qualification status.
|
|
8
|
+
|
|
9
|
+
- COLLECTING: Still collecting data from the user
|
|
10
|
+
- MANDATORY_COMPLETED: All mandatory fields have been collected
|
|
11
|
+
- ALL_COMPLETED: All fields (mandatory + optional) have been collected
|
|
12
|
+
- CANCELLED: Data collection was cancelled
|
|
13
|
+
"""
|
|
14
|
+
COLLECTING = "collecting"
|
|
15
|
+
MANDATORY_COMPLETED = "mandatory_completed"
|
|
16
|
+
ALL_COMPLETED = "all_completed"
|
|
17
|
+
CANCELLED = "cancelled"
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class PreQualifyStatus(StrEnum):
|
|
21
|
+
"""
|
|
22
|
+
Status of pre-qualification for the AI agent in this chat.
|
|
23
|
+
Separate from data collection - tracks qualification evaluation.
|
|
24
|
+
|
|
25
|
+
- PENDING: Waiting for data collection to complete
|
|
26
|
+
- EVALUATING: Data collected, evaluating acceptance criteria
|
|
27
|
+
- QUALIFIED: User met acceptance criteria
|
|
28
|
+
- UNQUALIFIED: User did NOT meet acceptance criteria
|
|
29
|
+
"""
|
|
30
|
+
PENDING = "pending"
|
|
31
|
+
EVALUATING = "evaluating"
|
|
32
|
+
QUALIFIED = "qualified"
|
|
33
|
+
UNQUALIFIED = "unqualified"
|
|
@@ -4,6 +4,7 @@ from enum import StrEnum
|
|
|
4
4
|
from pydantic_core.core_schema import str_schema
|
|
5
5
|
|
|
6
6
|
from letschatty.models.company.assets.ai_agents_v2.chain_of_thought_in_chat import ChainOfThoughtInChatTrigger
|
|
7
|
+
from letschatty.models.company.assets.ai_agents_v2.statuses import DataCollectionStatus, PreQualifyStatus
|
|
7
8
|
from ...utils.types.identifier import StrObjectId
|
|
8
9
|
from datetime import datetime
|
|
9
10
|
from zoneinfo import ZoneInfo
|
|
@@ -75,6 +76,14 @@ class ChattyAIAgentAssignedToChat(AssignedAssetToChat):
|
|
|
75
76
|
mode: ChattyAIMode = Field(default=ChattyAIMode.OFF)
|
|
76
77
|
requires_human_intervention: bool = Field(default=False)
|
|
77
78
|
is_processing: bool = Field(default=False)
|
|
79
|
+
data_collection_status: Optional[DataCollectionStatus] = Field(
|
|
80
|
+
default=None,
|
|
81
|
+
description="Status of data collection for pre-qualification"
|
|
82
|
+
)
|
|
83
|
+
pre_qualify_status: Optional[PreQualifyStatus] = Field(
|
|
84
|
+
default=None,
|
|
85
|
+
description="Status of pre-qualification"
|
|
86
|
+
)
|
|
78
87
|
last_call_started_at: Optional[datetime] = Field(default=None, description="The timestamp of the get chat with prompt (the moment n8n started processing the call)")
|
|
79
88
|
trigger_timestamp: Optional[datetime] = Field(default=None, description="The timestamp of the trigger that started the call, if it's a manual trigger, it will be the timestamp of the manual trigger, if it's a follow up, it will be the timestamp of the follow up, if it's a user message, it will be the timestamp of the user message")
|
|
80
89
|
last_call_cot_id: Optional[StrObjectId] = Field(default=None)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from pydantic import BaseModel, Field, field_validator
|
|
1
|
+
from pydantic import BaseModel, Field, field_validator, ConfigDict
|
|
2
2
|
from typing import Optional, Any, ClassVar, List
|
|
3
3
|
from letschatty.models.base_models.chatty_asset_model import CompanyAssetModel, ChattyAssetPreview
|
|
4
4
|
import re
|
|
@@ -212,7 +212,11 @@ class CollectedData(BaseModel):
|
|
|
212
212
|
name: Optional[str] = Field(default=None, description="Customer's name")
|
|
213
213
|
email: Optional[str] = Field(default=None, description="Customer's email address")
|
|
214
214
|
phone: Optional[str] = Field(default=None, description="Customer's phone number")
|
|
215
|
-
document_id: Optional[str] = Field(
|
|
215
|
+
document_id: Optional[str] = Field(
|
|
216
|
+
default=None,
|
|
217
|
+
alias="dni",
|
|
218
|
+
description="Customer's DNI/ID number"
|
|
219
|
+
)
|
|
216
220
|
|
|
217
221
|
# Generic key-value store for any other collected fields
|
|
218
222
|
additional_fields: dict[str, Any] = Field(
|
|
@@ -220,6 +224,9 @@ class CollectedData(BaseModel):
|
|
|
220
224
|
description="Additional collected fields as key-value pairs"
|
|
221
225
|
)
|
|
222
226
|
|
|
227
|
+
model_config = ConfigDict(
|
|
228
|
+
populate_by_name=True
|
|
229
|
+
)
|
|
223
230
|
|
|
224
231
|
@classmethod
|
|
225
232
|
def example(cls) -> dict:
|
|
@@ -849,6 +849,13 @@ class ChatService:
|
|
|
849
849
|
chat.client.email = collected_data.email
|
|
850
850
|
updated_fields.append("email")
|
|
851
851
|
|
|
852
|
+
if collected_data.phone:
|
|
853
|
+
if chat.client.lead_form_data is None:
|
|
854
|
+
chat.client.lead_form_data = {}
|
|
855
|
+
if chat.client.lead_form_data.get("phone") != collected_data.phone:
|
|
856
|
+
chat.client.lead_form_data["phone"] = collected_data.phone
|
|
857
|
+
updated_fields.append("phone")
|
|
858
|
+
|
|
852
859
|
if collected_data.document_id and chat.client.document_id != collected_data.document_id:
|
|
853
860
|
chat.client.document_id = collected_data.document_id
|
|
854
861
|
updated_fields.append("document_id")
|
|
@@ -873,4 +880,4 @@ class ChatService:
|
|
|
873
880
|
context=ChattyContext(chain_of_thought_id=execution_context.chain_of_thought_id)
|
|
874
881
|
)
|
|
875
882
|
|
|
876
|
-
return chat.client.lead_form_data
|
|
883
|
+
return chat.client.lead_form_data
|
|
@@ -1,6 +1,25 @@
|
|
|
1
1
|
|
|
2
2
|
from letschatty.models import StrObjectId
|
|
3
|
-
from letschatty.models.ai_microservices.lambda_events import
|
|
3
|
+
from letschatty.models.ai_microservices.lambda_events import (
|
|
4
|
+
DoubleCheckerForIncomingMessagesAnswerCallbackEvent,
|
|
5
|
+
DoubleCheckerForIncomingMessagesAnswerEvent,
|
|
6
|
+
FixBuggedAiAgentsCallsInChatsEvent,
|
|
7
|
+
GetChainOfThoughtsByChatIdEvent,
|
|
8
|
+
QualityTestEventData,
|
|
9
|
+
QualityTestsForUpdatedAIComponentEvent,
|
|
10
|
+
QualityTestsForUpdatedAIComponentEventData,
|
|
11
|
+
CancelExecutionEvent,
|
|
12
|
+
ManualTriggerEvent,
|
|
13
|
+
AssignAIAgentToChatEvent,
|
|
14
|
+
RemoveAIAgentFromChatEvent,
|
|
15
|
+
SmartFollowUpDecisionOutputEvent,
|
|
16
|
+
UpdateAIAgentModeInChatEvent,
|
|
17
|
+
EscalateAIAgentInChatEvent,
|
|
18
|
+
UnescalateAIAgentInChatEvent,
|
|
19
|
+
GetChatWithPromptForIncomingMessageEvent,
|
|
20
|
+
GetChatWithPromptForFollowUpEvent,
|
|
21
|
+
UpdateAIAgentPrequalStatusInChatEvent,
|
|
22
|
+
)
|
|
4
23
|
from letschatty.models.ai_microservices.lambda_invokation_types import InvokationType
|
|
5
24
|
from letschatty.models.ai_microservices import AllQualityTestEvent, AllQualityTestEventData, QualityTestEvent, QualityTestInteractionCallbackEvent, SmartTaggingCallbackEvent, QualityTestCallbackEvent, LambdaAiEvent, SmartTaggingEvent, SmartTaggingPromptEvent
|
|
6
25
|
from letschatty.models.base_models.ai_agent_component import AiAgentComponent
|
|
@@ -35,10 +54,6 @@ class LambdaEventFactory:
|
|
|
35
54
|
return DoubleCheckerForIncomingMessagesAnswerEvent(**event_data)
|
|
36
55
|
case InvokationType.DOUBLE_CHECKER_FOR_INCOMING_MESSAGES_ANSWER_CALLBACK:
|
|
37
56
|
return DoubleCheckerForIncomingMessagesAnswerCallbackEvent(**event_data)
|
|
38
|
-
case InvokationType.GET_CHAT_WITH_PROMPT_INCOMING_MESSAGE:
|
|
39
|
-
return GetChatWithPromptForIncomingMessageEvent(**event_data)
|
|
40
|
-
case InvokationType.GET_CHAT_WITH_PROMPT_FOLLOW_UP:
|
|
41
|
-
return GetChatWithPromptForFollowUpEvent(**event_data)
|
|
42
57
|
case InvokationType.MANUAL_TRIGGER:
|
|
43
58
|
return ManualTriggerEvent(**event_data)
|
|
44
59
|
case InvokationType.CANCEL_EXECUTION:
|
|
@@ -49,6 +64,8 @@ class LambdaEventFactory:
|
|
|
49
64
|
return RemoveAIAgentFromChatEvent(**event_data)
|
|
50
65
|
case InvokationType.UPDATE_AI_AGENT_MODE_IN_CHAT:
|
|
51
66
|
return UpdateAIAgentModeInChatEvent(**event_data)
|
|
67
|
+
case InvokationType.UPDATE_AI_AGENT_PREQUAL_STATUS_IN_CHAT:
|
|
68
|
+
return UpdateAIAgentPrequalStatusInChatEvent(**event_data)
|
|
52
69
|
case InvokationType.ESCALATE_AI_AGENT_IN_CHAT:
|
|
53
70
|
return EscalateAIAgentInChatEvent(**event_data)
|
|
54
71
|
case InvokationType.UNESCALATE_AI_AGENT_IN_CHAT:
|
|
@@ -58,6 +75,10 @@ class LambdaEventFactory:
|
|
|
58
75
|
case InvokationType.SMART_FOLLOW_UP_DECISION_OUTPUT:
|
|
59
76
|
return SmartFollowUpDecisionOutputEvent(**event_data)
|
|
60
77
|
|
|
78
|
+
case InvokationType.GET_CHAT_WITH_PROMPT_INCOMING_MESSAGE:
|
|
79
|
+
return GetChatWithPromptForIncomingMessageEvent(**event_data)
|
|
80
|
+
case InvokationType.GET_CHAT_WITH_PROMPT_FOLLOW_UP:
|
|
81
|
+
return GetChatWithPromptForFollowUpEvent(**event_data)
|
|
61
82
|
case _:
|
|
62
83
|
raise ValueError(f"Invalid event type: {event_type}")
|
|
63
84
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
letschatty/__init__.py,sha256=6dGYdy5edB1dHdgvpqUpENZ347CpIyWgR1CsGYwPSk8,45
|
|
2
2
|
letschatty/models/__init__.py,sha256=obWHa796C-O1mqo_lk22KhUC2ODVvG7cICY3Lo-AqJg,126
|
|
3
|
-
letschatty/models/ai_microservices/__init__.py,sha256=
|
|
3
|
+
letschatty/models/ai_microservices/__init__.py,sha256=bpsDpNi8IiXwY3I7wM6OT2Sh42R4LB3Awy7-Uj-77Nw,683
|
|
4
4
|
letschatty/models/ai_microservices/expected_output.py,sha256=oEaTE4Y9lgRog0GmW20b5xdLl9Yiq6Ln_H2_0r1dGvQ,10956
|
|
5
|
-
letschatty/models/ai_microservices/lambda_events.py,sha256=
|
|
6
|
-
letschatty/models/ai_microservices/lambda_invokation_types.py,sha256=
|
|
5
|
+
letschatty/models/ai_microservices/lambda_events.py,sha256=Ujs-Jlc7-LIhwYWI4jtZBAZdQsyxgk2prOrWuzQcNKw,19399
|
|
6
|
+
letschatty/models/ai_microservices/lambda_invokation_types.py,sha256=mb6BB_CwREjhmRmbAWibyScUgsFq2XTkfJ4QgeO06C0,2119
|
|
7
7
|
letschatty/models/ai_microservices/n8n_ai_agents_payload.py,sha256=yV7WhAdnIOxWymrUTYJiDLH71A5mSUsX2gac8oAAGJw,882
|
|
8
8
|
letschatty/models/ai_microservices/openai_payloads.py,sha256=HauUGf4c37khJJsKyH4ikxzHKboGWnerjDQgDOnMFrY,271
|
|
9
9
|
letschatty/models/analytics/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -88,7 +88,7 @@ letschatty/models/company/assets/ai_agents_v2/chat_example.py,sha256=yCKt6ifNYch
|
|
|
88
88
|
letschatty/models/company/assets/ai_agents_v2/chat_example_test.py,sha256=vChD-TkX1ORRD9LMbd2HlpbK4QyrsfhDiJd-LDjIqlk,4618
|
|
89
89
|
letschatty/models/company/assets/ai_agents_v2/chatty_ai_agent.py,sha256=R2rCANri8ZiqnmPP10PWoanGddMImCMxrl78Y6d-194,8204
|
|
90
90
|
letschatty/models/company/assets/ai_agents_v2/chatty_ai_agent_config_for_automation.py,sha256=W8orpgp-yG8OHNWGQ16jMv-VgM_Z-Hk0q8PtC0KT2KU,388
|
|
91
|
-
letschatty/models/company/assets/ai_agents_v2/chatty_ai_agent_in_chat.py,sha256=
|
|
91
|
+
letschatty/models/company/assets/ai_agents_v2/chatty_ai_agent_in_chat.py,sha256=p-Mys4XM0kppdETj__gCa0ddQmS93S_evVYTrha4eCc,14630
|
|
92
92
|
letschatty/models/company/assets/ai_agents_v2/chatty_ai_mode.py,sha256=fnmExsywjDk5stMcgpHF-8W5lLy-5ReCm02HaQ6Ae98,2309
|
|
93
93
|
letschatty/models/company/assets/ai_agents_v2/context_item.py,sha256=9629_sJ4vjfF6--KR44E6lqVpc0uOGSlcorKS5ooSXU,438
|
|
94
94
|
letschatty/models/company/assets/ai_agents_v2/faq.py,sha256=qL-sr17ALvJ9PEzpaXpYL91-bQ9Np3C4jCYe-zfot6o,457
|
|
@@ -98,11 +98,12 @@ letschatty/models/company/assets/ai_agents_v2/knowleadge_base_components.py,sha2
|
|
|
98
98
|
letschatty/models/company/assets/ai_agents_v2/n8n_agents_info.py,sha256=UNsYXznXr2yj9J_zylZTMPrU5hjkkVgHAaIP2etpZRM,383
|
|
99
99
|
letschatty/models/company/assets/ai_agents_v2/n8n_schema_incoming_message_output.json,sha256=_NERM9gJ4Ry8NFVb8mHxRmdv0GfBrHdtmKxVJWmTUrY,2102
|
|
100
100
|
letschatty/models/company/assets/ai_agents_v2/n8n_schema_smart_follow_up_output.json,sha256=QAPRJXin-sE9NxQBHmmErSYHL6dQzmu4i0HEFSSXOi4,2350
|
|
101
|
-
letschatty/models/company/assets/ai_agents_v2/pre_qualify_config.py,sha256=
|
|
101
|
+
letschatty/models/company/assets/ai_agents_v2/pre_qualify_config.py,sha256=LoWJpAbCbB0lMrAkncjtkzI5d6Z2k_mZ8v0eItTpSAA,5496
|
|
102
|
+
letschatty/models/company/assets/ai_agents_v2/statuses.py,sha256=nhIGfeKednLNFZCIMavbZptT_9L-HDDVshAyCLdwPe8,1109
|
|
102
103
|
letschatty/models/company/assets/assignment/__init__.py,sha256=eWYZfaDQde5OJNIDed8D-LNRXOa5O_O4mGMToNFtaW8,239
|
|
103
104
|
letschatty/models/company/assets/assignment/assignment_assets.py,sha256=phIJqNh4UGTU-Hux_kaOYhJm2GCqv37AnCGePSDVKmM,2245
|
|
104
105
|
letschatty/models/company/assets/automation.py,sha256=QDMCHm--85tEGUwddjWGeUSxmCT27HiH8lRm4w4DJLE,1871
|
|
105
|
-
letschatty/models/company/assets/chat_assets.py,sha256=
|
|
106
|
+
letschatty/models/company/assets/chat_assets.py,sha256=26FX3hOgJF3ogxfYvhhBHJUfXMFtVHapgd8XsFStoU4,7934
|
|
106
107
|
letschatty/models/company/assets/chatty_fast_answers/__init__.py,sha256=tbgWS0n1i0nVi9f79U44GPRnrW25NKcjl6Port92alk,48
|
|
107
108
|
letschatty/models/company/assets/chatty_fast_answers/chatty_fast_answer.py,sha256=PxW3eStHXo0BY7Z9hMDqBTHmgO7XcwtOvEpwXi-rA5g,1076
|
|
108
109
|
letschatty/models/company/assets/company_assets.py,sha256=YKRo_uXhQYRQ8HvMf4HhrHTBC2zp7xlE_B0nqSMfMFY,726
|
|
@@ -126,7 +127,7 @@ letschatty/models/company/company_chats_snapshot.py,sha256=Mg9Wmu3pfE-t5Sf57FCj-
|
|
|
126
127
|
letschatty/models/company/company_messaging_settgins.py,sha256=7isXt7gmqw-FKSUSZwdctdXDFMfPi2OyPuWqB7WpC6c,957
|
|
127
128
|
letschatty/models/company/conversation_topic.py,sha256=__IinJ3YcUsiApF4Em5uAgd01ydRUrlCVxaat-pCCRg,1704
|
|
128
129
|
letschatty/models/company/empresa.py,sha256=2INPC8YSZJcT10Gny_zXV_PujeqUGccsZHV31ZSywyw,5961
|
|
129
|
-
letschatty/models/company/form_field.py,sha256=
|
|
130
|
+
letschatty/models/company/form_field.py,sha256=LGyMLybwvfEPG3hMmwsoP_4wnMaPJbVFpG6c1HdVC8E,9802
|
|
130
131
|
letschatty/models/company/insight.py,sha256=B7BL07E4Z1b9aJHi3PXC1atln4-7fSo9JeqgQoeB_ao,7459
|
|
131
132
|
letschatty/models/company/notifications/notification.py,sha256=wE7rIi21nZno6jjIxajMz4e7OJbzrDHjH1KdkNzJiF8,1907
|
|
132
133
|
letschatty/models/copilot/links.py,sha256=mcddNR6WdWOoOr3NgDl_FElxF15SiZZXw9wmIV08HRw,185
|
|
@@ -230,7 +231,7 @@ letschatty/services/ai_agents/tool_descriptions/human_handover.json,sha256=-b3l_
|
|
|
230
231
|
letschatty/services/ai_agents/tool_descriptions.py,sha256=MMFhcgEl6Z7k8BUv3Yx1pCxHzIjc8HD93S0uM5OPj8Y,105
|
|
231
232
|
letschatty/services/ai_components_service.py,sha256=QUb-NdzHj4nPmnceVSQ9Pe3swFWUrkUFKzDZeuP0b5o,3762
|
|
232
233
|
letschatty/services/chat/chat_extractors.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
233
|
-
letschatty/services/chat/chat_service.py,sha256=
|
|
234
|
+
letschatty/services/chat/chat_service.py,sha256=DsnjSYmOXGSRQPtnYEx2O4NPdEXpG1GBOjk53M-jYM8,47832
|
|
234
235
|
letschatty/services/chat/client_service.py,sha256=TtlG0GJDqx6YemfueiJzAtMNk_udnPhg0MJG0bKwnk8,1097
|
|
235
236
|
letschatty/services/chat/conversation_topics_service.py,sha256=jvIkpHTCz0JKXui3n_BRs6UQ-TB3x7DrQsnX2zUVFVw,2461
|
|
236
237
|
letschatty/services/chatty_assets/__init__.py,sha256=yNe0X8N86OBgrUagYVexX8u8wxoqeepNiCSUwa0OnNo,375
|
|
@@ -290,7 +291,7 @@ letschatty/services/factories/chatty_fast_answers/chatty_fast_answers_factory.py
|
|
|
290
291
|
letschatty/services/factories/clients/client_factory.py,sha256=WIFUksJlnMSSLeHEVTAorpelEvpJMQg_mxg66wZfLcQ,1567
|
|
291
292
|
letschatty/services/factories/company/__init__.py,sha256=Zd3Zo21bQ1Lk9mQNpNaaTZ5EyjttWXi9AthgV5GnSb4,43
|
|
292
293
|
letschatty/services/factories/company/empresa_factory.py,sha256=tJ5Y9WhvYTEvPZXzREGHi2X-aNnW1_B49K12fAo290w,1710
|
|
293
|
-
letschatty/services/factories/lambda_ai_orchestrartor/lambda_events_factory.py,sha256=
|
|
294
|
+
letschatty/services/factories/lambda_ai_orchestrartor/lambda_events_factory.py,sha256=5fJwbaKw-qNqImONdM_xUXCTJ4ARKw4PQuun8R7jHzY,6059
|
|
294
295
|
letschatty/services/factories/messages/__init__.py,sha256=Qm02DTwopP5WKXt4hMB5j-Y2ytfAUfMqztX5_pPJnxI,122
|
|
295
296
|
letschatty/services/factories/messages/central_notification_factory.py,sha256=P8rrBw-Ew0AMqL31YsHH9dXAMQALiLzh6BH618eX_EU,2815
|
|
296
297
|
letschatty/services/factories/messages/chatty_message_factory.py,sha256=kFYkkrZ1x-njavcqcSkRY30DIj5cFHLCo5Iixd63JR4,2234
|
|
@@ -310,7 +311,7 @@ letschatty/services/template_campaigns/template_campaign_service.py,sha256=jORgD
|
|
|
310
311
|
letschatty/services/users/agent_service.py,sha256=hIkUUJ1SpkKbh5_uo4i2CeqGtuMTjU7tSV8k5J7WPG4,279
|
|
311
312
|
letschatty/services/users/user_factory.py,sha256=FCB9uiAfjMeYfh4kMdx5h8VDHJ8MCsD-uaxW3X3KaWM,6681
|
|
312
313
|
letschatty/services/validators/analytics_validator.py,sha256=-QBR6XIqEv2qw3stcBQehkwui1EcfWUM6M9DRQODykY,6335
|
|
313
|
-
letschatty-0.4.
|
|
314
|
-
letschatty-0.4.
|
|
315
|
-
letschatty-0.4.
|
|
316
|
-
letschatty-0.4.
|
|
314
|
+
letschatty-0.4.350.dist-info/LICENSE,sha256=EClLu_bO2HBLDcThowIwfaIg5EOwIYhpRsBJjVEk92A,1197
|
|
315
|
+
letschatty-0.4.350.dist-info/METADATA,sha256=o8NAjLrxC9cFSrLcT58uCnL9MThc0urF5kgt3unwi2M,3283
|
|
316
|
+
letschatty-0.4.350.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
|
|
317
|
+
letschatty-0.4.350.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|